如何检查是否安装了虚拟包?
在以下问题中,有一个在安装包之前检查包的解决方案:
如何检查我的服务器上是否安装了软件包?
但是,我发现这对虚拟包不起作用。
有没有办法遍历apt-get自动选择并检查正确的包名称?
您可以使用grep-status (软件包dctrl-tools
,默认情况下未安装)来查找提供某些虚拟软件包的所有已安装软件包:
$ grep-status -FProvides,Package -sPackage,Provides,Status awk Package: mawk Provides: awk Status: install ok installed Package: gawk Provides: awk Status: install ok installed
除非只有一个提供程序,否则Apt不会安装虚拟包。 如果另一个包依赖于虚拟包,它通常也会命名一个真正的包作为替代(即build-essential取决于“libc6-dev | libc-dev” – 第二个是虚拟包)。
未安装虚拟包,因此无法检查其状态。 您可以使用apt-cache showpkg
查看提供虚拟包的软件包,然后检查是否安装了任何软件包。
您可以使用包名称查询已安装包的数据库
dpkg -l packagename
并且您可以列出packagename中的所有文件
dpkg -L packagename
阅读man dpkg
以获取更多信息,例如如何使用通配符。