如何检索 (K)ubuntu 上按类别排序的已安装软件包列表

如何检索 (K)ubuntu 上按类别排序的已安装软件包列表

我正在使用 Kubuntu。我想获取系统上已安装软件包的列表,特别是按类别对它们进行排序,即在 Muon 软件包管理器的类别过滤器选项卡中看到的那样。为了便于参考,请参见下图中窗口的左侧部分。

在此处输入图片描述

在 Muon 内部,有一个选项可以在文件菜单中导出已安装包的列表,但它只是导出一个简单的列表(我认为它执行命令dpkg --get-selections),这不是我想要的。

我尝试查看、和的手册页dpkgdpkg-queryapt未能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

相关内容