这是一个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
有两种方法可以在这种情况下进行:
rpm -Uvh libxml2-2.7.8-1.x86_64.rpm --nodeps
但是请注意,依赖软件可能与此新版本不兼容。