使用localinstall更新yum软件包

6
如果使用 yum localinstall 安装软件包,操作如下:
yum -y localinstall --nogpgcheck some-package-1.0.0.rpm

现在,如果我尝试运行:

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

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


"yum localinstall"已被弃用,因为现在只需提供RPM文件的路径而不仅仅是软件包名称,"yum install"就可以完全执行相同的操作。来源:https://www.linuxquestions.org/questions/linux-software-2/yum-localinstall-question-4175598142/ - pzkpfw
2个回答

8
答案是,这取决于some-package如何打包。一般来说,大多数与foo-version-release.rpm打包的.rpms都会被相同软件包中的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来进行干运行。在实际安装时需要将其删除。


1
感谢您提供这个出色的答案。第一部分是避免使用-y的极好理由。审查YUM所要执行的操作是防止意外配置错误的好方法。 - Jeter-work

4

现在有基于仓库的软件包管理器,我更喜欢为所有事情使用同一个软件包管理器。

尽管没有记录,但实际上可以使用标准的yum参数:

yum -y localupdate some-package-2.0.0.rpm


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接