我用以下名称创建了rpm:
[root@buildbtl ship-rpms]# ls
cdd-pcts-5.1.1.el6.x86_64.rpm
我使用命令
安装了rpmrpm -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文件中,我重写了MACRO _build_name_fmt
以命名rpm
使用以下命令:
%define _build_name_fmt %{NAME}-%{_VERSION}%{Release}.%{ARCH}.rpm
提前感谢您的指导
答案 0 :(得分:0)
如何重命名rpm包文件(在您的情况下通过更改_build_name_fmt
的定义)并不重要,它的实际包名称(rpm数据库实际关注的)始终存储在包中rpm元数据。这意味着确保rpm包名称在rpm数据库和rpm build filename中都是相同的最简单方法是不更改_build_name_fmt
。
答案 1 :(得分:0)
RPM数据库始终存储四个“元数据”字段,用于标识软件包: name , version , release 和 arch (架构)。它通过读取RPM文件的内容获取此信息;它的文件名无关紧要。您可以使用rpm -qi
包命令查看RPM的其他元数据字段(有关详细信息,请参阅 The Parts of an RPM Query )。
在您的示例中,似乎
"cdd-pcts"
,"5.1.1"
,".el6'
和"x86_64"
显示此信息的默认格式为名称 - 版本 - 发布。 arch ,其中包含紧接在发布之前的“ - ”“。el6”。也许%{Release}
是由两个符号构成的,并且在修改spec文件时,您将其中一个符号清空。
在安装之前,您还可以检查包以检查元数据是否设置正确,例如,
rpm -qip cdd-pcts-5.1.1.el6.x86_64.rpm