如何清除之前仅删除的软件包?

如何清除之前仅删除的软件包?

我的系统上有一个软件包列表,这些软件包被再次安装和删除,但未被清除,即仍然有很多配置文件等。

输出dpkg --get-selections | grep deinstall列出了大约 85 个我不需要并且想要完全清除的不同包。

所以我的简短问题是,我经过一番尝试后最终决定提出的,结果这个问题, 是:

我如何才能彻底清除先前安装的软件包已经被删除?

当然,重新安装然后清除不是一个选择。

答案1

我刚刚发现以下命令有效:

sudo apt-get purge $(dpkg -l | grep '^rc' | awk '{print $2}')

答案2

dpkg --get-selections | grep deinstall生成包含单词“ ”的包名称列表deinstall

$ dpkg  --get-selections | grep deinstall
account-plugin-windows-live         deinstall
debarchiver                         deinstall
flashplugin-installer               deinstall
    ...

通过要求awk仅打印第一个字段,我们得到:

$ dpkg --get-selections | awk '$2 == "deinstall" {print $1}'
account-plugin-windows-live
debarchiver
flashplugin-installer
    ...

现在我们有了包列表,xargs我们将把包列表提供给一个命令(或者多个命令,如果列表足够长):

dpkg --get-selections | awk '$2 == "deinstall" {print $1}' | xargs sudo apt-get purge --dry-run

当您对模拟结果满意时,请在命令中--dry-run替换。-yapt-get

相关文件:

man dpkg awk xargs apt-get

答案3

我的五毛钱,一句简单的台词:

第一次测试

dpkg --get-selections | awk '$2=="deinstall" {system("sudo apt-get --dry-run purge "$1)}'

再见

dpkg --get-selections | awk '$2=="deinstall" {system("sudo apt-get -y purge "$1)}'

例子

% dpkg --get-selections | grep deinstall
nginx-common                    deinstall

% dpkg --get-selections | awk '$2=="deinstall" {system("sudo apt-get -y purge "$1)}'

% dpkg --get-selections | grep deinstall
[no output]

答案4

几天前我也问过这个问题。我想到了

apt-get purge $(dpkg -l | awk 'BEGIN{ORS=" "} /^rc/{ print $2}')

dpkg -l已删除但未被清除的软件包出现在开头的输出中rcawk挑选出第二列,即软件包的名称,并以空格分隔打印它们。

相关内容