使用 localinstall 更新 yum 包

Update yum package using localinstall

如果使用 yum localinstall 安装软件包,如下所示:

yum -y localinstall --nogpgcheck some-package-1.0.0.rpm

现在,如果我尝试 运行:

yum -y localinstall --nogpgcheck some-package-2.0.0.rpm

它会用新版本替换整个旧版本还是保留两个版本?

答案是,这取决于some-package是如何打包的。一般来说,大多数 .rpmsfoo-version-release.rpm 一起被同一个包 fooversion++ and/or 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做一个dry-运行。需要将其删除才能进行真正的安装。

既然有基于回购的包管理器,我更喜欢对所有东西使用相同的 pkg 管理器。

它似乎没有被记录但确实可以使用标准的 yum args:

yum -y localupdate some-package-2.0.0.rpm