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

我知道dfbaobab之类的通用磁盘空间分析器,但是我需要已安装应用程序的解决方案。

评论

askubuntu.com/questions/62290/…

您在其他分区上有空间。例如/家。可能还有其他解决方案。

#1 楼

最简单的是运行wajig large。该软件包应该是apt-install -away。

这里有两个链接提供了其他实现方法:


列出最大的已安装软件包(在Debian / Ubuntu上)
按大小顺序保留所有已安装的软件包

还要记住,已安装的大小只是软件包所占用空间的一部分。压缩版本可能仍在缓存中,这也占用了一些空间。您可以使用apt-get clean删除它们。

评论


清空程序包缓存的命令是apt-get clean。 “清除检索到的软件包文件的本地存储库” – man apt-get

–manatwork
2012-6-10 17:07



在Wajig输出中,“配置文件”与“已安装”是什么意思?他们的文档并不能完全解释这一点。

–嘶嘶声
20年6月19日在7:38

#2 楼

最简单的方法(无需安装额外的软件包)是:
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


评论


“已安装大小”是对已安装软件包将需要多少空间的先占估计。恐怕不是实际尺寸。

–罗夫
18年1月19日在10:36



FWIW,如果首先需要最大的软件包,请使用sort -nr而不是sort -n。

–安德烈·霍尔兹纳(Andre Holzner)
20-4-10的12:14

#3 楼

既然您要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


,所以我们来分解一下:



--sort是程序包排序顺序,并且~installsize指定程序包排序策略。

installsize表示“排序(估计的)安装大小”,而前面的~表示排序递减(因为所有排序均默认)策略在上升。)

--display-format更改了<you guessed :->。格式字符串'%p %I'告诉aptitude输出软件包名称,然后输出安装大小。

'~i'告诉aptitude仅搜索已安装的软件包。
...,除非安装的软件包很少(我的普通的Debian工作站有2400多个),您希望通过管道传输到headless或文件,或者只是通过wc -l查看返回的行数。

您可能还想


aptitude指定显示时使用的aptitude的行宽(以字符为单位)。 --width <your desired integer value/>将默认设置为您认为的终端宽度,但有时会猜错,有时又想写入文件等。

以格式字符串显示更多信息,或更改字段宽度。例如,我的增强格式字符串aptitude显示



'%30p %I %r %60d':字段宽度= 30个字符的程序包名称

%30p:估计安装大小

%I:“反向依赖计数”:取决于此软件包的其他已安装软件包的大约数量

%r:软件包在字段width = 60 char中的简短描述



请注意,如果在输出字段中没有看到更改,则可能需要设置%60d

...,您也可以在{interactive ,TUI} --width。例如,要设置显示格式首选项,


单击或导航到“选项”->“首选项”
滚动到包视图的显示格式

添加aptitude到所需位置的当前值

要限制搜索交互式%I中已安装的软件包,请按l(小写aptitude
输入对话框中的L

要在交互式~i中按已安装的大小排序,请按Shift-S(大写aptitude
在对话框中输入S对话框

参考文献:


有关installsize软件包搜索模式的信息,请参见https://aptitude.alioth.debian.org/doc/zh/ch02s04s05.html# tableSearchTermQuickGuide

有关aptitude软件包排序策略的信息,请参阅https://aptitude.alioth.debian.org/doc/zh/ch02s05s01.html#secSortingPolicy

有关aptitude输出显示格式,请参阅https://aptitude.alioth.debian.org/doc/zh/ch02s05s01.html#secDisplayFormat



评论


不确定是否有办法做到这一点,但是总是以kB为单位打印大小会很好,这将使排序或后处理变得更加容易。

–德罗伯特
2014年1月22日在17:31

@derobert一直在寻找如何控制aptitude输出中的空白,而且显然也无法更改size的输出。

–脑袋
2014年1月22日17:39

@Braiam是的,如果我删除* texlive *,可以获得的总空间是多少?

– terdon♦
2014年1月22日17:43

@terdon mm ...天才-s删除'?and(texlive,〜i)'就足够了吗?另外,您可以将用户标签添加到某些程序包中,以便可以整体操作它们(如任务)。

–脑袋
2014年1月22日在17:46

#4 楼

首先,使用类似baobabsudo 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 , }' 


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

$ sudo apt-get --assume-no --purge remove "texlive*" | grep "be freed" | 
   awk '{print , }' 
1,502 MB


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

$ for i in $(dpkg -l | awk '(=="ii"){print }'); do  
    echo -e "$i\t"$(sudo apt-get --assume-no --purge remove "$i" | 
                    grep "be freed" | awk '{print , }'); 
  done


#5 楼

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

dpigs              - Show which installed packages occupy the most space


评论


wajig需要python 3,这又是40mb。 debian-goodies需要python 2.6+,因此还需要700kb。这或JosephH的答案是最好的!

–蒂姆·奥布莱恩(Tim O'Brien)
2015年4月9日19:42

我注意到dpigs实际上与dpkg-query -Wf'$ {Installed-Size} \ t $ {Package} \ n'|具有相同的结果。排序-nr |头,这是已安装的软件包中占据最大空间的前十名。 dpigs仍然简单而简短。

–user125388
18年5月24日在5:27

#6 楼

您可以使用wajig程序包,并使用命令

wajig large


帮助说明其功能。

wajig large -h

usage: wajig large [-h]

List size of all large (>10MB) installed packages


另请参阅项目页面。

#7 楼

添加到其他答案中,如果您喜欢命令行,则可以使用旧的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


您可以使用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


最后,您可能会摆脱有时会占用很多空间的图标和字体。在此网站上查看详细信息

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

(从ownyourbits中提取的示例)

评论


dpkg-reconfigure localepurge抱怨localepurge软件包不可用。

–罗夫
18年1月19日在10:53

#8 楼

在列表中添加更多工具,我一直在系统上使用debfosterdeborphan。它们对于寻找升级后仍然存在的旧依赖项最有用。

apt-get autoremove很不错,但是并不能获取所有内容,而且由于它遵循安装标记,因此它并不总是知道什么你想保留。不过,使用apt-mark可以将其定向到某种程度。

还请检查:https://wiki.debian.org/ReduceDebian

#9 楼

虽然这是一个不错的工具集合,但我会在其中添加KDE / QT Filelight,这与其他gui磁盘空间使用工具类似,但这并不是主题标题的字面回答。

如果从字面上看这个线程的问题,即系统中最大的软件包,通常是:

libreoffice软件包套件,它不是单个软件包,但它确实很大。

Linux内核和相关的头文件包排在第二位,如果您安装了大多数系统倾向于安装的多个内核,则每个内核都在135 mB左右大致来说,空间每年都在增加,但是大约是那么大。如果您使用非免费的视频驱动程序,那么也会有相关的驱动程序包/文件。请注意,与libreoffice一样,每个内核实际上可以由2或3个程序包(图像,标头和驱动程序程序包)组成,因此每个程序包大小计数的字面值实际上并没有那么精确,除非有一个粗略的含义。 br />
在那之后,我知道Debian的软件包池中没有大量的大型软件包。

我发现,一旦根分区开始变得足够大,以至于您开始想知道如何摆脱软件包来缩小它,通常是时候将移动/调整大小到更大的根分区了。

apt-get clean当然是要清除所有缓存的.deb文件,首先要运行的东西,但是一旦删除了它,并且几乎说了2个内核,那么如果您仍然没有足够的空间,那就更多了增大分区的大小很实用,因为清理等只是危险信号,您正在接近根分区空间,如果apt在/ var中没有足够的空间来实际下载和提取软件包,这可能是一个真正的问题。升级。通过清除操作清除已删除软件包中的剩余配置文件,因为它们很小,所以在重新获得磁盘空间方面根本没有任何好处,但是现在最好只是清理碎片,但是这样做不应该。

apt-get auto-remove也不错,但是要注意,删除软件包有时是错误的,所以您要检查一下仔细删除之前,请仔细列出。从技术上讲,最好清除该列表,这样一来,您也可以同时摆脱配置文件,删除或自动删除,我相信它们会保留在原处。