我想删除不需要的软件包。我已经删除了大文件(使用 k4dirstat),只剩下几百个我安装的软件包,但大多数我都没用(安装没有 /home,占用 15GB)。
可以使用“apt-get purge”单独删除具有依赖关系的软件包,并查看将释放的空间。但是,这种查看软件包占用空间的方式速度慢且需要手动操作,这是一个问题。
在 Debian 下,如何显示软件包并释放其磁盘空间?
答案1
这绝对是一个有趣的问题。我见过的唯一一个给出“XX 将被释放”输出的东西似乎是“apt-get remove”。更奇怪的是,它没有使用 -s(“dry run”)命令行选项为您提供该行。
警告[0]:这意味着使用 apt-get 确定输出需要以 root 身份运行。所以,为了 Bob 的利益,请务必先在可扩展的 VM 上进行测试!
警告[1]:在开始删除软件包之前,请确保您知道自己在做什么。这将检查系统上的每个软件包,并查看如果删除它们将恢复多少空间(根据 apt-get 的报告)。这并不意味着删除它们是安全的。我不承担任何责任!
还值得一提的是:这可能会非常非常慢。希望这是您在需要时根据具体情况运行的,而不是重复运行。
话虽如此,我还是为您提供了我 2013 年的最后一个解决方案。希望它能有所帮助。
#!/bin/bash
for I in `dpkg --get-selections | grep install | grep -v adduser | grep -v apt | awk '{print $1}'`;
do
echo -n "$I : "
apt-get --assume-no --purge remove $I | grep "will be freed" | awk '{print $4, $5}' >> ~/package_script.out
done
我在 ubuntu 下编写并测试了它,因此它应该可以在 debian 等系统中正常工作。
更新:我添加了一个过滤器,以将 adduser 和 apt 软件包从考虑中删除。前者太“核心”而无法删除,而且需要很长时间,后者似乎永久锁定。A 可能还有更多这样的软件包……
答案2
您也可以遵循@GeminiDomino 建议的相同基本想法,但仅限于您指定的包:
sudo apt-get --assume-no --purge remove PACKAGE | grep "will be freed" |
awk '{print $4, $5}'
您可以通过添加以下行将其转变为函数~/.bashrc
:
space_freed(){
sudo apt-get --assume-no --purge remove "$@" | grep "freed.$" |
awk '{print $4, $5}'
}
然后您可以从命令行给出多个包名称:
$ space_freed thunderbird firefox chromium
239 MB
我以为你会知道软件包名称,否则这会花很长时间。不过,你可以使用我的方法列出所有软件包的大小。此命令将打印所有已安装软件包的名称:
$ dpkg -l | awk '($1=="ii"){print $2}'
如果您运行space_freed
该命令输出的每一行,您将获得所有已安装软件包的列表以及卸载它们后释放的空间:
for i in $(dpkg -l | awk '($1=="ii"){print $2}'); do
echo -e "$i\t"$(space_freed $i);
done
最简单的方法是使用wajig
列出最大的已安装包:
wajig large
答案3
显示包裹尺寸
突触:
转到“设置>首选项”,选择“列和字体”,然后勾选“安装大小”。
dpkg-查询:
dpkg-query --showformat='${Package}\n${Description}' -W {package-names/patterns}
显示最大的已安装软件包(来源)
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
wajig large
dpigs
sed -ne '/^Package: \(.*\)/{s//\1/;h;};/^Installed-Size: \(.*\)/{s//\1/;G;s/\n/ /;p;}' /var/lib/dpkg/status | sort -rn
awk '{if ($1 ~ /Package/) p = $2; if ($1 ~ /Installed/) printf("%9d %s\n", $2, p)}' /var/lib/dpkg/status | sort -n | tail
答案4
试试看aptitude
...这是一个基于 CLI 的包管理器,具有易于使用的键绑定。您可以在界面的右上角看到清除一组包将释放多少空间。