获取 Debian 系统上未安装的软件包列表

获取 Debian 系统上未安装的软件包列表

我正在编写一个脚本来打印未安装的软件包列表。

#!/bin/bash

declare -a LIST_OF_PACKAGES=("php5" "nginx")

for i in "${LIST_OF_PACKAGES[@]}"
do
        PACKAGE_STATUS=`dpkg-query -W -f='${Status} ${Version}\n' $i | grep --line-buffered -v "install ok"`
        ECHO=`echo $i * $PACKAGE_STATUS * $i`
done

我试图将以下几行包含在 for 循环中:

echo $ECHO | awk -F "*" '{print $1}' | sed '/^\s*$/d'

基本上,我试图 grep 未安装的软件包。所以我根据 "*" 裁剪列表。

电流输出:

unknown ok not-installed

所需输出:

nginx * unknown ok not-installed

我想忽略已安装的软件包。

答案1

您可以直接使用 aptitude 列出未安装的软件包:

aptitude search "!(~i)"

您还可以使用更明确但等效的形式:

aptitude search "?not(?installed)"

如果只想打印包名称,可以添加格式选项:

 aptitude -F "%p" search "?not(?installed)"

阅读来自 aptitude 的搜索词参考,很有用。

相关内容