使用 zypper
,我可以获取一个软件包 A 依赖于软件包 B。但是我需要知道的是哪些软件包依赖于软件包 B。
是否有一种方法来生成逆向依赖列表?
使用 zypper
,我可以获取一个软件包 A 依赖于软件包 B。但是我需要知道的是哪些软件包依赖于软件包 B。
是否有一种方法来生成逆向依赖列表?
您可以使用以下命令在包中搜索需要某个特定软件包的依赖项:
zypper se --requires packagename
此外,您还可以使用以下命令只在已安装的软件包中搜索:
zypper se -i --requires packagename
例如,要查找需要libpng的软件包:
# zypper se -i --requires libpng
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
--+-----------------------------+---------------------------------------------------------------------+--------
i | DirectFB | Graphics Library for Framebuffer Devices | package
i | MPlayer | Multimedia Player | package
i | cairo-devel | Development environment for cairo | package
etc.
Zypper 1.14.33+有一个--requires-pkg
选项,可能会比--requires
选项产生更多的结果。详情请见这里。
# zypper se --requires-pkg packagename
# zypper help search | grep -A1 requires-pkg
--requires-pkg Search for all packages that require any of the provides of the
package(s) matched by the input parameters.
--requires
对我不起作用。我在帮助文档中找到了--requires-pkg
,它可以正常工作。我不知道为什么。 - djoreilly假设您想知道谁依赖于libpng14
在tcsh中:
zypper search -i | cut -d \| -f 2 | tr -s '\n' ' ' > z.txt
foreach i ( `cat z.txt` )
zypper info --requires $i |grep libpng14 &&echo $i
end
过一会儿,您将开始获得以下结果:
libpng14.so.14()(64bit)
libpng14.so.14(PNG14_0)(64bit)
DirectFB
libpng14.so.14()(64bit)
libpng14.so.14(PNG14_0)(64bit)
MPlayer
你需要将包与grep消息分开。
--whatrequires CAPABILITY
Query all packages that require CAPABILITY for proper functioning.
Note that this does not return what requires a given package.
这个有效:
rpm -e --test PKGNAME
来源:man rpm
希望这对你有用:
betatester@myryzen:~/tmp> rpm -qi --requires \`rpm -qa | grep 'package-name'\`
zypper se --requires gdal
显示gdal-devel
,而zypper info --requires gdal-devel
没有列出gdal
作为要求。我理解错了什么? - bers