共有ライブラリのロード中のエラー:libcrypto.so.1.1


13

「openssl」を実行すると、次のようなエラーが表示されます。

openssl:共有ライブラリのロード中にエラーが発生しました:libcrypto.so.1.1:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません "

これは、この記事に従ってOpenSSLを更新しようとした後に発生しました

とにかくこれを修正する方法はありますか?

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.

2
申し訳ありませんが、さらに別の悪いインターネットチュートリアルに遭遇しました。システムの再インストールが必要になる場合があります。先に進む前に、これを行うことで解決しようとしていた元の問題について質問することをお勧めします。おそらく、元の目標を達成するためのより良い方法があります。
マイケルハンプトン

Monitisが提供するServer Monitorアプリケーションをインストールしたかった。サーバーにインストールされていない共有ライブラリの依存関係が必要でした。そのため、これらをインストールする準備ができていたときにすべてが起こりました。:(
mayasl 16

@MichaelHamptonシステムの再インストール以外のことを教えてください。ライブサイトがそのサーバーで実行されているためです!
mayasl 16

回答:


20

私は、OpenSSL 1.1.0cの最後のバージョンをインストールした後、同じ問題を抱えていた、私は、ライブラリファイルをコピーする問題を解決しlibcrypto.so.1.1libcrypto.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

8

OpenSSLの元のバージョンでは、共有ライブラリを見つける方法を知っていました。 /usr/lib64は、リンカーの検索パスに含まれているいました。OpenSSLの「ローカル」コピーをダウンロードしてコンパイルすると、共有ライブラリは/usr/local/lib64デフォルトで配置されました。したがって、おそらくこのディレクトリをリンカーの検索パスに追加する必要があります(ルートとして)。

echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.conf

次に実行します:

ldconfig

これで問題が解決すると思います。


少なくとも最新のUbuntuディストリビューション(16.04 LTSでこれを書いています)およびおそらく他のディストリビューションsudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.confでは、コマンドの後半(ファイルの書き込み)がrootとして実行されないため、「permission denied」エラーが発生します。この場合は、sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"代わりに試してください。
マシューコール

3

ChromeOSでTermuxを使用してこのエラーが発生したためnpmnodeコマンドラインプログラムとコマンドラインがクラッシュしました。

実行pkg upgradeすると問題が修正されました!


1

を使用して再インストールできます

yum install -y openssl-devel


私も試してみましたが、助けにはなりませんでした!
mayasl 16

@mayasl他のパッケージも再インストールする必要があるかもしれません。というパッケージがopenssl-develに依存することが予想されopensslます。に触れてから長い時間が経ったyumので、コマンドの構文を確認することはできません。
カスペルド16

「yum info openssl」の出力で質問を更新しました。役に立つ場合は、ご覧ください。このスレッドを開始する前に、opensslとopenssl-develを削除して再インストールしました。動作しませんでした!使用したコマンド: codeyum remove openssl yum remove openssl-devel yum clean all
mayasl

openssl(ではなくopenssl-devel)を再インストールすることをお勧めします。
マイケルハンプトン

私はすでに@MichaelHamptonを試しました。これは何らかのリンクの問題ですか?
mayasl 16

1

@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前述の@benedictのようにlibcrypto.so.1.1を入力してコピーすることにより、最初に既存のリンクを削除します。最後に、新しいリンクを作成できます。 sudo ln -s libcrypto.so.1.1 libcrypto.so

お役に立てれば。


1

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ファイルを再インストールまたは抽出できます。


0

私はまったく同じ問題を経験しています...次のコマンドを実行して解決しました。

ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1

これにより、ソフトリンクが作成され、準備完了です。


0

これは私が周りで見つけた最高のソリューションです...インターネット上で提供される他のソリューションは、システムの再起動に耐えられません;)

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)

CentOSのパスを持っている人にとって、わかりやすいファイルは/etc/ld.so.confです;)。
ゼロフ

0

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

今では動作します。


-1

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.