可能在本地安装第三方RPM? 为了不干扰系统RPM?

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

现在我可以下载源代码并构build并安装到/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 du jour。 RPM应该检查系统是否满足其依赖关系,但在任何情况下都不应该尝试replace或修改系统中的任何东西。

你可以得到srpm或者来源。 大多数软件包将允许您将它们构build到/ home( ./configure --prefix=/home/foo )目标下。 从来没有build立一个RPM来做到这一点,但它也应该是可能的。 但是,您可能需要将转义和名称中的依赖项元数据冻结,以免它将RPM的内部数据库认为已经replace了实际的包。

这取决于你将来如何pipe理你的系统。

你可以继续进行源代码编译,但是这种方法在系统中产生了很多垃圾,使得一段时间后难以pipe理。

如果你尝试安装RPM,你会遇到所谓的“依赖地狱”。 在你的情况下,有两个依赖于旧的libxml2库的包:

  libxml2的 - python
 eel2 

有两种方法可以在这种情况下进行:

  1. 使用–nodeps选项安装更新的libxml2软件包:
  rpm -Uvh libxml2-2.7.8-1.x86_64.rpm --nodeps 

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

  1. 为libxml2-python和eel2下载新的SRC-RPMS,并针对较新版本的libxml2重新构build它们。 但是,我不能保证编译会成功。