我正在使用 Kubuntu。我想获取系统上已安装软件包的列表,特别是按类别对它们进行排序,即在 Muon 软件包管理器的类别过滤器选项卡中看到的那样。为了便于参考,请参见下图中窗口的左侧部分。
在 Muon 内部,有一个选项可以在文件菜单中导出已安装包的列表,但它只是导出一个简单的列表(我认为它执行命令dpkg --get-selections
),这不是我想要的。
我尝试查看、和的手册页dpkg
,dpkg-query
但apt
未能apt-get
找到任何有用的信息。
我得到的唯一线索是,手册指出dpkg-query
可以使用某些命令选项对输出进行排序,但我还没有找到如何按类别排序。
有什么线索吗?
答案1
您确实可以使用dpkg-query
和其他一些工具来实现这一点:
dpkg-query -Wf='${package}\t${Section}\t${status}\n' | grep installed |
gawk '{print $2"\t"$1}' | sort
解释:
dpkg-query -Wf='${package}\t${section}\t${status}\n'
:此命令将列出所有软件包(-W
),如package name
<TAB>package section
<TAB>package status
。摘自dpkg-query
手册页:-f, --showformat=format This option is used to specify the format of the output --show will produce. The format is a string that will be output for each package listed.
因此,此命令单独产生如下输出:
$ dpkg-query -Wf='${package}\t${Section}\t${status}\n' | head a2ps text install ok installed abiword editors install ok installed abiword-common editors install ok installed abiword-plugin-grammar editors install ok installed abiword-plugin-mathview editors install ok installed accountsservice admin install ok installed acl utils install ok installed acpi utils install ok installed acpi-support-base admin install ok installed acpid admin install ok installed
grep installed
:仅选择描述状态为 的包的那些行installed
。gawk '{print $2"\t"$1}'
:使用 gawk 仅打印我们感兴趣的两个字段(包名称和部分),为了使输出更易于阅读和排序,首先打印部分,然后打印包名称。sort
:由于部分现在是第一个字段,因此sort
按部分对包进行简单排序就足够了。
最终输出如下所示:
admin accountsservice
admin aptdaemon-data
editors libreoffice-impress
fonts fonts-telu
games enemylines3
games enemylines7
gnome cinnamon
libdevel libxmu-dev
libs libapt-pkg4.12
oldlibs hpijs
python python-gi-cairo