我在一个文件夹中有一堆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如何解决冲突?用旧版本覆盖它们或者只是忽略它们离开新版本?
欢迎任何想法。
答案 0 :(得分:21)
--force
选项将重新安装已安装的软件包并覆盖其他软件包中已安装的文件。你不能正常地想要这个。
如果你告诉rpm
从某个目录安装所有RPM,那么它就是这样做的。 rpm
无法忽略为安装而列出的RPM。您必须从列表(或目录)中手动删除不需要的RPM。
您可以删除旧的RPM,rpm
将使用较新版本的已安装RPM解决依赖关系。但是,如果没有安装的RPM完全取决于旧版本,这只会起作用。
如果您确实需要相同RPM的不同版本,则RPM必须为relocatable。然后,您可以告诉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的重复吗?
答案 1 :(得分:8)
尝试Freshen命令:
rpm -Fvh *.rpm
答案 2 :(得分:4)
从上下文来看,冲突是由包的版本引起的
我们来看看有关rpm
:
--force
Same as using --replacepkgs, --replacefiles, and --oldpackage.
--oldpackage
Allow an upgrade to replace a newer package with an older one.
因此,您可以执行命令rpm -Uvh info-4.13a-2.rpm --force
来解决您的问题。