如何卸载由"aptitude build-dep"安装的所有软件包

通过 "aptitude build-dep xxxxxx" 命令所安装的所有依赖项是否可以全部撤销,即卸载所有由该命令安装的依赖项?


删除已安装依赖项的程序和类型 sudo apt-get autoremove。这可能有效。 - Ashu
@Ashu:不,它不行。我已经试过了。 - binW
尝试执行 apt-cache depends PACKAGE_NAME,这将打印出程序所需的所有软件包,并卸载您认为不需要的部分。 - Ashu
3个回答

对于未来,我强烈建议使用mk-build-deps -i而不是aptitude build-dep。这样可以在您的系统中安装一个依赖于构建依赖项的软件包,以后可以轻松卸载。

我在一个启动板上找到了这些命令question
sudo aptitude markauto $(apt-cache showsrc PACKAGE_NAME | grep Build-Depends | perl -p -e 's/(?:[\[(].+?[\])]|Build-Depends:|,|\|)//g')

还有一种基于sed的替代方案,可以处理软件包名称中的括号。
sudo aptitude markauto $(apt-cache showsrc PACKAGE_NAME | sed -e '/Build-Depends/!d;s/Build-Depends: \|,\|([^)]*),*\|\[[^]]*\]//g')

注意:请将PACKAGE_NAME替换为您自己的包名。

我不认为有一种自动的方法。通过build-dep安装的软件包会被记录在与直接按名称请求的方式相同的方式中。
如果你大致知道你运行aptitude build-dep的时间,你可以通过查看/var/log/aptitude*/var/log/apt/*中的日志来找到当你运行该命令时安装的软件包。
你可以运行apt-cache showsrc PACKAGENAME | grep '^Build-depends:'来列出软件包的构建依赖项。逐个检查它们,看看你是否需要它们;将你不关心的标记为非手动安装(apt-get markauto PACKAGENAME),然后清除不需要的软件包(apt-get autoremove)。