rpm名称在安装后更改

时间:2015-10-02 11:01:27

标签: 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

我无法理解为什么在版本5.1.1之后添加了额外的-

如何将创建的rpm和已安装的rpm的名称保持为相同。 在spec文件中,我重写了MACRO _build_name_fmt以命名rpm 使用以下命令:

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

提前感谢您的指导

2 个答案:

答案 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'
  • arch "x86_64"

显示此信息的默认格式为名称 - 版本 - 发布 arch ,其中包含紧接在发布之前的“ - ”“。el6”。也许%{Release}是由两个符号构成的,并且在修改spec文件时,您将其中一个符号清空。

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

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