使用 RPM 命令升级软件包

升级软件包与安装软件包的命令十分相似,只是升级使用 -U 选项,而安装是使用 -i 选项。当系统中没有安装先前版本的软件包时,-U 选项则会执行安装的操作。

升级软件包与安装软件包的命令十分相似,只是升级使用 -U 选项,而安装是使用 -i 选项。

假设名为 tree-1.5.3.0-1.fc12.x86_64.rpm 的软件名位于当前目录,并且我们已经在系统中安装了名为 tree-1.5.2.2-4.fc12.x86_64.rpm 的软件包,我们则可以通过以下命令对软件包进行升级

~]# rpm -Uvh tree-1.5.3.0-1.fc12.x86_64.rpm

作为升级软件包进程的一部分,RPM 会自动卸载之前老版本的 tree 软件包。当系统中没有安装先前版本的软件包时,-U 选项则会执行安装的操作。因此使用 -U 选项,即能够安装,也能够升级软件包。

注意:不推荐使用 -U 选项对内核 (kernel) 软件包进行安装,这样做会让 RPM 完全地覆盖先前版本的内核软件包。这个操作不会马上影响当前系统,但如果下次你无法使用新的内核启动系统,你就没有其它可用内核进行启用了。 使用 -i 选项将会将新安装的内核添加到你的 GRUB 启用菜单 (即 /etc/grub.conf 文件)。同样,移除某个内核软件包时,也会从 GRUB 菜单中删除相应内容。使用 yum 升级内核软件包时,它等同于 -i 选择的 rpm 命令,因此可以放心升级。

RPM 会聪明地处理配置文件以名升级过程中出现配置丢失,所以你可能会在升级软件包时看到以下信息

saving /etc/foo.conf as /etc/foo.conf.rpmsave

出现这个消息,则说明新版本软件包中的配置文件不向前兼容(forward-compatible),所以 RPM 为你备份并添加一份最新的配置文件。 你需要了解两份配置文件的不同,并解决其中的问题,从而保证你能够将旧配置文件中的设置过渡到新的软件中。

或者,RPM 不会变更旧的配置文件,而是将新的配置文件保存为 foo.conf.rpmnew。不论是哪种情况,依然建议你查看两份配置的不同,并解决配置方面的问题。比对两个文件,可以使用 diff 程序。

如果你想将软件包更新为版本号更低的软件包,则会得到以下输出

package foo-2.0-1.fc12.x86_64.rpm (which is newer than foo-1.0-1) is already installed

使用 --oldpackage 选项,能够强制地将软件包更新为旧版本的软件包

~]# rpm -Uvh --oldpackage foo-1.0-1.fc12.x86_64.rpm