Ошибка разрешения зависимостей в установленной библиотеке

Я пытаюсь установить 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, могут возникнуть проблемы с конфликтом со старой версией.