RPM 如何确定较新的软件包

RPM 如何确定较新的软件包

我已获取 Apache httpd 2.2.3 SRPM 并提取了 .spec 文件。从中我将 2.2.3 替换为 2.2.14,并Serial从 specfile 中删除了标签(正如rpmbuild对 Serial 标签的抱怨 - 我推测它已被弃用)。下载了 httpd tarball,并构建了 ( rpmbuild),没有任何错误(令我惊讶)。

运行rpm --upgrade<newrpms> 时,我收到一条错误消息,指出我的新 RPM 不是较新的版本,尽管标签Version显然较新。但是,我将 设置Release为 1。

我尝试通过 Google 查找如何rpm确定最新版本(没有找到)。从rpm -qi命令中我得到以下默认 2.2.3 安装:

名称:httpd 重新定位:(不可重新定位)
版本:2.2.3 供应商:CentOS
发行版本:31.el5.centos 构建日期:2009 年 9 月 3 日星期四晚上 10:43:06 BST
安装日期:2009 年 10 月 26 日星期一上午 10:27:12 GMT 构建主机:builder16.centos.org
组:系统环境/守护进程源 RPM:httpd-2.2.3-31.el5.centos.src.rpm
大小:3254910 许可证:Apache 软件许可证
签名:DSA/SHA1,2009 年 9 月 20 日星期日上午 4:53:42 BST,密钥 ID a8a447dce8562897
网址:http://httpd.apache.org/
摘要:Apache HTTP 服务器

从我的 2.2.14 版本开始,我有:

名称:httpd 重新定位:(不可重新定位)
版本:2.2.14 供应商:Apache 软件基金会
发布:1 构建日期:2009 年 11 月 16 日星期一上午 11:40:41 GMT
安装日期:2009 年 11 月 16 日星期一上午 11:44:38 GMT 构建主机:build01.local
组:系统环境/守护进程源 RPM:httpd-2.2.14-1.src.rpm
大小:5101686 许可证:Apache 许可证,版本 2.0
签名:(无)
网址:http://httpd.apache.org/
摘要:Apache HTTP 服务器

所以问题是:如何rpm确定哪个是用于升级的最新 RPM?

答案1

serial 标签已被弃用并被 epoch 标签取代。

我不知道序列标签是如何工作的,但与纪元标签的版本比较会将纪元添加到比较之前的版本中。

我认为串行也做了类似的事情。

我猜测序列值也是预先添加的,因此您正在比较如下版本:

<serial>-<version>-<release>

如果原始序列值 > 1,我猜测未指定时其默认为 1。

你始终可以使用rpm --force强制升级到特定的 RPM

相关内容