如何忽略rpm安装中的冲突

Cob*_*ojo 31 unix linux aix rpm

我在一个文件夹中有一堆rpm文件.我正在尝试使用以下命令安装它们: rpm -ivh *.rpm因此rpm可以处理正确的安装顺序.

在其中一些rpms中,我在我的系统中安装了更新的版本,所以我得到了例子:

package info-5.0-1 (which is newer than info-4.13a-2) is already installed

/opt/freeware/man/man1/infokey.1 from install of info-4.13a-2 conflicts with file from package info-5.0-1

有没有办法忽略旧的.rpm文件并使用已安装的新版本解决依赖关系?我想到了--force选项.但是--force如何解决冲突?用旧版本覆盖它们还是忽略它们离开新版本?

欢迎任何想法.

xor*_*ves 23

--force选项将重新安装已安装的软件包并覆盖其他软件包中已安装的文件.你通常不想这样.

如果你告诉rpm从某个目录安装所有RPM,那么它就是这样做的.rpm不能忽略列出的安装RPM.您必须从列表(或目录)中手动删除不需要的RPM.

您可以删除旧的RPM,并rpm使用较新版本的已安装RPM解决依赖关系.但这只会起作用,如果没有安装的RPM完全取决于旧版本.

如果您确实需要相同RPM的不同版本,则RPM必须是可重定位的.然后,您可以告诉rpm将特定RPM安装到其他目​​录.如果文件没有冲突,那么您可以安装不同的版本rpm -i(zypper in无法安装相同RPM的不同版本).我正在打包例如ruby gems作为可重新定位的RPM在工作.所以我可以安装相同gem的不同版本.

我不知道您的RPM在哪些文件上存在冲突,但如果所有这些文件都是"仅"手册页,那么您可能只需使用旧文件覆盖新文件即可rpm -i --replacefiles.唯一的问题是,它可能会混淆正在阅读旧手册页并认为它是实际版本的人.另一个问题是rpm --verify命令.如果旧包覆盖了一些文件,它会抱怨新包.

这可能是https://serverfault.com/questions/522525/rpm-ignore-conflicts的副本吗?


小智 8

尝试Freshen命令:

rpm -Fvh *.rpm
Run Code Online (Sandbox Code Playgroud)

  • Freshening 命令仅更新系统中已有的软件包。如果我想安装一个新包就没用了... (2认同)

小智 7

从上下文来看,冲突是由程序包的版本引起的。
让我们看一下有关的手册rpm

--force
    Same as using --replacepkgs, --replacefiles, and --oldpackage.

--oldpackage
    Allow an upgrade to replace a newer package with an older one.
Run Code Online (Sandbox Code Playgroud)

因此,您可以执行命令rpm -Uvh info-4.13a-2.rpm --force来解决问题。

  • 那没有回答我的问题。就像我说的,我想保留安装的新软件包。不是用旧的换掉吧... (3认同)