我已获取 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