我想在基于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
命令需要做什么才能使其正常工作?对于上述情况,最佳的解决方案是什么?
答案 0 :(得分:1)
rpm拒绝运行指定不正确的命令(因为已经安装了两个请求的软件包)命令,因此跳过了可能的安装/升级。
您期望rpm能够理解命令的含义。
从根本上说,rpm无法准确地确定目标。
您是要重新安装已经安装(可能已修改/损坏)的软件包吗? (使用--force或--reinstall重新安装已安装的软件包)。
您只想升级已经安装的软件包,而忽略卸载的软件包吗? (使用--freshen。)
您是否希望rpm假定--upgrade arg列表中的软件包都已安装,即使没有先前版本要升级(根据要求)?
“做我想做的”(DWIM)行为无法实现所有人的满意。 RPM采用保守的方法并退出,不安装Y-1而不升级Z-2,基本盟友什么也不做,并返回错误代码。