だから私は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のファイルの名前を、私が通常のものと同じ名前に変更することもできます。libpcap
installonlypkgs
man 5 yum.conf
yum history
.spec
libpcap14
$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
削除するパッケージの数を確認することです(yum
Yボタンを押してEnterを押すまで、実際には何も削除されません)。可能これらのパッケージを削除してyumを使用できます。そうでない場合は、yum history undo
コマンドを使用してロールバックできます。 (yumのどのバージョンでこれがyumに実装されているか覚えていないので、最初にこのサブコマンドを使用できることを確認してください。)。また、リポジトリーがこれらのファイルを含む使用可能なリポジトリーを指していることを確認してください。