答案1
已经存在一个命令apt-cache dumpavail
,它将列出所有已启用存储库中的所有可用软件包。在后台,它实际上从存储在/var/lib/apt/lists/
目录中的文件读取(我已经执行了strace
该命令,这就是输出显示的内容)。我猜 Gnome Software 会解析这些文件并将其组织到类别中。
问题是实际数据中有以Package:
软件包名称开头的行以及Section:
它们所属的行,但Section:
行的组织方式与 Gnome Software 中的并不完全相同。但是,使用一些命令行魔法,我们可以接近这样的效果。我建议使用一个函数
filter_sections()
{
apt-cache dumpavail | \
awk -v SEARCH="$@" '/^Package:/{ PKG=$0 }\
/Section:/ && $0~SEARCH {printf PKG" "$0"\n"}'
}
利用该函数我们可以按部分列出所有包,例如:
$ filter_sections web | head
Package: apache2 Section: web
Package: awstats Section: web
Package: curl Section: web
Package: heat-api Section: web
Package: heat-api-cfn Section: web
Package: heat-api-cloudwatch Section: web
Package: heat-common Section: web
Package: heat-engine Section: web
Package: javascript-common Section: web
Package: libapache2-mod-apparmor Section: web
代码本身相当简单:我们将 的输出传递给apt-cache dumpavail
将awk
每个包名称存储到变量中,如果该Section:
行还包含我们匹配的字符串,我们将打印包名称和部分。
至于列出章节本身,也相当容易
apt-cache dumpavail | awk '/Section:/' | sort | uniq
这种方法的另一个好处是,其中一些会提到Sections
包属于哪个存储库,例如universe/python
或multiverse/web
。但是,该函数将搜索所有 和 其中 ,但如果需要,我们总是可以使用awk
更多进行筛选
答案2
你可能正在寻找aptitude
。如果你的系统中没有安装它,请继续打开终端并输入
sudo apt-get install aptitude
来sudo aptitude
启动它。
如果您想使用 搜索和过滤结果grep
,则可以使用sudo apt-cache search
或sudo aptitude search