Ошибка разрешения зависимостей в установленной библиотеке
Я пытаюсь установить rpm и получить следующую ошибку:
---> Package geramer-server.x86_64 0:3.6.0.117-1 will be an update
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: geramer-server-3.6.0.117-1.x86_64
---> Package geramer-ui.x86_64 0:3.6.0.98-1 will be updated
---> Package geramer-ui.x86_64 0:3.6.0.117-1 will be an update
--> Finished Dependency Resolution
Error: Package: geramer-server-3.6.0.117-1.x86_64 (/geramer-server-3.6.0.117.x86_64)
Requires: libcrypto.so.10(libcrypto.so.10)(64bit)
моей первой мыслью было, что libcrypto.так не устанавливается. Но это не так, см.:
$ ldconfig -p | grep libcrypto.so
libcrypto.so.10 (libc6,x86-64) => /usr/lib64/libcrypto.so.10
Он также существует на диске:
$ ls -l /usr/lib64/libcrypto.so.10
lrwxrwxrwx 1 root root 18 Dec 4 13:11 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.0
а также RPM знает об этом:
$ yum whatprovides "*/libcrypto.so.10"
Loaded plugins: product-id, rhnplugin, subscription-manager
*Note* Red Hat Network repositories are not listed below. You must run this command as root to access RHN repositories.
openssl-1.0.0-25.el6_3.1.x86_64 : A general purpose cryptography library with TLS implementation
Repo : installed
Matched from:
Filename : /usr/lib64/libcrypto.so.10
Итак, есть идеи, чего мне не хватает?
С уважением, Анди
5 ответов
зависимостей имеют имена модулей, которые перечислены в скобках, чтобы предотвратить столкновения между пакетами. Однако openssl в RHEL или openssl-libs на Fedora предоставляют libcrypto.Итак.10 с четырьмя разными именами модулей для двух архитектур:
$ rpm -q --provides openssl-libs | grep libcrypto.so.10
libcrypto.so.10()(64bit)
libcrypto.so.10(OPENSSL_1.0.1)(64bit)
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)
libcrypto.so.10
libcrypto.so.10(OPENSSL_1.0.1)
libcrypto.so.10(OPENSSL_1.0.1_EC)
libcrypto.so.10(libcrypto.so.10)
похоже, что это относится к CentOS слишком, который основан на RHEL.
в вашем случае openssl, похоже, предоставляет только libcrypto.Итак.10 без какого-либо имени модуля, заставляя geramer-server полагать, что зависимость отсутствует, поскольку для этого требуется libcrypto.Итак.10 из модуля libcrypto.Итак.10.
Я знаю, что эта тема довольно старая, но недавно я столкнулся с этой проблемой и хотел поделиться тем, что я сделал, чтобы исправить это, тем более, что ответ @divanov помог мне отладить проблему.
в моем случае я не смог установить определенный postgres rpm (postgresql91) и видел ту же ошибку:
Error: Package: postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64 (/postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64)
Requires: libcrypto.so.10(libcrypto.so.10)(64bit)
Error: Package: postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64 (/postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64)
Requires: libssl.so.10(libssl.so.10)(64bit)
в основном, я смог исправить проблему, обновив версию openssl, которая была установлена. На момент написания этой статьи openssl-1.0.1 e-15 доступен в хранилище CentOS (6), здесь: openssl-1.0.1 e-15.el6.архитектуру x86_64.об / мин и предоставляет зависимости libssl и libcrypto, которые ранее отсутствовали.
Чтобы установить, вы можете:
sudo yum install http://mirror.centos.org/centos/6/os/x86_64/Packages/openssl-1.0.1e-15.el6.x86_64.rpm
опять же, если версия в репо CentOS изменяется, этот URL-адрес может быть недействительным.
Ок, теперь подробности...
первоначально моя машина имела openssl-1.0.0-27.el6_4.2.архитектуру x86_64.установлен rpm, который не предоставил все пакеты my postgres об / мин требует:
> rpm -q --provides openssl
config(openssl) = 1.0.0-27.el6_4.2
...
libcrypto.so.10()(64bit)
...
libssl.so.10()(64bit)
...
после установки новой версии OpenSSL:
> rpm -q --provides openssl
config(openssl) = 1.0.1e-16.el6_5.4
...
libcrypto.so.10()(64bit)
libcrypto.so.10(OPENSSL_1.0.1)(64bit)
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)
...
libssl.so.10()(64bit)
libssl.so.10(OPENSSL_1.0.1)(64bit)
libssl.so.10(OPENSSL_1.0.1_EC)(64bit)
libssl.so.10(libssl.so.10)(64bit)
...
и теперь все счастливы...
итог, установите более новую версию openssl, и она должна предоставить необходимые зависимости. Удачи!
Я смог исправить это, удалив openssl из строки exclude в /etc / yum.conf. У нас есть управляемые серверы, поэтому он был размещен там по умолчанию. Затем я просто запустил обычную установку yum того, что мне нужно, и все получилось хорошо.
Я yumdownloader
для создания локальной копии OpenSSL rpm. Тогда я использовал rpmrebuild С -e -p PACKAGE
флаги для добавления отсутствующего Provides
и создайте новый rpm. Затем установил полученный артефакт. Увеличение Release
также помогли.
попробуйте установить openssl и openssl-libs одновременно со следующей командой для RHEL7 или CentOS 7:
sudo yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-1.0.2k-8.el7.x86_64.rpm http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-libs-1.0.2k-8.el7.x86_64.rpm
поскольку openssl и openssl-libs требуют друг друга в качестве зависимостей и работают без sudo, могут возникнуть проблемы с конфликтом со старой версией.