哪些已安装的软件包在 Debian 上使用最多的磁盘空间?

Mir*_*lov 113 disk-usage apt

我的根分区上的磁盘空间不足,所以我想从系统中删除一些应用程序。如何查看哪些软件包使用了最多的磁盘空间?是否可以从aptitude?

我了解通用磁盘空间分析器,例如dfbaobab,但我需要已安装应用程序的解决方案。

小智 149

最简单的方法(不安装额外的软件包)是:

dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
Run Code Online (Sandbox Code Playgroud)

它以估计的大小顺序显示包,以千字节为单位,最后一个最大的包。

不幸的是,至少在某些系统上,此列表包括已删除但未清除的软件包。所有这些包都可以通过运行来清除:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想清除已卸载的软件包,您可以使用此变体从列表中过滤掉不处于“已安装”状态的软件包:

dpkg-query -Wf '${db:Status-Status} ${Installed-Size}\t${Package}\n' | sed -ne 's/^installed //p'|sort -n
Run Code Online (Sandbox Code Playgroud)

  • FWIW,如果您首先想要最大的包,请使用“sort -nr”而不是“sort -n”。 (3认同)
  • “已安装大小”是对已安装包需要多少空间的预先估计。恐怕这不是实际尺寸。 (2认同)

kil*_*ist 74

最简单的就是跑wajig large。包裹应该是一个apt-install-away。

这是其他方法的两个链接:

还要记住,安装的大小只是包占用的空间的一部分。压缩版本可能仍在缓存中,这也会占用一些空间。您可以使用apt-get clean.

  • 清空包缓存的命令是“apt-get clean”。“清除检索到的包文件的本地存储库” – man apt-get (5认同)

Bra*_*iam 28

既然你想see which [installed] software packages use the most disk space[,] from aptitude……当然可以用aptitude!通过它的 CLI 或 {interactive, TUI, non-CLI} 很棒。让我们先讨论 CLI,然后再讨论 TUI。无论哪种方式,您只需要知道

  • 要使用的命令行选项。以下文本使用长选项(为了便于搜索文档),但当然也可以使用短选项。
  • 要使用的命令行参数
  • 要使用的输出格式字符串

显示哪些已安装的软件包使用最多磁盘空间的最基本命令行可能是

aptitude search --sort '~installsize' --display-format '%p %I' '~i' | head
Run Code Online (Sandbox Code Playgroud)

所以让我们分解一下:

  • --sort是包裹排序顺序,并~installsize指定包裹排序策略
  • installsize表示“按(估计)安装大小排序”,前面~表示降序排序(因为所有排序策略的默认值都是升序)。
  • --display-format更改<you guessed :->. 该格式字符串 '%p %I'告诉aptitude输出包的名称,然后安装尺寸。
  • '~i'告诉aptitude只搜索已安装的软件包。
  • ......,除非你有非常少数已安装的软件包(我还挺泛型Debian的工作站拥有超过2400),你要管headless或文件,或者只是wc -l看看有多少行aptitude会被返回。

你可能还想

  1. 指定aptitude显示时使用的线宽(以字符为单位),使用--width <your desired integer value/>. aptitude将默认为它认为是您的终端宽度,但有时它猜错了,有时您想写入文件等。
  2. 在格式字符串中显示更多信息,或更改字段宽度。例如,我的增强格式字符串'%30p %I %r %60d'显示

    • %30p : 字段中的包名 width=30 char
    • %I : 估计安装大小
    • %r : '反向依赖计数': 依赖这个包的其他已安装包的大致数量
    • %60d : 字段宽度=60 字符中的包的简短描述

请注意,如果您在输出字段中没有看到更改,则可能需要设置--width.

...你也可以在 {interactive, TUI} 中做这种事情aptitude。例如,要设置显示格式首选项,

  • 单击或导航到选项-> 首选项
  • 滚动到包视图的显示格式
  • 添加%I到所需位置的当前值

要将搜索限制在交互式中已安装的软件包aptitude

  • l(小写L
  • ~i在对话框中输入

要在交互式中按安装大小排序aptitude

  • Shift-S(大写S
  • installsize在对话框中输入

参考:


dfc*_*dfc 12

如果您不想安装wajig。我想每个人都安装了 debian-goodies:

dpigs              - Show which installed packages occupy the most space
Run Code Online (Sandbox Code Playgroud)


ter*_*don 11

首先,使用像一个工具baobabsudo apt-get install baobab)向您展示其中正在使用该空间:

在此处输入图片说明

这将为您提供一个很好的图形概览,并帮助您缩小占用空间的范围。您还可以使用du以下命令在命令行上获取此信息:

$ sudo du -ch /
Run Code Online (Sandbox Code Playgroud)

通过sort(假设 GNU sort,在 Debian 中应该是这种情况)以按目录大小排序:

$ sudo du -ch / | sort -h
Run Code Online (Sandbox Code Playgroud)

下一步,您可以使用此命令查看特定包使用了多少空间:

$ sudo apt-get --assume-no --purge remove "PACKAGE_NAME" | grep "be freed" | 
   awk '{print $4, $5}' 
Run Code Online (Sandbox Code Playgroud)

例如,在我的系统上,删除所有texlive软件包将释放 1,502 MB:

$ sudo apt-get --assume-no --purge remove "texlive*" | grep "be freed" | 
   awk '{print $4, $5}' 
1,502 MB
Run Code Online (Sandbox Code Playgroud)

最后,您可以使用以下命令获取所有已安装软件包的信息:

$ 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
Run Code Online (Sandbox Code Playgroud)


Fah*_*tha 5

您可以使用wajig包,以及命令

wajig large
Run Code Online (Sandbox Code Playgroud)

帮助解释了它的作用。

wajig large -h

usage: wajig large [-h]

List size of all large (>10MB) installed packages
Run Code Online (Sandbox Code Playgroud)

另请参阅项目页面


小智 5

要添加其他答案,如果您喜欢命令行,可以使用好旧的durep

# durep -td 1 /etc                         # or -td 2
[ /etc   319.4K (60 files, 43 dirs) ]
  90.2K [########                      ]  28.26% apache2/
  27.5K [##                            ]   8.62% apt/
  23.7K [##                            ]   7.43% mime.types
  19.7K [#                             ]   6.18% cron.daily/
  18.7K [#                             ]   5.87% services
  18.0K [#                             ]   5.64% security/
  14.7K [#                             ]   4.61% init.d/
  13.2K [#                             ]   4.13% ssl/
  11.1K [#                             ]   3.48% ld.so.cache
   9.0K [                              ]   2.81% locale.gen
   7.8K [                              ]   2.43% pam.d/
   4.5K [                              ]   1.42% default/
   4.3K [                              ]   1.35% skel/
   2.9K [                              ]   0.92% locale.alias
Run Code Online (Sandbox Code Playgroud)

您可能可以使用释放空间localepurge

# dpkg-reconfigure localepurge
# localepurge
localepurge: Disk space freed in /usr/share/locale: 26160 KiB
localepurge: Disk space freed in /usr/share/man: 1304 KiB

Total disk space freed by localepurge: 27464 KiB
Run Code Online (Sandbox Code Playgroud)

最后,您可能可以摆脱有时会占用大量空间的图标和字体。详情请参阅本网站

https://ownyourbits.com/2017/02/18/squeeze-disk-space-on-a-debian-system/

(示例摘自 ownyourbits)