【问题标题】:Update yum package using localinstall使用 localinstall 更新 yum 包
【发布时间】:2018-07-18 06:42:37
【问题描述】:

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

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

现在,如果我尝试运行:

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

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

【问题讨论】:

标签: linux redhat yum rhel


【解决方案1】:

答案是,这取决于some-package 是如何打包的。一般来说,与foo-version-release.rpm 打包在一起的大部分.rpms 会被fooversion++ 和/或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 进行试运行。实际安装时需要将其移除。

【讨论】:

  • 感谢您的出色回答。第一部分是避免 -y 的一个非常好的理由。查看 YUM 所说的内容是防止意外错误配置的好方法。
【解决方案2】:

现在我更喜欢使用相同的 pkg 管理器来处理基于 repo 的包管理器。

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

yum -y localupdate some-package-2.0.0.rpm

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多