RPM がインストールされている他のパッケージの依存関係要件を満たすようにします。

RPM がインストールされている他のパッケージの依存関係要件を満たすようにします。

だから私はjnetpcapを使って私が書いたJavaアプリケーションをインストールしたいと思います。これを行うには、libpcapがv1.0.0以上でなければなりません。私のCentOS 5.8には、インストールされている他のパッケージに必要なlibpcap 0.9.4しかありません。 libpcap 1.4.0のRPMを構築しましたが、それをインストールしようとすると、次の結果が表示されます。

# rpm -Uvh /root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm
error: Failed dependencies:
        libpcap.so.0.9.4 is needed by (installed) ppp-2.4.4-2.el5.i386
        libpcap.so.0.9.4 is needed by (installed) isdn4k-utils-3.2-56.el5.i386
        libpcap >= 14:0.8.3-6 is needed by (installed) ppp-2.4.4-2.el5.i386

そしてそのうちの1つの依存関係を確認してください。

# rpm -qR ppp-2.4.4-2.el5.i386
...
libpcap >= 14:0.8.3-6
libpcap.so.0.9.4

オペレーティングシステムのアップデートも不可能で、インターネットに絶対接続されない閉鎖型システムなので構いません。今私可能遅延パッケージを削除できますが、それを行うことができないと仮定した場合、以前の依存関係要件を満たすようにこのパッケージを強制的にインストールするにはどうすればよいですか。つまり、インストールされたソフトウェアの要件を満たすためにlibpcap 0.9.4を「提供」するようにしてください。

答え1

このファイルのソースrpmを変更することをお勧めします。インストールするファイルと提供されたファイルとの間に競合が発生しないように、ファイルがインストールされるパスを編集しますlibpcap.so.0.9.4(同じパスに同じファイルを提供する2つのrpm)。インストールしないでください:s) 。

または、インストールしたファイルと競合するファイルをソースrpmから削除します。 src rpm:s .spec ファイルで、/usr/lib/libpcap.so.0または/usr/share/man/man3/pcap.3.gz. (1 つはシンボリックリンクで、もう 1 つはマニュアルページ) です。

その後、インストールできます(アップグレードではありません)。/root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm libpcap-0.9.4でしたがって、これらのバージョンはシステム内で平和に共存できます。

yumを使用している場合は、yumが以前のバージョンのlibpcap()を作成したばかりのバージョンに置き換えないように、リストに追加するように/etc/yum.conf編集できます。 (通常のrpmの代わりにyumを使用すると、すべてのトランザクションを追跡するために使用できます。非常に強力です。)ソースrpmのファイルの名前を、私が通常のものと同じ名前に変更することもできます。libpcapinstallonlypkgsman 5 yum.confyum history.speclibpcap14

$LD_LIBRARY_PATHその後、プログラムを起動するスクリプト/コマンドにインストールパッケージパスを追加すると機能します。 (またはLD_PRELOAD最新バージョンのlibpcapを使用してください)。

また、slmが提案することを行うこともできます。これは目標を達成する最速の方法です。rpm2cpio /root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm > libpcap-1.4.0-1.i386.cpioその後、別のフォルダにアーカイブを抽出し、上記のファイルを使用します。しかし、rpmはCentOSのプログラム配信方式であり、長期的に見たときに汚れてメンテナンスが難しいと思います。

対処する必要があるもう1つの理由は、libpcap v0.9.4に依存するすべてをv1.0.0に再構築してアップグレードするためです。通常、これは今後のアップデートに問題があることを意味しますが、CentOS 5を使用しているように見えるため、廃止されたので心配する必要はありません。

考慮すべき最後のオプションは、yum remove libpcap削除するパッケージの数を確認することです(yumYボタンを押してEnterを押すまで、実際には何も削除されません)。可能これらのパッケージを削除してyumを使用できます。そうでない場合は、yum history undoコマンドを使用してロールバックできます。 (yumのどのバージョンでこれがyumに実装されているか覚えていないので、最初にこのサブコマンドを使用できることを確認してください。)。また、リポジトリーがこれらのファイルを含む使用可能なリポジトリーを指していることを確認してください。

関連情報