這個簡短的迷你教程出現為 回應我們的一位讀者Felipe的關注,他給我們寫信問:«我怎麼知道哪些應用程序正在使用Java?«。 好吧,我不認為有一種方法可以知道,但是有一種簡單的方法可以知道 存儲庫中列出的哪些軟件包(即哪些應用程序)取決於JAVA軟件包。 相同的方法可以用於任何其他軟件包,例如找出哪些應用程序依賴於 MONO. |
最常見的是想找出必須安裝哪些其他軟件包才能使軟件包X正常工作。 這些必需的軟件包稱為依賴項,可以這樣找到:
apt-cache取決於mypackage
您也可以轉到Synaptic,找到軟件包, 右鍵單擊它>屬性>依賴關係.
但是,本文的目的是要找出恰恰相反的情況:哪些軟件包具有X軟件包作為依賴項。 換句話說,在這種情況下,我們知道“母親”軟件包,並且我們想知道還有哪些其他軟件包要求安裝該“母親”軟件包才能正常工作。
讓我們繼續看示例,以更好地理解問題。 讓我們看看如何檢測依賴於openjdk-6-jre軟件包的軟件包。 也就是說,如何檢測依賴於JAVA的存儲庫中列出的那些應用程序。
我打開一個終端並寫道:
apt-cache rdepends openjdk-6-jre
將會出現一長串的軟件包,包括OpenOffice,FreeMind,OpenCol等。
如何找到正確的“母親”包?
好的,到目前為止,一切都很容易,但是如何找到應該搜索的“母親”包呢? 好吧,這需要一些專業知識和事先分析。
假設我想了解所有基於MONO的應用程序。 在那種情況下,我所做的就是查找我知道使用MONO的應用程序(GBrainy)的依賴關係,並在此基礎上檢測“母親”包並尋找逆向依賴關係。 烏夫,這似乎很困難,但是這是胡說八道。
我打開一個終端並寫道:
apt-cache取決於靈活性
結果如下:
取決於:單運行時
|取決於:libc6
|取決於:libc6.1
取決於:libc0.1
取決於:libglib2.0-cil
取決於:libgtk2.0-0
取決於:libgtk2.0-cil
取決於:liblaunchpad-integration1.0-cil
取決於:libmono-addins-gui0.2-cil
取決於:libmono-addins0.2-cil
取決於:libmono-cairo2.0-cil
取決於:libmono-corlib2.0-cil
取決於:libmono-posix2.0-cil
取決於:libmono-system2.0-cil
取決於:librsvg2-2
取決於:mono-csharp-shell
在我看來,mono-runtime可能是一個不錯的選擇,因此我決定搜索所有依賴mono-runtime的軟件包:
apt-cache rdepends單運行時
瞧! 出現所有使用MONO的軟件包。
要查看依賴於某個MONO軟件包的所有軟件包的完整列表,我們可以編寫:
apt-cache rdepends mono *
感謝您回答Pablo,也感謝您的帖子🙂
巴勃羅,你是我的偶像!
優秀的職位。
大! 感謝您的數據!
對於那些使用總分配的人…………開玩笑
對於使用基於RPM的軟件包管理器的用戶,使用此命令
rpm -qR軟件包
例如:
linux @ dhcppc3:〜> rpm -qR xmms
/ bin / sh的
/ bin / sh的
rpmlib(PayloadFilesHavePrefix)<= 4.0-1
rpmlib(CompressedFileNames)<= 3.0.4-1
libICE.so.6
libSM.so.6
libX11.so.6
libXxf86vm.so.1
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.4)
libc.so.6(GLIBC_2.4)
libc.so.6(GLIBC_2.7)
libdl.so.2
libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libgdk-1.2.so.0
libglib-1.2.so.0
libgthread-1.2.so.0
libgtk-1.2.so.0
libpthread.so.0
libpthread.so.0(GLIBC_2.0)
libpthread.so.0(GLIBC_2.1)
libpthread.so.0(GLIBC_2.3.2)
libxmms.so.1
rpmlib(PayloadIsLzma)<= 4.4.6-1