如何检查是否安装了虚拟包?

在以下问题中,有一个在安装包之前检查包的解决方案:

如何检查我的服务器上是否安装了软件包?

但是,我发现这对虚拟包不起作用。

有没有办法遍历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以获取更多信息,例如如何使用通配符。