如何从包中删除所有程序?

当您安装像postgresql这样的程序时,它会为其上一个版本安装几个程序。

安装后如何删除所有这些包? 因为使用

apt-get remove postgresql 

只删除那个头包

由于apt-get autoremove (由Aaron建议)将删除所有“帮助程序包”似乎没有任何更长时间依赖,有时你想保留其中一些由于某种原因。 因此,如果这涉及到您,另一种可能性是:

 $(apt-cache depends postgresql|awk '{print "sudo apt-get remove "$NF}') 

使用Bash作为shell,这基本上可以执行以下操作:

  1. apt-cache depends postgresql会列出postgresql所依赖的所有包,包括postgresql本身。 但是每一行看起来都depends on: – 所以我们将输出管道输出到……
  2. awk '{print "sudo apt-get remove "$NF}' ,它将取每行的最后一个字(这是包名称),并在它之前用我们想要的命令打印出来: sudo apt-get remove (你当然也可以使用apt-get purge )。
  3. 最后,使用$()构造,我们建议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`