如何通过命令行(可能是通过apt-get,aptitude或apt-cache)确定软件包是否为元软件包?
我试过了:
apt-cache show texlive-full
apt-cache showpkg texlive-full
但我可以告诉此程序包的唯一方法是meta,方法是阅读“ en-description”字段。
是否有一种更自动的方式来执行此操作,是否可以回答“是/否”,或者至少具有诸如“ en-description”之类的字段专用于此?
如何通过命令行(可能是通过apt-get,aptitude或apt-cache)确定软件包是否为元软件包?
我试过了:
apt-cache show texlive-full
apt-cache showpkg texlive-full
但我可以告诉此程序包的唯一方法是meta,方法是阅读“ en-description”字段。
是否有一种更自动的方式来执行此操作,是否可以回答“是/否”,或者至少具有诸如“ en-description”之类的字段专用于此?
Answers:
没有元包的正式定义。非正式的定义是,metapackage是一个仅出于依赖关系而安装的软件包,不包含其自己的有用文件。
您可以将元包定义为不包含文件的包。无法从软件包数据库中确定这一点。您可以使用文件数据库并检查该软件包仅包含目录(许多此类软件包包含一些目录)。实际上,大多数元软件包在以下位置包含一些文件/usr/share/doc/<package name>
:copyright
文件,变更日志,有时还包含更多文件。这是一个近似的定义,将metapackage定义为仅包含/usr/share/doc/<some directory>
(而不是在其子目录中)和前导目录中的文件:
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-get autoremove
,aptitude交互界面中aptitude (un)markauto
的M
命令。
apt-get install texlive-full
,apt-get purge texlive-full; apt-get autoremove
也没有删除所有已安装的依赖项。我在某处读到这是因为texlive-full是一个metapackage,这是metapackage的正常行为,但是也许这是错误的。另一方面,aptitude似乎可以删除自动安装的依赖项。
您可以尝试输入
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
,但是它应该可以快速找到要查找的大多数metapackage。如果找不到您要查找的所有内容,那么最简单的方法是在中的metapackage部分中查找Synaptic
。