问题:
当我输入:
dpkg-query -Wf '${Package;-40}${Priority}\n' | sort -b -k2,2 -k1,1
我得到了我的机器上所有已安装软件包的列表,例如:
...
raspberrypi-artwork extra
raspberrypi-bootloader extra
raspberrypi-ui-mods extra
raspi-config extra
rpi-update extra
sonic-pi extra
ssh extra
triggerhappy extra
wireless-tools extra
xkb-data extra
adduser important
apt important
apt-utils important
aptitude important
aptitude-common important
bsdmainutils important
...
我最近运行了一个安装了很多东西的脚本,现在我的机器响应如下:(/usr/bin/mandb: can't write to /var/cache/man/2694: No space left on device
路径发生变化,但它总是告诉我没有剩余空间。)
我看到的可能的标签是:
- 标准
- 额外的
- 重要的
- 选修的
- 必需的
我在各个存储库中都有未提交的更改,并且我希望能够推送本地更改,但当我尝试推送时,我不断收到此错误:
$ git push
fatal: write error: No space left on device
error: Couldn't write .git/refs/remotes/origin/master.lock
error: Cannot update the ref 'refs/remotes/origin/master'.
Everything up-to-date
我还应该说,我知道一切都不是最新的。
系统:
这是在运行“wheezy”raspbian 的树莓派上。
问题:
我安装了数百个软件包。如何删除所有标有“额外”的包裹?这是释放计算机空间的最佳方法吗?我在各个存储库中都有未提交的更改,并且我希望能够推送我的本地更改。
我也会接受一个删除除必需和重要之外的所有内容的答案。 Git 被标记为可选,我更愿意保留它(尽管我总是可以在删除所有不需要的包后再次安装它)。
提前致谢!!
答案1
您可以使用以下命令清除所有可选和额外的软件包:
sudo apt-get --simulate purge $(dpkg-query -Wf '${Package;-40}${Priority}\n' | awk '$2 ~ /optional|extra/ { print $1 }')
该--simulate
标志可让您查看将删除的内容,而无需实际删除所有内容。删除该标志以实际卸载软件包。
您将需要重新安装 git,因为它将与其他可选和额外的软件包一起被删除。
您可能需要一些可选的和额外的软件包,因此请小心删除。更多这里:https://askubuntu.com/questions/79665/keep-only-essential-packages
答案2
你必须检查在哪里你的空间用完了。该df(1)
命令告诉您哪些文件系统已满。
空间不足的一个常见原因是日志文件过大(检查下/var/log
,您的系统应该有命令来清除过时的日志)。请注意,sort(1)
使用临时文件,无论是在var/tmp
或中/tmp
,如果其中任何一个包含太多的垃圾,它可能会因空间不足而失败。
答案3
由于您已经安装了 aptitude,它可以在这里为您提供帮助。启动aptitude
并限制(快捷键l
:)视图以匹配包
~i ~pextra
看在线手册或/usr/share/doc/aptitude/README
作为搜索词参考。
现在,您可以选择将它们全部卸载:按-
每个顶级标题下方的按钮将软件包标记为卸载(保留配置文件),或_
将它们标记为清除(删除配置文件),然后g
继续。如果您想保留某些软件包,您确实有机会查看该列表。