Какие установленные программные пакеты используют больше всего дискового пространства в Debian?


77

Недостаточно места на моем корневом разделе, поэтому я хочу удалить некоторые приложения из системы. Как узнать, какие программные пакеты занимают больше всего дискового пространства? Можно ли это просмотреть aptitude?

Я знаю об общих анализаторах дискового пространства, таких как dfили baobab, но мне нужны решения для установленных приложений.


Ответы:


54

Проще всего бежать wajig large. Пакет должен быть в apt-installподарок.

Вот две ссылки для других способов сделать это:

Также помните, что установленный размер является лишь частью пространства, занимаемого пакетами. Сжатая версия, вероятно, все еще находится в кэше, и это также занимает некоторое место. Вы можете удалить их с помощью apt-get clean.


4
Команда опустошить кэш пакета apt-get clean. «Очищает локальный репозиторий извлеченных файлов пакетов» - man apt-get
manatwork

98

Самый простой способ (без установки дополнительных пакетов):

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
«Установленный размер» - это предварительная оценка того, сколько места потребуется для установленного пакета. Боюсь, это не фактический размер.
Рольф

23

Так как вы хотите 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будут возвращаться.

Вы также можете захотеть

  1. укажите ширину линии (в символах) для aptitudeиспользования при отображении с помощью --width <your desired integer value/>. aptitudeпо умолчанию будет соответствовать ширине вашего терминала, но иногда он ошибается, иногда вы хотите записать в файл и т. д.
  2. отобразить больше информации в строке формата или изменить ширину поля. Например, мой расширенный формат строки '%30p %I %r %60d'отображает

    • %30p : имя пакета в ширине поля = 30 символов
    • %I : примерный размер установки
    • %r : 'инверсия зависит от количества': приблизительное количество других установленных пакетов, которые зависят от этого пакета
    • %60d : краткое описание пакета по ширине поля = 60 символов

Обратите внимание, что, если вы не видите изменений в поле вывода, вам, вероятно, нужно установить --width.

... и вы также можете делать такие вещи в {интерактив, TUI} aptitude. Например, чтобы установить предпочтения формата отображения,

  • нажмите или перейдите к Параметры-> Настройки
  • выделите Формат отображения для представлений пакетов
  • добавить %Iк текущему значению в желаемой позиции

Чтобы ограничить поиск установленными пакетами в интерактиве aptitude,

  • нажмите l(строчные буквы L)
  • войти ~iв диалог

Сортировать по установленному размеру в интерактивном режиме aptitude,

  • нажмите Shift-S(заглавные буквы S)
  • войти installsizeв диалог

Рекомендации:


Не уверен, есть ли способ сделать это, но было бы неплохо всегда печатать размер в килобайтах, что значительно упростило бы сортировку или иным образом постобработку.
Дероберт

@derobert смотрел, как я могу контролировать пустое пространство в выводе aptitude, также, очевидно, нет способа изменить вывод размера.
Брайам

@ Брайам, да, каков общий объем полученного пространства, если я удалю *texlive*?
Тердон

@terdon мм ... не aptitude -s remove '?and(texlive,~i)'будет достаточно? Кроме того, вы можете добавить пользовательский тег к определенному пакету, чтобы вы могли манипулировать ими в целом (например, задачами).
Брайам

9

Если вы не хотите устанавливать Wajig. Я думаю, что у всех установлены debian-goodies:

dpigs              - Show which installed packages occupy the most space

Wajig требует Python 3, который является еще 40 МБ. Для debian-goodies требуется python 2.6+, поэтому дополнительно 700 КБ. Это или ответ ДжозефаH являются лучшими!
Тим О'Брайен,

Я заметил, что на dpigsсамом деле имеет тот же результат dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head, что и десятка установленных пакетов, которые занимают больше всего места. Тем не менее, dpigsэто просто и коротко.
Clearkimura

8

Прежде всего, используйте инструмент вроде 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 МБ:

$ 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


3

добавить к другим ответам, если вам нравится командная строка, вы можете использовать старый добрый 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/

(примеры, извлеченные из собственных урбит)


dpkg-reconfigure localepurgeжалуется localepurgeна недоступность пакета.
Рольф

2

Добавляя еще несколько инструментов в список, я всегда использовал debfosterи deborphanв своих системах. Они наиболее полезны для поиска старых зависимостей, которые остаются после обновлений.

apt-get autoremoveэто здорово, но не все, и так как он следует меткам установки, он не всегда знает, что вы хотите сохранить. Использование apt-markпозволяет вам управлять им до некоторой степени.

Проверьте также: https://wiki.debian.org/ReduceDebian


0

Хотя это хороший набор инструментов, к которому я бы добавил KDE / QT Filelight, который похож на другие инструменты использования дискового пространства графического интерфейса, это не буквальный ответ на заголовок темы.

Если вы воспринимаете вопрос этого потока буквально, то есть, какие пакеты являются самыми большими в вашей системе, как правило, это:

Пакет пакетов libreoffice, который не является единым пакетом, но он действительно большой.

Второе - ядро ​​linux и связанные с ним пакеты заголовков. Я думаю, что второе, и если у вас установлено несколько ядер, которые, как правило, есть в большинстве систем, то каждое из них, я думаю, примерно 135 мБ дискового пространства, примерно, увеличивается с каждым годом, но это примерно так , Если вы используете несвободные видеодрайверы, будут также соответствующие пакеты / файлы драйверов. Обратите внимание, что, как и в случае с libreoffice, каждое ядро ​​фактически может состоять из 2 или 3 пакетов, пакетов с изображением, заголовком и драйвером, поэтому буквальное число для каждого размера пакета на самом деле не так точно, за исключением грубого понимания.

После этого в пуле пакетов Debian не так много огромных пакетов, о которых я знаю.

Я обнаружил, что как только корневой раздел начинает становиться достаточно большим, и вы начинаете задаваться вопросом, как избавиться от пакетов, чтобы уменьшить его, обычно наступает время переместить / изменить размер на больший корневой раздел.

Конечно, первым делом нужно запустить apt-get clean, чтобы избавиться от всех кэшированных файлов .deb, но как только вы удалите это, и, скажем, 2 ядра, если вы все еще застряли в нехватке места, это больше практично для увеличения размера раздела, так как очистки и т. д. - это просто красные флаги, которые вы запускаете близко к месту корневого раздела, что может быть реальной проблемой, если apt не имеет достаточно места в / var для фактической загрузки и извлечения пакетов для Обновить. Очистка с помощью операций очистки, оставшиеся файлы конфигурации из удаленных пакетов, не принесут вам никакой пользы с точки зрения восстановления дискового пространства, так как они крошечные, но время от времени хорошо делать, чтобы просто очистить ненужные файлы, но это не должно не следует ошибочно принимать за реальное восстановление любого значимого дискового пространства.

apt-get auto-remove также неплох, но имейте в виду, что иногда это неправильно при удалении пакета, поэтому вы должны тщательно проверить этот список, прежде чем позволить apt удалить этот материал. Технически лучше очистить этот список, так как вы избавитесь от конфигурационных файлов одновременно, удалите или автоматически удалите, если я верю, что они останутся на месте.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.