Які встановлені програмні пакети використовують найбільше дискового простору на Debian?


76

Дискового простору на моєму кореневому розділі не вистачає, тому я хочу видалити деякі програми із системи. Як я бачу, які програмні пакети використовують найбільше місця на диску? Чи можна це переглянути aptitude?

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


Відповіді:


53

Найпростіше - бігати wajig large. Пакет повинен бути apt-installпровідним.

Ось два посилання на інші способи цього:

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


4
Команда виповнити кеш пакету є apt-get clean. "Очищає локальне сховище завантажених файлів пакунків" - man apt-get
manatwork

97

Найпростіший спосіб (без встановлення додаткових пакетів):

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.

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

  • клацніть або перейдіть до Опції-> Налаштування
  • перейдіть до Формат відображення для перегляду пакетів
  • додайте %Iдо поточного значення в потрібному положенні

Щоб обмежити пошук встановленими пакетами в інтерактивному режимі aptitude,

  • натиснути l(малі літери L)
  • введіть ~iу діалоговому вікні

Щоб сортувати встановлений розмір в інтерактивному режимі aptitude,

  • натиснути Shift-S(великі літери S)
  • введіть installsizeу діалоговому вікні

Список літератури:


Не впевнений, чи є спосіб це зробити, але було б непогано завжди розміщувати розмір у кБ, що полегшило б їх сортування чи інший процес після обробки.
дероберт

@derobert дивився, як я можу контролювати пробіл на виході здібності, також, мабуть, немає способу змінити вихідний розмір.
Брайам

@Braiam так, яка загальна кількість отриманого місця, якщо я його видалю *texlive*?
terdon

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

9

Якщо ви не хочете встановлювати wajig. Я думаю, у всіх встановлені debian-смаколики:

dpigs              - Show which installed packages occupy the most space

wajig потрібен python 3, що є ще 40mb. для debian-goodies потрібен python 2.6+ та додаткові 700kb. Ця чи відповідь Джозефа - найкраща!
Тім О'Брайен

Я помітив, що dpigsнасправді має той самий результат dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head, що і десятка встановлених пакетів, які займають найбільше місця. Все-таки dpigsце просто і коротко.
клеаркімура

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

Можна використовувати пакет wajig та команду

wajig large

Довідка пояснює, що це робить.

wajig large -h

usage: wajig large [-h]

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

Дивіться також сторінку проекту .


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, подібний до інших інструментів використання дискового простору gui, це не буквальна відповідь на заголовок теми.

Якщо ви сприймаєте питання про цю тему буквально, тобто які найбільші пакети у вашій системі, як правило, це:

Лінійка пакетів пакетів, який не є одним пакетом, але він дійсно великий.

Я думаю, що по-друге, і якщо у вас встановлено кілька ядер, які мають більшість систем, кожне навколо, я думаю, що дисковий простір на 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.