如果使用yum localinstall安装的软件包如下:
yum -y localinstall --nogpgcheck some-package-1.0.0.rpm
现在,如果我跑:
yum -y localinstall --nogpgcheck some-package-2.0.0.rpm
它会用新版本完全替换旧版本还是保留两个版本?
答案是,这取决于some-package
的包装方式。一般来说,与.rpms
一起包装的大多数foo-version-release.rpm
都被与foo
和/或version++
相同的包装release++
淘汰。
看看你的some-package
,如果你想运行yum localinstall some-package-2.0.0.rpm
(注意,不是用-y
),那么你会看到来自yum
的消息,如下所示:
Resolving Dependencies
--> Running transaction check
---> Package foo.x86_64 0:1.0.0 will be updated
---> Package foo.x86_64 0:2.0.0 will be an update
这告诉yum
将更新包并删除旧包。 yum
解决了这些依赖关系,而rpm -ivh
不会这样做。
现在,有一些特殊情况,例如kernel
,它将与旧版本并排安装在系统上,除非您手动调用rpm -Uvh kernel*.rpm
命令。
对yum localinstall
的等效命令将是双重的,
# This will fail if some-2.0.0 is designed to obsolete some-1.0.0
$ rpm -ivh --test some-2.0.0.rpm
而后续会成功:
$ rpm -Uvh --test some-2.0.0.rpm
注意,我正在使用--test
进行干运行。需要将其删除才能进行实际安装。