为什么应该总是使用“rpm -U”而不是“rpm -i”来安装软件包?

为什么应该总是使用“rpm -U”而不是“rpm -i”来安装软件包?

rpm 有一个-i( --install) 选项用于安装软件包
rpm 有一个-U( --upgrade) 选项用于安装或升级软件包

红帽文档表明这rpm -i是完全可以接受的。

然而,我见过的每个文档都建议使用-U,即使是第一次安装该软件包。

为什么rpm -U通常优先选择rpm -i

答案1

大多数文档建议-U结束,-i因为-i可能失败如果该软件包已经安装,或者已经安装了早期版本;-U即使根本没有安装包中的“升级”,while也会成功。当提供操作方法时,就像在文档中一样,通常最好给出失败状态可能性较低的命令。

答案2

该文档实际上并没有说-i应该用于升级。它说应该使用它来升级内核。原因是,如果系统无法使用新内核启动,您仍然可以使用旧内核。然而,这是一个特殊情况 - 内核包几乎是正交的,因为它们不拥有冲突的文件,因为所有内容都是版本化的(来自不同内核包的内核、initrd 和库模块可以彼此共存)。

普通的用户空间包很少如此独立。如果您用来rpm -i执行升级,您可能最终会同时安装两个同名(和不同版本)的软件包,而较早的软件包会被破坏(一半被覆盖)。实际上可以将同一个包安装两次 - 一旦发生这种情况,一些工具和/或人们可能会感到相当困惑。

相关内容