我有两个软件包在用 pacman 在 arch 上安装一个新软件包后发生冲突。
如何列出依赖于冲突软件包的所有已安装软件包?
或者更一般地说:
如何列出依赖于某个其他软件包的所有已安装软件包
答案1
要列出依赖关系,请使用pacman -Si
(ie, pacman --sync --info
) 或 pacman -Qi
(ie, pacman --query --info
)。
列出反向依赖关系:(pacman -Sii
即pacman --sync --info --info
;是的两个信息)。
拱门Linux:查询包依赖关系
答案2
如何列出依赖于某个其他软件包的所有已安装软件包
对于一级依赖项使用pacman -Qi package_name | grep 'Depends On'
例如:
$ pacman -Qi jack | grep 'Depends On'
Depends On : alsa-lib db glibc gcc-libs libsamplerate libzita-alsa-pcmi.so=0-64 libzita-resampler.so=1-64
要查看包的依赖关系树,请使用pactree
它所拥有的pacman-contrib
例如:
$ pactree jack
jack
├─alsa-lib
│ ├─glibc
│ │ ├─linux-api-headers provides linux-api-headers>=4.10
│ │ ├─tzdata
│ │ └─filesystem
│ │ └─iana-etc
│ ├─alsa-topology-conf
│ └─alsa-ucm-conf
├─db
│ ├─gcc-libs
│ │ └─glibc provides glibc>=2.27
│ └─bash provides sh
│ ├─readline provides readline>=7.0
│ │ ├─glibc
│ │ ├─ncurses
│ │ │ ├─glibc
│ │ │ └─gcc-libs
│ │ └─ncurses provides libncursesw.so=6-64
│ ├─glibc
│ └─ncurses
├─glibc
├─gcc-libs
├─libsamplerate
│ └─glibc
├─zita-alsa-pcmi provides libzita-alsa-pcmi.so=0-64
│ ├─alsa-lib
│ ├─gcc-libs
│ └─glibc
└─zita-resampler provides libzita-resampler.so=1-64
├─gcc-libs
└─glibc
要查看包的依赖树,请将反向标志传递-r
给pactree
答案3
对于多级依赖关系,请使用包pactree
附带的命令pacman
。使用该选项,-r
您可以找到依赖于给定包的顶级应用程序/包。
这里有一个例子:
pactree -r gst-plugins-bad-libs
gst-plugins-bad-libs
├─gst-plugins-bad
│ ├─cheese
│ └─gnome-video-effects
│ └─cheese
├─gtk4
│ ├─gnome-desktop-4
│ │ └─xdg-desktop-portal-gnome
│ │ └─xdg-desktop-portal
│ │ └─flatpak
│ └─libadwaita
│ └─xdg-desktop-portal-gnome
└─libcheese
└─cheese
在这种情况下,最重要的应用程序是flatpak
和cheese
答案4
前面的答案都是不正确的。如果你想知道哪些包依赖于包X,请使用以下命令:
pacman -Qi | grep -E 'Depends On|Name' | grep -B 1 -E 'Depends On.*PACKAGE_X.*' | grep Name | awk -F ':' '{print $2}'