如何从命令行确定包是否是元包?

如何从命令行确定包是否是元包,可能通过apt-get,aptitude或apt-cache?

我试过了:

apt-cache show texlive-full apt-cache showpkg texlive-full 

但我能告诉这个包的唯一方法是通过阅读“en-description”字段。

是否有一种更自动的方式,这将给我一个是/否响应,或者至少有一个字段,如然后“en-description”专用于此?

元数据包没有正式的定义。 非正式定义是一个元数据包只是为了它的依赖项而安装的,并且不包含它自己的有用文件。

您可以将元数据包定义为不包含文件的包。 无法从包数据库中确定这一点。 您可以使用文件数据库并检查程序包是否只包含目录(许多此类程序包包含几个目录)。 实际上,大多数元数据包都包含/usr/share/doc/的一些文件: copyright文件,更改日志,有时还有一些。 这是一个近似,它将元数据包定义为仅包含/usr/share/doc/ (不在其子目录中)和前导目录中的文件:

 if ! apt-file -F list $package | grep -qvE '^/(usr(/share(/doc(/[^/]*(/[^/]*)?)?)?)?)?$'; then echo "$package looks like a metapackage" fi 

另一种方法是寻找带有debtags的包标签 。 元数据包中常用了几个标记。

 debtags tag ls $package | grep -x -e 'role::metapackage' -e 'role::dummy' -e 'special::meta' 

另一种方法是寻找小尺寸的包装。 每个目录计为4 kB,因此在选择阈值时进行相应的计划(同样,这是一个近似值)。

 aptitude -F '%I %p' search "~n^$package\$" 

反思后,我想知道你的意思是虚拟包而不是元数据包。 虚拟包实际上不是包,而是在Provides:字段中使用的包名称。 您可以使用aptitude search '~v'列出它们。 在一个显示器上运行apt-cache show “无法从包’zcav’中选择版本,因为它纯粹是虚拟的”。 运行aptitude show列出提供它的包。 显示虚拟包的一种简便方法是使用apt-cache :这会为非虚拟包打印一行,并且可能为虚拟包打印多行(每个提供者一行) – 即使存在,也可以判断包是否为虚拟单个提供者,因为提供者的名称不同。

 apt-cache -n search "^$package\$" 

你可以尝试输入

 apt-cache search 'metapackage | meta-package' 

这将给你一个很长的列表,然后使用grep ,说显示所有科学相关的元数据包

 apt-cache search 'metapackage | meta-package' | grep -i science 

这将返回一个长列表(我在这里缩短了)

 science-astronomy - Debian Science Astronomy packages science-astronomy-dev - Debian Science Astronomy-dev packages science-biology - Debian Science Biology packages science-chemistry - Debian Science Chemistry packages science-dataacquisition - Debian Science data acquisition packages science-dataacquisition-dev - Debian Science data acquisition development packages science-distributedcomputing - Debian Science Distributed Computing packages science-electronics - Debian Science Electronics packages science-electrophysiology - Debian Science packages for Electrophysiology science-engineering - Debian Science Engineering packages science-engineering-dev - Debian Science Engineering-dev packages science-geography - Debian Science Geography packages science-highenergy-physics - Debian Science High Energy Physics packages 

您可以使用任意数量的科学替代品,例如KDE来查找所有KDE元数据包。

这可能是你可以用apt-cache做的最好的,但它应该快速找到你想要找到的大部分元数据包。 如果它找不到您正在寻找的所有内容,最简单的方法是查看Synaptic中的metapackage部分。