Когда я запускаю openssl, я получаю следующее сообщение об ошибке:
openssl: ошибка при загрузке общих библиотек: libcrypto.so.1.1: невозможно открыть файл общих объектов: нет такого файла или каталога »
Это произошло после того, как я попытался обновить OpenSSL в соответствии с этим статья
Есть ли способ исправить это?
ОС: CentOS 6.8 Веб-сервер: nginx / 1.10.2
Обновление №1:
[root@host ~]# yum info openssl
Installed Packages
Name : openssl
Arch : x86_64
Version : 1.0.1e
Release : 48.el6_8.3
Size : 4.0 M
Repo : installed
From repo : system-updates
Summary : A general purpose cryptography library with TLS implementation
URL : ***
License : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications
: between machines. OpenSSL includes a certificate management tool and
: shared libraries which provide various cryptographic algorithms and
: protocols.
Available Packages
Name : openssl
Arch : i686
Version : 1.0.1e
Release : 48.el6_8.3
Size : 1.5 M
Repo : system-updates
Summary : A general purpose cryptography library with TLS implementation
URL : ***
License : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications
: between machines. OpenSSL includes a certificate management tool and
: shared libraries which provide various cryptographic algorithms and
: protocols.
У меня была такая же проблема после установки последней версии openssl 1.1.0c, я решил проблему с копированием файлов библиотеки libcrypto.so.1.1
, libcrypto.a
и libssl.so
из /usr/local/lib64
в общую библиотеку по адресу /usr/lib64
.
После копирования библиотек необходимо создать символическую ссылку.
ln -s libcrypto.so.1.1 libcrypto.so
ln -s libssl.so.1.1 libssl.so
После создания символической ссылки восстановление кеша ldconfig также требовалось:
sudo ldconfig
С вашей исходной версией OpenSSL он знал, как найти общие библиотеки, потому что /usr/lib64
включен в путь поиска компоновщика. Когда вы загрузили и скомпилировали «локальную» копию OpenSSL, общие библиотеки были помещены в /usr/local/lib64
по умолчанию. Поэтому вам, вероятно, просто нужно добавить этот каталог в путь поиска компоновщика, например (как root):
echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.conf
затем выполните:
ldconfig
Я считаю, что это решит вашу проблему.
Вы можете переустановить его, используя
yum install -y openssl-devel
Я получил эту ошибку, используя Termux в ChromeOS, что привело к npm
и node
программы командной строки для сбоя.
Бег pkg upgrade
исправил проблему!
То, что сказал @benedict, сработало для меня. Однако вы можете обнаружить, что некоторые символические ссылки указывают на более старые версии. Бег ls -l libcrypto*
из / usr / libs покажет вам ссылки. Как в приведенном ниже примере:
lrwxrwxrwx 1 root root 16 May 21 15:28 libcrypto.so -> libcrypto.so.1.0
Затем вы захотите сначала удалить существующую ссылку, набрав sudo rm libcrypto.so
а затем скопируйте libcrypto.so.1.1, как указано в @benedict. Наконец, вы можете создать новую ссылку. sudo ln -s libcrypto.so.1.1 libcrypto.so
Надеюсь это поможет.
В libcrypto.so
принадлежит openssl-libs
пакет. Если вы вручную удалили (с --nodeps
) этот пакет или повредил его, обновив, вы потеряете доступ к yum, wget, curl, ssh и т. д. Если в системе есть доступ в Интернет, загрузите openssl-libs
используя команду /usr/bin/GET
. Синтаксис будет выглядеть, как показано ниже, если вы пытаетесь восстановить версию openssl-libs-1.0.2k-8.el7.x86_64
:
/usr/bin/GET http://downloadURL/openssl-libs-1.0.2k-8.el7.x86_64.rpm > openssl-libs-1.0.2k-8.el7.x86_64.rpm
Это создаст openssl-libs-1.0.2k-8.el7.x86_64.rpm
пакет для вас, вы можете использовать его для переустановки или извлечения отсутствующего .so
файл.
Я столкнулся с той же проблемой ... Я решил ее, выполнив следующие команды.
ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
Это создаст софтлинк, и все готово.
Это лучшее решение, которое я нашел вокруг ... другие решения, предлагаемые по всему Интернету, не выдерживают перезагрузки системы;)
ОС: Ubuntu 16.04
sudo vim /etc/ld.so.conf.d/libc.conf
Прокомментируйте настройки каталога lib и добавьте правильный путь
# libc default configuration
#/usr/local/lib
/usr/lib
Когда вы закончите редактирование, запустите эту команду:
sudo ldconfig
Тогда у вас будет хорошая настройка при запуске:
LDD / USR / bin / openssl
Перед этим исправлением:
/usr/bin/openssl: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
linux-vdso.so.1 => (0x00007ffe6d1e3000)
libssl.so.1.0.0 => /usr/local/lib/libssl.so.1.0.0 (0x00007f8999827000)
libcrypto.so.1.0.0 => /usr/local/lib/libcrypto.so.1.0.0 (0x00007f89993ed000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8999023000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8998e1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8999a97000)
После исправления я предоставил:
linux-vdso.so.1 => (0x00007ffec39bc000)
libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f7faad22000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f7faa8dd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7faa513000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7faa30f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7faaf8b000)
На CentOS 7 libssl.so.1.1
проживает в /usr/local/ssl/lib
.
Поэтому мне просто пришлось добавить этот путь в места по умолчанию, где динамический загрузчик ищет библиотеки. Я создал отдельный файл для своего двоичного файла openssl с именем openssl-1.1.1c.conf
, в /etc/ld.so.conf.d
папка:
echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1c.conf
Теперь это работает.
После сборки и установки open ssl openssl-1.1.0f я исправил ту же ошибку для lib libssl.so.1.1, создав программную ссылку:
ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1