информация о версии недоступна

Я использую Ubuntu 12.04 - сервер и постоянно получаю:

/usr/lib/libcrypto.so.1.0.0: информация о версии недоступна (требуется /usr/lib/libpython2.7.so.1.0)

и

/usr/lib/libssl.so.1.0.0: информация о версии недоступна (требуется /usr/lib/libpython2.7.so.1.0)

сообщения об ошибках без объяснения причин. Это может быть что-то простое, например запуск vi. Файлы есть, а не ссылки.

Это началось вскоре после компиляции и установки OpenLDAP с использованием инструкций со своего сайта при изучении основ ldap-сервера. Конечно, я удалил openLDAP, чтобы попытаться устранить проблему. Я также переустановил OpenSSL и libssl1.0.0, чтобы попробовать и протестировать это решение.

Любая помощь будет принята с благодарностью, Google, к сожалению, не был полезен.


person tanwedar    schedule 22.08.2013    source источник
comment
Похоже, ваш менеджер пакетов не предоставил правильные символические ссылки для /usr/lib/libcrypto.so и /usr/lib/libssl.so   -  person jww    schedule 17.01.2014


Ответы (3)


Полагаю, мне следует сразу перейти к делу ...

Проблема: для libssl.so.1.0.0 и libcrypto.so.1.0.0 информация о версии недоступна, предупреждение / ошибка.

Я ЭТО РЕШИЛ !!! УРА!!! (Фейерверк должен пойти и все такое.)

После долгих исследований, времени и усилий (потребовалось недели), вот что я наконец сделал ...

В каталоге, в котором вы закончили извлечение исходного кода для своей версии openssl 1.0.1h (должен работать и для других версий), я создаю файл с именем openssl.ld

В этот файл поместите это ...

Ответ

OPENSSL_1.0.0 {
    global:
    *;
};

сохрани это. Теперь введите ...

сделать чистым (просто чтобы убедиться, что мы начинаем заново.)

А теперь самое головокружительное ...

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions

Потом...

make

make test

make install

ldconfig

И это должно сработать. (Это так просто. Никаких исправлений не требуется.)

Я применил это решение к Debian Wheezy как 32-разрядной, так и 64-разрядной версии. И сделали наблюдение. В 64-битной версии по умолчанию автоматически используются новые файлы libssl.so.1.0.0 и libcrypto.so.1.0.0, созданные в каталоге / usr / local / lib. В 32-битной версии нет. Вот почему я сначала подумал, что 32-битная версия Debian Wheezy не страдает от этой проблемы, но это произойдет, как только вы получите 32-битную версию, чтобы использовать новые библиотеки openssl в каталоге / usr / local / lib.

Использование команды ldd для проверки того, какие библиотеки используют двоичные файлы, также имело неоценимое значение для выяснения этого.

Хорошего дня.

Г-н Э. Дуд

person Mr. E. Dude    schedule 12.09.2014
comment
Отлично работает !!!. Спасибо. Кстати, я использовал абсолютный путь для скрипта версии. Например, --version-script = / home / userid / openssl / openssl.ld - person jpark7ca; 07.01.2015
comment
Будет ли этот метод работать для того же сообщения, но для библиотеки libnl? - person Masoud; 04.05.2018
comment
Также полезно запускать readelf -s в официальных и скомпилированных вручную библиотеках. В сценарии версии, упомянутом выше, все символы имеют суффикс @ OPENSSL_1.0.0, тогда как без этого сценария версии они не имеют суффикса. - person Wodin; 29.03.2019

Я также получал это раздражающее предупреждающее сообщение после компиляции и установки последней версии openssl из исходного кода (openssl-1.0.1f). После некоторого исследования, а также некоторых проб и ошибок я смог исправить проблему для моего конкретного сценария. По сути, все сводилось именно к тому, о чем говорится в предупреждающем сообщении. Информация о версии недоступна в библиотеках, созданных из исходных текстов. Это то, что команда Ubuntu добавила в свой дистрибутив. Итак, решение состоит в том, чтобы перекомпилировать исходный код openssl после его исправления с помощью скрипта версии, который включен в дистрибутив пакета Ubuntu для openssl.

Я нашел в Google «патч openssl, содержащий информацию о версии для ubuntu» и нашел нужный мне исходный пакет на https://launchpad.net/ubuntu/+archive/primary/+files/openssl_1.0.1f-1ubuntu1.debian.tar.gz.

Итак, вот процесс, которым я следовал:

rm -r -f -v openssl-1.0.1f (just to make sure you start fresh)
wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz
tar -xvf openssl-1.0.1f.tar.gz
wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_1.0.1f-1ubuntu1.debian.tar.gz
tar -xvf openssl_1.0.1f-1ubuntu1.debian.tar.gz
mv debian openssl_1.0.1f-1ubuntu1 (just because that's what I did)
cd openssl-1.0.1f/
patch -p1 < ../openssl_1.0.1f-1ubuntu1/patches/version-script.patch
./config
make
make test
sudo make install

Теперь сообщение об ошибке должно исчезнуть.

Стоит отметить, что изначально я пропатчил свой исходный код openssl-1.0.1f с помощью скрипта версии, включенного в исходный пакет из http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.1-4ubuntu5.11.debian.tar.gz. Но мой make выходил из строя с ошибкой. Думаю, логично, что мне нужно было получить ту же версию 1.0.1f.

Благодарим @mattcasw за его сообщение http://ubuntuforums.org/showthread.php?t=1905963, который привел меня по правильному пути.

person dcarrith    schedule 25.03.2014

Взгляните на ответ, который я опубликовал в этом вопрос. Думаю, это тот же случай, что и ваш. Во всяком случае, я выполнил следующие команды:

Для libssl.so.1.0.0:

  • sudo rm /usr/local/ssl/lib/libssl.so.1.0.0
  • sudo ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0 usr/local/ssl/lib/libssl.so.1.0.0

Для libcrypto.so.1.0.0:

  • sudo rm /usr/local/ssl/lib/libcrypto.so.1.0.0
  • sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/local/ssl/lib/libcrypto.so.1.0.0
person Matheus Diógenes Andrade    schedule 25.12.2019