列出 APT 中已安装的元包

Del*_*ted 7 apt

元包是自己不安装任何东西,而是依赖于其他包的包。如何列出系统上已安装的元软件包?

enz*_*tib 5

尝试以下命令,该命令会列出"metapackage"apt-cache show输出的部分字段中包含字符串的每个已安装软件包的名称:

apt-cache show $(dpkg-query -Wf '${Package}\n') | 
  awk '$1 == "Package:" { pkg = $2 }; 
       $1 == "Section:" && $2 ~ /metapackage/ { print pkg }'
Run Code Online (Sandbox Code Playgroud)


Joh*_*ney 5

我用了:

apt-cache search . | grep -i "metapackage\|meta-package"
Run Code Online (Sandbox Code Playgroud)

结合:

dpkg --get-selections
Run Code Online (Sandbox Code Playgroud)

在以下脚本中:

awk 'BEGIN{
    FS=" - ";
    findmeta="apt-cache search . | grep -i \"metapackage\|meta-package\"";
    while ((findmeta | getline) > 0) meta[$1]=$2;
    FS=" ";
    findinstalled="dpkg --get-selections";
    while ((findinstalled | getline) > 0) {
        if ($1 in meta) print $1" - "meta[$1]
    }
}'
Run Code Online (Sandbox Code Playgroud)

在一行上:

awk 'BEGIN{FS=" - ";findmeta="apt-cache search . | grep -i \"metapackage\|meta-package\""; while ((findmeta | getline) > 0) meta[$1]=$2; FS=" "; findinstalled="dpkg --get-selections"; while ((findinstalled | getline) > 0) {if ($1 in meta) print $1" - "meta[$1]}}'
Run Code Online (Sandbox Code Playgroud)

结果示例:

emacs - GNU Emacs editor (metapackage)
exim4 - metapackage to ease Exim MTA (v4) installation
linux-headers-amd64 - Header files for Linux amd64 configuration (meta-package)
linux-image-amd64 - Linux for 64-bit PCs (meta-package)
xfce4 - Meta-package for the Xfce Lightweight Desktop Environment
xserver-xorg-input-all - X.Org X server -- input driver metapackage
Run Code Online (Sandbox Code Playgroud)