Package-Management

如何找出其他包依賴於特定包?

  • February 22, 2021

我對linux相當陌生。我用Manjaro。

我跑了pacman -Qe | less,在包列表中,我注意到:

jdk8-openjdk 8.u282-1
jfsutils 1.1.15-7
jre8-openjdk 8.u282-1
jre8-openjdk-headless 8.u282-1

有沒有辦法可以找出哪些包依賴於上面列出的包?

我基本上是想找出我為什麼擁有它們jdk8-openjdk 8.u282-1jre8-openjdk 8.u282-1如果沒有使用它們,我想刪除它們。

但是我怎樣才能知道是否有其他東西在使用它們呢?

pacman -Qi jdk8-openjdk jfsutils jre8-openjdk jre8-openjdk-headless

將顯示有關給定包的資訊,包括依賴它們的包列表(“Required By”)和可選地需要它們(“Optional For”)。

您可能希望對輸出應用過濾器並僅選擇相關資訊:

pacman -Qi jdk8-openjdk jfsutils jre8-openjdk jre8-openjdk-headless |
 awk '/(^Name)|(^Required By)|(^Optional For)/'

pacinfo使用from pacutilspackage可以獲得類似的結果(每行一個依賴項) 。在這種情況下,將local前綴添加到每個包名稱以將結果限制為已安裝的包:

pacinfo local/jdk8-openjdk local/jfsutils ...

Arch Linux 也有pactree來自pacman-contrib包,它是一個依賴樹查看器。我無法檢查這個,因為我不是 Manjaro 使用者,但是查看相關的GitLab 頁面pacmanManjaro 上的包似乎也包含 Arch 的內容pacman-contrib

你可以用它來列出依賴的包jdk8-openjdk

pactree -r jdk8-openjdk

並且,還包括可選依賴項:

pactree -ro jdk8-openjdk

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