web-dev-qa-db-ja.com

インストールされたライブラリで依存関係の解決に失敗する

Rpmをインストールしようとすると、次のエラーが発生します。

---> Package geramer-server.x86_64 0:3.6.0.117-1 will be an update
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: geramer-server-3.6.0.117-1.x86_64
---> Package geramer-ui.x86_64 0:3.6.0.98-1 will be updated
---> Package geramer-ui.x86_64 0:3.6.0.117-1 will be an update
--> Finished Dependency Resolution
Error: Package: geramer-server-3.6.0.117-1.x86_64 (/geramer-server-3.6.0.117.x86_64)
           Requires: libcrypto.so.10(libcrypto.so.10)(64bit)

私の最初の考えは、libcrypto.soがインストールされていないことでした。しかし、これはそうではありません、以下を参照してください:

$ ldconfig -p | grep libcrypto.so
    libcrypto.so.10 (libc6,x86-64) => /usr/lib64/libcrypto.so.10

ディスクにも存在します:

$ ls -l /usr/lib64/libcrypto.so.10
lrwxrwxrwx 1 root root 18 Dec  4 13:11 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.0

また、RPMはそれを認識しています。

$ yum whatprovides "*/libcrypto.so.10"
Loaded plugins: product-id, rhnplugin, subscription-manager
*Note* Red Hat Network repositories are not listed below. You must run this command as root to access RHN repositories.
openssl-1.0.0-25.el6_3.1.x86_64 : A general purpose cryptography library with TLS implementation
Repo        : installed
Matched from:
Filename    : /usr/lib64/libcrypto.so.10

だから私が見逃しているアイデアはありますか?

よろしく、アンディ

12
Andi

依存関係にはモジュール名があり、パッケージ間の衝突を防ぐために括弧内にリストされています。ただし、RHELのopensslまたはFedoraのopenssl-libsは、2つのアーキテクチャーの4つの異なるモジュール名をlibcrypto.so.10に提供します。

$ rpm -q --provides openssl-libs | grep libcrypto.so.10
libcrypto.so.10()(64bit)
libcrypto.so.10(OPENSSL_1.0.1)(64bit)
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)
libcrypto.so.10
libcrypto.so.10(OPENSSL_1.0.1)
libcrypto.so.10(OPENSSL_1.0.1_EC)
libcrypto.so.10(libcrypto.so.10)

CentOS too はRHELベースです。

あなたの場合、opensslはモジュール名なしでlibcrypto.so.10のみを提供しているように見えます。これにより、geramer-serverはモジュールlibcrypto.so.10からlibcrypto.so.10を必要とするため、依存関係がないと考えます。

6
divanov

私はこのスレッドが少し古いことを知っていますが、この問題に最近遭遇し、特に@divanovの回答が問題のデバッグに役立つため、それを修正するために何をしたかを共有したいと思いました。

私の場合、特定のpostgres rpm(postgresql91)をインストールできず、同じエラーが発生しました。

Error: Package: postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64 (/postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64)
           Requires: libcrypto.so.10(libcrypto.so.10)(64bit)
Error: Package: postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64 (/postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64)
           Requires: libssl.so.10(libssl.so.10)(64bit)

基本的に、インストールされているopensslのバージョンをアップグレードすることで問題を解決できました。この記事の執筆時点では、openssl-1.0.1e-15はCentOS(6)リポジトリで入手できます。ここでは openssl-1.0.1e-15.el6.x86_64.rpm であり、libsslを提供しています以前は存在しなかったlibcrypto依存関係。
インストールするには、次のことができます。

Sudo yum install http://mirror.centos.org/centos/6/os/x86_64/Packages/openssl-1.0.1e-15.el6.x86_64.rpm

この場合も、CentOSリポジトリのバージョンが変更されると、そのURLは有効でなくなる可能性があります。

さて、悲惨な詳細については...

もともと、私のマシンにはopenssl-1.0.0-27.el6_4.2.x86_64.rpmがインストールされていましたが、私のpostgres rpmが必要とするすべてのパッケージが提供されていませんでした。

> rpm -q --provides openssl
config(openssl) = 1.0.0-27.el6_4.2
...
libcrypto.so.10()(64bit)
...  
libssl.so.10()(64bit)  
...

新しいopensslバージョンをインストールした後:

> rpm -q --provides openssl
config(openssl) = 1.0.1e-16.el6_5.4
...
libcrypto.so.10()(64bit)  
libcrypto.so.10(OPENSSL_1.0.1)(64bit)  
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)  
libcrypto.so.10(libcrypto.so.10)(64bit)  
...
libssl.so.10()(64bit)  
libssl.so.10(OPENSSL_1.0.1)(64bit)  
libssl.so.10(OPENSSL_1.0.1_EC)(64bit)  
libssl.so.10(libssl.so.10)(64bit)  
...

そして今、みんな幸せです...

結論として、opensslの新しいバージョンをインストールすると、必要な依存関係が提供されます。幸運を!

10
scott

この link から適切なrpmパッケージをダウンロードしてください。

具体的には

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-libs-1.0.2k-16.el7.x86_64.rpm
rpm -ivh openssl-libs-1.0.2k-16.el7.x86_64.rpm --force

その後 yum installパッケージを再度。

1
MeadowMuffins

Opensslおよびopenssl-libsをRHEL7またはCentOS 7の次のコマンドで同時にインストールしてみてください。

Sudo yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-1.0.2k-8.el7.x86_64.rpm http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-libs-1.0.2k-8.el7.x86_64.rpm

Opensslとopenssl-libsの両方が依存関係にあり、Sudoを使用せずに実行すると、古いバージョンとの競合の問題が発生する可能性があるため、相互に必要です。

1
KUMAR MAYANK

/etc/yum.confのexclude行からopensslを削除することで、これを修正できました。サーバーを管理しているため、デフォルトでそこに配置されました。次に、必要なものの通常のyumインストールを実行したところ、問題なく動作しました。

1
Jordan

Openssl rpmのローカルコピーを作成するためにyumdownloaderを使用しました。次に、-e -p PACKAGEフラグを付けて rpmrebuild を使用して、欠落しているProvidesを追加し、新しいrpmを作成しました。次に、その結​​果のアーティファクトをインストールしました。 Releaseを増やすことも役に立ちました。

0
Toddius Zho
0
하늘치