Centos rpm名称在安装后更改

Centos rpm名称在安装后更改,centos,fedora,rpm,rpmbuild,rpm-spec,Centos,Fedora,Rpm,Rpmbuild,Rpm Spec,我已使用以下名称创建rpm: [root@buildbtl ship-rpms]# ls cdd-pcts-5.1.1.el6.x86_64.rpm 我用命令安装了rpm rpm -ivh cdd-pcts-5.1.1.el6.x86_64.rpm 查询已安装的软件包后,名称将更改为 cdd-pcts-5.1.1-.el6.x86_64 [root@buildbtl ship-rpms]# rpm -qa | grep cdd-p cdd-pcts-5.1.1-.el6.x86_64 我不

我已使用以下名称创建rpm:

[root@buildbtl ship-rpms]# ls
cdd-pcts-5.1.1.el6.x86_64.rpm
我用命令安装了rpm

rpm -ivh cdd-pcts-5.1.1.el6.x86_64.rpm
查询已安装的软件包后,名称将更改为
cdd-pcts-5.1.1-.el6.x86_64

[root@buildbtl ship-rpms]# rpm -qa | grep cdd-p
cdd-pcts-5.1.1-.el6.x86_64
我不明白为什么在5.1.1版之后添加了额外的
-

如何维护已创建rpm和已安装rpm的名称相同。 在spec文件中,我已经覆盖了用于命名rpm的宏
\u build\u name\u fmt
使用以下命令:

%define _build_name_fmt %{NAME}-%{_VERSION}%{Release}.%{ARCH}.rpm

提前感谢您的指导

无论您如何重命名rpm软件包文件(在您的情况下,通过更改
\u build\u name\u fmt
的定义),它的实际软件包名称(rpm数据库实际上关心的)始终与其他rpm元数据一起存储在软件包中。这意味着,确保rpm包的名称在rpm数据库和rpm构建文件名中相同的最简单方法是不更改
\u build\u name\u fmt

rpm数据库始终存储标识包的四个“元数据”字段:名称、版本、版本和arch(体系结构)。它通过读取RPM文件的内容来获取此信息;它的文件名是不相关的。您可以使用
rpm-qi
package命令查看rpm的其他元数据字段(有关更多信息,请参阅)

在您的示例中,似乎

  • 名称为“cdd pcts”
  • 版本为
    “5.1.1”
  • 发布是
    ”.el6'
    ,并且
  • 拱门是“x86_64”
显示此信息的默认格式是name-version-release.arch,它在release“.el6”之前加一个“-”。也许
%{release}
是由两个符号构成的,在修改spec文件时,您将其中一个符号置为空

在安装之前,您还可以检查软件包以检查元数据设置是否正确,例如

rpm -qip cdd-pcts-5.1.1.el6.x86_64.rpm

感谢您的回复,我正在使用release宏作为release:{?dist}。是的,我同意我没有像应该添加release:%%{rel}%{?dist}一样将release编号附加到它。这里的一个问题是,我是否可以覆盖_build_name_fmt以获得rpm名称(cdd-pcts-5.1.1-1.el6.x86_64.rpm)与使用rpm-qa命令在rpm包中列出的已安装rpm名称相同