Linux:rpm -Uvh / rpms / *命令无法按预期运行

时间:2018-11-01 10:51:44

标签: linux shell redhat rpm rpmbuild

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

例如:

 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命令需要做什么才能使其正常工作?对于上述情况,最佳的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

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

您期望rpm能够理解命令的含义。

从根本上说,rpm无法准确地确定目标。

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

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

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

“做我想做的”(DWIM)行为无法实现所有人的满意。 RPM采用保守的方法并退出,不安装Y-1而不升级Z-2,基本盟友什么也不做,并返回错误代码。