Answers:
首先,请确保已启用“已安装大小”和“下载大小”列(如果需要,则仅启用一个)。
dpkg-query -W -f='${Installed-Size;8} ${Package}\n' | sort -n
显示按大小排序的包裹清单
;8
中${Installed-Size;8}
?
我找到了一个简短的答案,不需要aptitude
:
dpkg-query -Wf '${Installed-size}\t${Package}\n' | column -t
的show
命令aptitude
能够显示软件包的安装大小。
我有这个小脚本,它利用aptitude
(单独安装)列出了所有已安装软件包的大小:
#!/bin/bash
export LC_ALL=C
aptitude show $(dpkg-query -Wf '${Package}\n') |
awk '$1 == "Package:" { name = $2 }
$1 == "Uncompressed" { printf("%10s %s\n", $3, name) }' |
awk '$1 ~ /k/ { $1 *= 1 }; $1 ~ /M/ { $1 *= 1024 }
{ printf("%9d %s\n", $1, $2)}'
大小以千字节表示,并且是近似值,由返回aptitude show pkg
。
可以使用单个awk
调用来改进脚本(但是我很懒:-)
sort -nk1
在第一个命令的末尾添加一个管道。
cut -f 1 | paste -sd+ | bc
。也可以在之前进行grep,cut
以便仅获取特定软件包的安装大小。
另一个选择是使用软件包中的dpigs
应用debian-goodies
程序:
NAME
dpigs - Show which installed packages occupy the most space
SYNOPSIS
dpigs [options]
DESCRIPTION
dpigs sorts the installed packages by size and outputs the largest ones. Per
default dpigs displays the largest 10 packages. You can change this value by
using the -n option (see "OPTIONS"). The information is taken from the dpkg
status file with grep-status(1).
OPTIONS
-h, --help
Display some usage information and exit.
-n, --lines=N
Display the N largest packages on the system (default 10).
-s, --status=FILE
Use FILE instead of the default dpkg status file (which is /var/lib/dpkg/status
currently).
-S, --source
Display the largest source packages of binary packages installed on the system.
此处的其他答案列出了已安装和已卸载的软件包。
以下仅列出了当前安装的那些:
dpkg-query -W -f='${Installed-Size;8}\t${Status;1}\t${Package}\n' | grep -v "\sd\s" | sort -n | cut -f1,3-
它能做什么:
输出类似于:
...
22376 vim-runtime
26818 linux-image-3.8.0-32-generic
28673 libc6-dbg
35303 libpython3.3-dev
40303 valgrind
40731 linux-firmware
41516 smbclient
58704 linux-headers-3.8.0-26
58733 linux-headers-3.8.0-32
93566 linux-image-extra-3.8.0-32-generic