今日openssh rpmをインストールする際に問題が発生しました。
[root@local_host ]# rpm -i openssh-6.7p1-1.i386.rpm
error: Failed dependencies:
libcrypto.so.1.0.0 is needed by openssh-6.7p1-1.i386
ああ?本当に変です:
[root@local_host ]# ls -l /lib/libcrypto*
lrwxrwxrwx 1 root root 19 Jan 20 15:18 /lib/libcrypto.so.1.0.0 -> libcrypto.so.1.0.1l
-rwxr-xr-x 1 root root 1815536 Jan 19 04:57 /lib/libcrypto.so.1.0.1l
rpmの依存関係は、私がインストールしたのと同じファイルをリストするようです。
[root@local_host ]# rpm -qpR openssh-6.7p1-1.i386.rpm
config(openssh) = 6.7p1-1
...
libcrypto.so.1.0.0
強制的にインストールすると動作します。もちろん、必要なライブラリがインストールされているので動作します。しかし、これが不安定になる原因は何ですか?
新しいopenssl(手動でローリング)インストール後にldconfigを実行したので、これらのライブラリをシステムに表示する必要があります。
ボックスはCentOS 5.4です。
追加情報
@nluによると、どのパッケージが関連ファイルを所有しているかを確認しました。 ssh rpmが望むファイルは、実際には実際のファイルへのシンボリックリンクです。
[root@local_host ~]# rpm -qf /lib/libcrypto.so.1.0.0
file /lib/libcrypto.so.1.0.0 is not owned by any package
[root@local_host ~]# rpm -qf /lib/libcrypto.so.1.0.1l
openssl-1.0.1l-1
ただし、rpmには表示されません。
[root@local_host ~]# rpm -ql openssl-1.0.1l-1
...
/lib/libcrypto.so.1.0.1l
...
それでもう少し仕事をしました。 rpmでシンボリックリンクをパッケージ化する方法を見つけ、opensslの標準インストールを反映するように名前を変更し、rpmを再回転しました。インストールに問題はありません。その後、opensshをインストールしましたが、同じエラーが発生しました!
今ボックスには次のものが含まれています。
[root@local_host ]# ls -l /lib/libcrypto*
lrwxrwxrwx 1 root root 27 Jan 21 14:16 /lib/libcrypto.so.1.0.0 -> /usr/lib/libcrypto.so.1.0.0
lrwxrwxrwx 1 root root 27 Jan 21 14:16 /lib/libcrypto.so.6 -> /usr/lib/libcrypto.so.1.0.0
[root@local_host ]# ls -l /usr/lib/libcrypto*
lrwxrwxrwx 1 root root 27 Jan 21 14:16 /usr/lib/libcrypto.so -> /usr/lib/libcrypto.so.1.0.0
-rwxr-xr-x 1 root root 1815536 Jan 21 05:43 /usr/lib/libcrypto.so.1.0.0
[root@local_host ]# rpm -ql openssl-1.0.1l
...
/lib/libcrypto.so.1.0.0
/lib/libcrypto.so.6
/usr/lib/libcrypto.so
/usr/lib/libcrypto.so.1.0.0
今、すべてが正しい位置にあるはずです。私が逃したものは何ですか?
答え1
RPMデータベースの内容とファイルシステムの内容は独立しています。
libcryptoがRPMからインストールされたことを証明するには、ファイルがrpmに属していることを確認する必要があります。
rpm -qf /lib/libcrypto.so.1.0.0
rpm -qf /lib/libcrypto.so.1.0.1l
またはあなたはできます
rpm -ql {RPM of libcrypto}
答え2
ああ!
私は以下を追加しました:
Provides: libcrypto.so.1.0.0 libssl.so.1.0.0
specファイルに再度回転してインストールします。今.... opensshは問題なくインストールされます!
今質問は…なぜ? openssh.specファイルにライブラリまたは前提条件は表示されません。
修正する
要件について説明していただきありがとうございます。属性がAutoReqProv
「いいえ」に設定されていることがわかりました。 「はい」でなければなりません。これでうまくいきます(上記のProvide行を追加する必要はありません)。ありがとうございます!