「openssl」を実行すると、次のようなエラーが発生します。
openssl:共有ライブラリのロード中にエラーが発生しました:libcrypto.so.1.1:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません
これは、OpenSSLをこれに従って更新しようとした後に発生しました article
とにかくこれを修正する方法はありますか?
OS:CentOS 6.8 Webサーバー: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
に配置されました。したがって、おそらくこのディレクトリを、次のように(ルートとして)リンカの検索パスに追加する必要があります。
echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.conf
次に実行します:
ldconfig
これで問題が解決すると思います。
ChromeOSのTermuxを使用してこのエラーが発生したため、npm
およびnode
コマンドラインプログラムがクラッシュしました。
ランニング pkg upgrade
問題を修正しました!
@benedictが言ったことは私のために働いた。ただし、一部のシンボリックリンクが古いバージョンを指している場合があります。/usr/libsからls -l libcrypto*
を実行すると、リンクが表示されます。以下の例のように:
lrwxrwxrwx 1 root root 16 May 21 15:28 libcrypto.so -> libcrypto.so.1.0
次に、Sudo rm libcrypto.so
と入力して既存のリンクを削除し、次に@benedictで述べたようにlibcrypto.so.1.1をコピーします。最後に、新しいリンクを作成できます。 Sudo ln -s libcrypto.so.1.1 libcrypto.so
お役に立てれば。
あなたはそれを再インストールすることができます
yum install -y openssl-devel
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
ファイルを再インストールまたは抽出できます。
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
今では動作します。
まったく同じ問題が発生しました...次のコマンドを実行して問題を解決しました。
ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
これでソフトリンクが作成され、準備完了です。
これは私が見つけた最高の解決策です...インターネット全体で提供される他の解決策は、システムの再起動に耐えられません;)
OS: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)