rpmでは依存関係が欠落していると報告していますが、存在しますか?

rpmでは依存関係が欠落していると報告していますが、存在しますか?

このrpmをインストールしたいのですが(もちろんインストールできますが、-nodepsこの「ソリューション」が気に入らない)。

LANG=C rpm -Uvh /home/pippiripi/rpmbuild/RPMS/x86_64/oracle-fdw-27012018git-1.el7.centos.x86_64.rpm 
error: Failed dependencies:
    libclntsh.so.12.1()(64bit) is needed by oracle-fdw-27012018git-1.el7.centos.x86_64

もちろんlibclntsh.so.12.1システムでは:

ldconfig -p|grep libclntsh.so.12.1
    libclntsh.so.12.1 (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1

そして対応するrpmがインストールされました。

rpm -qf /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1
oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64

ライブラリは64ビットです。

 file /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1
/usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=068dc0a57c8b0310180f2a659b71de4115ba9020, not stripped

解決策?

答え1

質問現れるこれは、「インスタントクライアント」パッケージがライブラリをまったくリストしていないためですProvides:

これは排他的なパッケージでは非常に一般的ですが、公平に言えば、これらのライブラリは一般的な場所にインストールされず、ほとんどの場合Provides:誤解を招きます。

最善の解決策は、おそらく.specfdwパッケージで自動要求/提案処理を無効にし、「インスタントクライアント」パッケージを手動で追加して一覧Requires:表示することです(私の考えは> =ビルドするバージョンに関係なく)。BuildRequires:

答え2

システムにインストールされているライブラリは32ビットバージョンです。 64ビットrpmをインストールしようとしています(名前:oracle-fdw-27012018git-1.el7.centosにあります)。x86_64.rpm)、同じライブラリの64ビットバージョンが必要です。依存関係は libclntsh.so.12.1 だけでなく libclntsh.so.12.1() です。(64ビット)

したがって、32ビットバージョンのoracle-fdwを検索するか、64ビットバージョンのoracle-instantclient12.2-basicをインストールする必要があります。

編集する:以下を提供するパッケージを検索する必要があります。libclntsh.so.12.1()(64ビット)。明らかに、oracle-instantclient12.2-basicバージョンには対応する機能はありません。システムを確認するには:rpm -q --whatprovides "libclntsh.so.12.1()(64bit)"結果が出ない可能性があるため、この機能を提供するrpmを検索する必要があります。これらの依存関係を管理するyumパッケージマネージャを使用することをお勧めします。zypper

関連情報