Linux

解決安裝 rpm 包的依賴關係

  • September 4, 2013

我正在使用 RHEL6

嗨,我已經創建了 yum 儲存庫,當我嘗試安裝 rpm 時,我從他們的網站下載了 snort rpm 包,但出現錯誤,例如

snort-2.9.5.3-1.f18.i386.rpm

1:snort-2.9.5.3-1.i386 requires libsfbpf.so.0
1:snort-2.9.5.3-1.i386 requires libdnet.so.1
1:snort-2.9.5.3-1.i386 requires libpcre.so.1

1)我嘗試在網際網路上查找這些文件,但找不到任何

2)我如何使用 yum 安裝 snort,我試過yum install \Desktop\snort-2.9.5*它拋出錯誤,我的依賴項失敗

錯誤:

Resolving Dependencies
--> Running transaction check
---> Package snort.i386 1:2.9.5.3-1 set to be updated
--> Processing Dependency: libdnet.so.1 for package: 1:snort-2.9.5.3-1.i386
--> Processing Dependency: libpcre.so.1 for package: 1:snort-2.9.5.3-1.i386
--> Processing Dependency: libsfbpf.so.0 for package: 1:snort-2.9.5.3-1.i386
--> Finished Dependency Resolution
Error: Package: 1:snort-2.9.5.3-1.i386 (/snort-2.9.5.3-1.f18.i386)
          Requires: libsfbpf.so.0
Error: Package: 1:snort-2.9.5.3-1.i386 (/snort-2.9.5.3-1.f18.i386)
          Requires: libdnet.so.1
Error: Package: 1:snort-2.9.5.3-1.i386 (/snort-2.9.5.3-1.f18.i386)
          Requires: libpcre.so.1
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

如何安裝 snort,我什至嘗試安裝 fwbuilder 但失敗了

如果您需要找出哪些 repo 包包含特定文件,您可以嘗試(例如):

yum provides "*/libdnet.so.1"

這使用 shell globbing,因此“*/”涵蓋了 yum 將通過絕對路徑名查找的事實。這是必要的。 請注意,它會搜尋您的儲存庫,而不僅僅是已安裝的軟體包。對於上面使用 F17 的範例,我得到:

libdnet-1.12-8.fc17.i686 : Simple portable interface to lowlevel networking routines
Repo        : fedora
Matched from:
Filename    : /usr/lib/libdnet.so.1



libdnet-1.12-8.fc17.x86_64 : Simple portable interface to lowlevel networking routines
Repo        : fedora
Matched from:
Filename    : /usr/lib64/libdnet.so.1

這個相當簡單,但由於這是一個文件名搜尋,您可能經常會得到很多點擊,並且必須對您真正要查找的內容進行深思熟慮的猜測。

yum provides匹配多個 .rpm 欄位標頭,因此您實際上不必搜尋特定文件(但始終適用 shell glob 語法;該Provides:欄位通常包含內容)。例如,這裡只是簡單yum provides libdnet的工作 - 當然更常見和直接:

yum search libdnet

引用自:https://unix.stackexchange.com/questions/89422