我的系统上有一个软件包列表,这些软件包被再次安装和删除,但未被清除,即仍然有很多配置文件等。
输出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
替换。-y
apt-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
已删除但未被清除的软件包出现在开头的输出中rc
。awk
挑选出第二列,即软件包的名称,并以空格分隔打印它们。