Назад | Перейти на главную страницу

Можно ли установить сторонний RPM локально? Чтоб не мешали обороты системы?

Это система 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 способа действовать:

  1. Установите более новый пакет libxml2 с параметром --nodeps:
rpm -Uvh libxml2-2.7.8-1.x86_64.rpm --nodeps

Однако учтите, что зависимое программное обеспечение может быть несовместимо с этой новой версией.

  1. Загрузите новую SRC-RPMS для libxml2-python и eel2 и перестройте их для более новой версии libxml2. Однако я не могу гарантировать, что компиляция будет успешной.