我的根分区上的磁盘空间不足,因此我想从系统中删除一些应用程序。如何查看哪些软件包使用的磁盘空间最多?可以从 处查看吗aptitude
?
我了解通用磁盘空间分析器,例如df
或baobab
,但我需要针对已安装应用程序的解决方案。
答案1
最简单的方法(无需安装额外的软件包)是:
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
显示包在估计的大小顺序(以千字节为单位),最大的包在最后。
不幸的是,至少在某些系统上,此列表包括已删除但未清除的软件包。所有此类包都可以通过运行来清除:
dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge
或者,如果您不想清除已卸载的软件包,您可以使用此变体从列表中过滤掉不处于“已安装”状态的软件包:
dpkg-query -Wf '${db:Status-Status} ${Installed-Size}\t${Package}\n' | sed -ne 's/^installed //p'|sort -n
答案2
最简单的方法就是跑步wajig large
。包裹应该是apt install
远方的。
以下是其他方法的两个链接:
另请记住,安装的大小只是软件包占用空间的一部分。压缩版本可能仍在缓存中,并且也占用了一些空间。您可以删除那些带有apt-get clean
.
答案3
既然你想see which [installed] software packages use the most disk space[,] from aptitude
...当然可以用aptitude
!通过其 CLI 或{交互式、TUI、非 CLI} 的出色功能。我们先讨论 CLI,然后讨论 TUI。不管怎样,你只需要知道
- 要使用的命令行选项。以下文本使用长选项(为了便于搜索文档),但当然也可以使用短选项。
- 要使用的命令行参数
- 要使用的输出格式字符串
显示哪些已安装的软件包使用最多磁盘空间的最基本的命令行可能是
aptitude search --sort '~installsize' --display-format '%p %I' '~i' | head
那么让我们来分解一下:
--sort
是包排序顺序,并~installsize
指定包裹分类政策。installsize
表示“按(估计)安装大小排序”,前面的~
表示按降序排序(因为所有排序策略的默认值都是升序)。--display-format
改变<you guessed :->
.这格式字符串'%p %I'
告诉aptitude
输出包名称,然后是安装的大小。'~i'
告诉aptitude
只搜索已安装的软件包。- ...而且,除非你有非常很少有已安装的软件包(我的通用 Debian 工作站有超过 2400 个),您想要通过管道传输到
head
或less
或 一个文件,或者可能只是为了查看将返回wc -l
多少行。aptitude
您可能还想
aptitude
指定显示时使用的线宽(以字符为单位) ,用--width <your desired integer value/>
.aptitude
将默认为它认为是您的终端宽度,但有时它会猜测错误,有时您想写入文件等。在格式字符串中显示更多信息,或更改字段宽度。例如,我的增强格式字符串
'%30p %I %r %60d'
显示%30p
:字段宽度=30个字符的包名称%I
:估计安装大小%r
: 'reverse dependents count': 依赖于该包的其他已安装包的大概数量%60d
:字段宽度=60个字符的包的简短描述
请注意,如果您在输出字段中没有看到更改,则可能需要设置--width
.
...您也可以在 {interactive, TUI} 中执行此类操作aptitude
。例如,要设置显示格式首选项,
- 单击或导航至“选项”->“首选项”
- 滚动到包视图的显示格式
- 添加
%I
到所需位置的当前值
要将搜索限制为交互式中已安装的软件包aptitude
,
- 按l(小写
L
) ~i
在对话框中输入
要在交互式中按安装大小排序aptitude
,
- 按Shift-S(大写
S
) installsize
在对话框中输入
参考:
答案4
首先,使用类似的工具baobab
(sudo apt-get install baobab
) 给你看在哪里该空间正在被使用:
这将为您提供一个很好的图形概览,并帮助您缩小占用空间的范围。您还可以使用以下命令在命令行上获取此信息du
:
$ sudo du -ch /
传递这个sort
(假设是 GNU sort
,在 Debian 中应该是这种情况)以按目录大小排序:
$ sudo du -ch / | sort -h
下一步,您可以使用此命令查看特定包使用了多少空间:
$ sudo apt-get --assume-no --purge remove "PACKAGE_NAME" | grep "be freed" |
awk '{print $4, $5}'
例如,在我的系统上,删除所有texlive
软件包将释放 1,502 MB 空间:
$ sudo apt-get --assume-no --purge remove "texlive*" | grep "be freed" |
awk '{print $4, $5}'
1,502 MB
最后,您可以获取此信息全部使用此命令安装的软件包:
$ for i in $(dpkg -l | awk '($1=="ii"){print $2}'); do
echo -e "$i\t"$(sudo apt-get --assume-no --purge remove "$i" |
grep "be freed" | awk '{print $4, $5}');
done