GNU/Linux >> Linux の 問題 >  >> Linux

バージョン情報がありません (/usr/bin/ssh で必要)

問題:libssl.so.1.0.0libcrypto.so.1.0.0 利用可能なバージョン情報がありません警告/エラー。

多くの調査、時間と労力を費やした後 (数週間かかりました)、最終的に私がやったことは次のとおりです...

自分のバージョンの openssl 1.0.1h のソース コードを抽出したディレクトリに (他のバージョンでも動作するはずです)、openssl.ld というファイルを作成します。

このファイルにこれを入れてください...

OPENSSL_1.0.0 {
    global:
    *;
};

保存してください。入力してください...

make clean

(確実に新しく始めるためです。)

さて、本当に気が遠くなるような部分です...

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

それから...

make
make test
make install
ldconfig

これで問題は解決するはずです (とても簡単です。パッチを適用する必要はありません)。

このソリューションを 32 ビット バージョンと 64 ビット バージョンの両方の Debian Wheezy に適用しました。そして、観察を行いました。 64 ビット バージョンは自動的に新しい libssl.so.1.0.0 にデフォルト設定されます と libcrypto.so.1.0.0 /usr/local/lib で作成されるファイル ディレクトリ。 32 ビット版にはありません。そのため、最初は Debian Wheezy の 32 ビット バージョンではこの問題は発生しないと考えていましたが、32 ビット バージョンを取得して /usr/local/lib で新しい openssl ライブラリを使用すると問題が発生します。 dir.

ldd の使用 バイナリが使用しているライブラリをテストするコマンドは、これを理解する上でも非常に貴重でした.


<ブロック引用>

openssl をコンパイルしてインストールしました。その後、apt-get で ssh をインストールしました。

これらはおそらく OpenSSL の 2 つの異なるバージョンです。 1.0.0 は 1.0.1、1.0.2 などとバイナリ互換であるため、おそらく問題ありません (ただし、1.1.0 とはバイナリ互換ではありません)。

あなたの ssh おそらく /usr/lib/x86_64-linux-gnu/ のバージョンの OpenSSL を使用しています . LD_PRELOAD を使用する必要があります OpenSSL のバージョンが使用されていることを確認します (もちろん、バイナリ互換性があることを前提としています)。

LD_PRELOAD を使用したくない場合 友達と、ssh をビルドします。 ソースから。必ず rpath を指定してください リンカーがシステムのバージョンではなく、OpenSSL のバージョンを使用するようにします。つまり、あなたの LDFLAGS -Wl,-rpath,<path to your openssl> のようなものを含める必要があります .これは、通常の -lcrypto に加えて 、 -lssl-L<path to your openssl> .

Mac OS X を使用している場合は、-Bstatic などのリンカー オプションを使用することをお勧めします。 および -rpath 黙って無視されます。 OS X は 0.9.8 を提供するため、互換性のないバイナリが原因で不可解なクラッシュが発生します。

<ブロック引用>

バージョン情報がありません

バージョン情報がないのでわかりません。 ssh OPENSSL_VERSION_NUMBER のいずれかを使用できます コンパイル時または SSLeay /SSLeay_version 実行時に。 OPENSSL_VERSION_NUMBER(3) を参照 詳細はこちら

<ブロック引用>

このエラーを修正する方法は?

おそらく私の読み違いかもしれませんが、投稿のどこにもエラーは見当たりません。


Linux
  1. / usr/binと/usr/ local / bin Linuxの場合?

  2. Linux – / usr/binと/usr/sbinを/bin(gnu / linux)にマージしますか?

  3. /usr/local/bin/ で composer の許可が拒否されました

  1. /usr/sbin、/usr/local/sbin、/usr/local/bin の意味は何ですか?

  2. #!/bin/bash と #!/bin/sh はいつ使用する必要がありますか?

  3. /bin と /usr/bin の違い

  1. 推奨される使用方法に従って、Web サイトは /var/ または /usr/ に配置する必要がありますか?

  2. /usr/bin/[とは?

  3. #!/bin/sh vs #!/bin/bash 移植性を最大限に高める