如何从包中删除所有程序?
当您安装像postgresql这样的程序时,它会为其上一个版本安装几个程序。
安装后如何删除所有这些包? 因为使用
apt-get remove postgresql
只删除那个头包
由于apt-get autoremove
(由Aaron建议)将删除所有“帮助程序包”似乎没有任何更长时间依赖,有时你想保留其中一些由于某种原因。 因此,如果这涉及到您,另一种可能性是:
$(apt-cache depends postgresql|awk '{print "sudo apt-get remove "$NF}')
使用Bash作为shell,这基本上可以执行以下操作:
-
apt-cache depends postgresql
会列出postgresql所依赖的所有包,包括postgresql本身。 但是每一行看起来都depends on:
– 所以我们将输出管道输出到…… -
awk '{print "sudo apt-get remove "$NF}'
,它将取每行的最后一个字(这是包名称),并在它之前用我们想要的命令打印出来:sudo apt-get remove
(你当然也可以使用apt-get purge
)。 - 最后,使用
$()
构造,我们建议Bash将输出解释为要执行的命令。
您也可以替换第3步,而是将输出重定向到文件中:
apt-cache depends postgresql|awk '{print "sudo apt-get remove "$NF}' >pg_remove.sh
然后检查文件,可选择进行一些调整(例如注释/删除要保留包的行),最后使用
bash pg_remove.sh
现在你有很多选择的可能性:)
编辑:检查更复杂的元数据包,例如lubuntu-desktop,上面的语句需要改进:
apt-cache depends |grep "Depends on"|awk '{print "sudo apt-get remove "$NF}'
需要使用grep
将结果限制为依赖项(并跳过推荐等)。
重要提示:您应该仅将此用于元数据包! 否则,你最终可能会得到一个空磁盘(例如postgresql-9.1依赖于libc6,并且删除libc6肯定会适得其反,因为很多软件包需要它)。
所以要小心,最好先重定向到文件(如上所述)并在执行前进行调查。
HI Alt + Ctrl + T并运行:
sudo apt-get autoremove
此命令删除不再需要的包,这是因为删除了依赖于它们的包(例如postgresql)。
您始终可以使用以下方法清除配置文件:
sudo apt-get autoremove --purge
要进一步清洁,请使用以下内容:
sudo apt-get install deborphan sudo apt-get autoremove --purge deborphan
简单地按照以下命令:
sudo apt-get install deborphan sudo apt-get autoremove --purge postgresql sudo apt-get autoremove --purge `deborphan`