Это система CentOS 5, x64, использующая yum/rpm
для управления пакетами. В libxml2
немного устарела, и для библиотеки Perl XML, которую я хотел бы установить (из CPAN), требуется более современная версия библиотеки C libxml2.
Теперь я мог скачать исходный код, собрать и установить в /usr/local
.
Но они также предоставляют RPM на ftp://xmlsoft.org/libxml2/
. Можно ли установить 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 должен просто проверять, удовлетворяются ли его зависимости системой, но ни при каких обстоятельствах не должен пытаться заменить или изменить что-либо в системе.
Вы можете получить srpm или файлы sources. Большинство пакетов позволят вам собрать их для установки в цель в вашем / home (./configure --prefix=/home/foo
). Никогда не создавал RPM для этого, но это тоже должно быть возможно. Однако вам может потребоваться изменить метаданные зависимостей в rpm и имени, чтобы внутренняя база данных RPM не заставила думать, что вы заменили фактический пакет.
Это зависит от того, как вы хотите управлять своей системой в будущем.
Вы можете продолжить компиляцию исходного кода, но этот подход приводит к появлению большого количества мусора в системе, который через некоторое время становится трудноуправляемым.
Если вы попытаетесь установить RPM, вы попадете в так называемый «ад зависимостей». В вашем случае есть два пакета, которые зависят от старой библиотеки libxml2:
libxml2-python eel2
В этой ситуации есть 2 способа действовать:
rpm -Uvh libxml2-2.7.8-1.x86_64.rpm --nodeps
Однако учтите, что зависимое программное обеспечение может быть несовместимо с этой новой версией.