是否可以在本地安装第三方 RPM?这样就不会干扰系统 RPM?

是否可以在本地安装第三方 RPM?这样就不会干扰系统 RPM?

yum/rpm这是用于包管理的CentOS 5 系统,x64 。它libxml2有点过时,我想安装的 Perl XML 库(来自 CPAN)需要更新版本的 C libxml2 库。

现在我可以下载源代码并构建和安装到/usr/local

但是他们也在 提供 RPM ftp://xmlsoft.org/libxml2/。是否可以以不干扰系统提供的 RPM 的方式安装 RPM(我不想更改或升级系统提供的 RPM)?

我尝试了以下操作:

package-cleanup --problems libxml2-2.7.8-1.x86_64.rpm

但输出似乎表明它将代替系统 RPM,这不是我想要的。

Marking libxml2-2.7.8-1.x86_64.rpm as an update to libxml2-2.6.26-2.1.12.el5_7.2.i386

此外,继续操作时,命令会失败并出现错误。

--> Finished Dependency Resolution
eel2-2.16.1-1.el5.i386 from installed has depsolving problems
  --> Missing Dependency: libxml2.so.2 is needed by package eel2-2.16.1-1.el5.i386 (installed)
libxml2-python-2.6.26-2.1.12.el5_7.2.x86_64 from installed has depsolving problems
  --> Missing Dependency: libxml2 = 2.6.26 is needed by package libxml2-python-2.6.26-2.1.12.el5_7.2.x86_64 (installed)
...

那么回到从源代码编译?或者有办法使用 RPM 吗?

更新

我感兴趣的是将 RPM 并行安装到类似/opt/usr/local任何您喜欢的系统中--prefix。RPM 应该只检查系统是否满足其依赖性,但它在任何情况下都不应尝试替换或修改系统中的任何内容。

答案1

您可以获取 srpm 或源代码。大多数软件包都允许您构建它们以安装到 /home ( ./configure --prefix=/home/foo) 下的目标。从未构建过 RPM 来执行此操作,但这也应该是可能的。但是,您可能需要在 rpm 和名称中处理依赖项元数据,这样它就不会欺骗 RPM 的内部数据库,使其认为您已经替换了实际软件包。

答案2

这取决于您将来希望如何​​管理您的系统。

您可以继续进行源代码编译,但是这种方法会在系统中产生大量垃圾,一段时间后会变得难以管理。

如果您尝试安装 RPM,您将遇到所谓的“依赖地狱”。对于您来说,有两个软件包依赖于旧的 libxml2 库:

libxml2-python
鳗鱼2

在这种情况下,有两种方法可以解决:

  1. 使用 --nodeps 选项安装较新的 libxml2 包:
rpm -Uvh libxml2-2.7.8-1.x86_64.rpm --nodeps

但请注意,依赖的软件可能与此新版本不兼容。

  1. 下载 libxml2-python 和 eel2 的新 SRC-RPMS,并根据较新版本的 libxml2 重建它们。但是,我无法保证编译会成功。

相关内容