【问题标题】:Linux : rpm -Uvh /rpms/* command not working as expected [closed]Linux:rpm -Uvh /rpms/* 命令未按预期工作[关闭]
【发布时间】:2019-04-05 14:07:51
【问题描述】:

我想在基于 Redhat/Linux 的系统中升级一些 rpm。有些 rpm 可能已经存在,有些 rpm 是新安装的,有些 rpm 需要使用 RPM 升级命令升级到更高版本。

例如:

 I have placed rpms to be installed in folder <rpms>
      /rpms/X-1.rpm (This is already installed in system)
      /rpms/Y-1.rpm (This is NOT present in system. This is NEW)
      /rpms/Z-2.rpm (This is need to be upgraded to higher version available, 
                     Z-1.rpm is installed in system)
      /rpms/Q-1.rpm (This is already installed in system)

我在 shell (.sh) 文件中运行下面的命令

$rpm -Uvh /rpms/*

执行后如下图

Preparing...            ################################### [100%]
    package X-1 is already installed
    package Q-1 is already installed

但它没有安装 Y-1,也无法升级到 Z-2。

请让我知道使用-Uvh 命令需要做什么才能使其工作?对于上述情况,最好的解决方案是什么?

【问题讨论】:

  • 你真的应该使用yum 来处理升级(因为它会处理更新的依赖关系,并且因为 yum 维护的元数据不是由 rpm 维护的)。
  • 是的,yum(如果有的话,甚至是dnf)会更好,如果你仍然想使用rpm,你可以尝试添加--replacepkgs,它会重新安装已经presnet的包,但至少,不会忽略另外两个
  • 我看不出人们有什么理由落后于结束问题。请不要跟随人群结束问题。 -Uvh 命令跳过安装,我在任何 RedHat 文档中都找不到解释。因此我来到了这里。
  • @larsks 但是 rpm 命令应该升级目录中提到的所有 rpm,但它正在跳过新的和升级的 rpm。它只是找到现有的。我认为是 rpm 命令的问题。
  • 我投票决定将此问题作为题外话结束,因为您的问题与“编程”无关,它更适合 StackExchange 站点 Super UserUnix & Linux

标签: linux shell redhat rpm rpmbuild


【解决方案1】:

rpm 拒绝运行指定不正确(因为已安装了两个请求的软件包)命令,因此跳过了可能的安装/升级。

您希望 rpm 能够直观地理解命令的含义。

基本上,rpm 无法准确地计算出预期的内容。

您的意思是重新安装已安装(并且可能已修改/损坏)的软件包吗? (使用 --force 或 --reinstall 重新安装已安装的软件包)。

您是否只想升级已安装的软件包,而忽略已卸载的软件包? (使用 --freshen。)

您是否希望 rpm 假定要安装 --upgrade arg 列表中的软件包,即使没有要升级的先前版本(按要求)?

“按我的意思做”(DWIM) 行为的实施无法让每个人都满意。 RPM采取保守的方式退出,不安装Y-1也不升级Z-2,基本无所事事,返回错误码。

【讨论】:

    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 2018-09-16
    • 2021-11-25
    • 2020-05-23
    • 2016-09-29
    • 2019-10-31
    • 1970-01-01
    相关资源
    最近更新 更多