使 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

並檢查其中之一的依賴關係:

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

更新作業系統是不可能的,而且它是一個封閉的系統,從不連網,所以沒什麼關係。現在我可能能夠刪除造成拖延的軟體包,但是,假設我不能,我如何強制安裝這個軟體包,以便它滿足舊的依賴關係要求?即:讓它「提供」libpcap 0.9.4 soas 以滿足已安裝軟體的要求。

答案1

我建議您更改此文件的來源 rpm;編輯檔案將安裝到的路徑,以免在您要安裝的檔案與提供的檔案之間產生衝突libpcap.so.0.9.4(不得安裝兩個在同一路徑上提供相同檔案的 rpm:s) 。

或從來源 rpm 中刪除那些與您已安裝的文件衝突的文件,它可能是: /usr/lib/libpcap.so.0也可能是/usr/share/man/man3/pcap.3.gz. (一個是符號鏈接,另一個是手冊頁)來自 src rpm:s .spec 文件,然後 rpmbuild 它。

然後就可以安裝了(不是升級)/root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm 與 libpcap-0.9.4 一起以便這些版本可以在您的系統上和平共存。

如果您正在使用 yum,那麼您可能需要編輯您的/etc/yum.conf以添加libpcap到您的 列表中installonlypkgs,這樣 yum 就不會用您剛剛創建的版本替換舊版本的 libpcap ( man 5 yum.conf)。 (如果您使用 yum 而不是普通的 rpm,那麼它可以使用 來追蹤所有事務yum history。它非常強大)。您也可以將.spec來源 rpm 中的檔案中的名稱變更為類似 的名稱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 傳送程式的方式,我認為從長遠來看它很混亂且難以維護。

另一個行動原因可能是您重新建置所有依賴 libpcap v0.9.4 到 v1.0.0 的內容並升級它們。通常,這意味著未來的更新會出現問題,但由於您似乎使用的是 CentOS 5,因此您不必擔心,因為它已經停產了。

您要考慮的最後一個選項是yum remove libpcap,請查看它想要刪除多少個軟體包(yum在您點擊 Y 按鈕並按 Enter 鍵之前不會真正刪除任何內容),因為您可能能夠刪除這些套件並使用 yum,如果事實證明你不能,你可以使用yum history undo命令回滾(我不記得在哪個版本的 yum 中這是在 yum 中實現的,所以首先檢查這個子是否命令可供您使用) 。另外,請確保您的存儲庫指向包含這些文件的可用存儲庫。

相關內容