Як видалити старі пакети, встановлені Pacman в Arch Linux?


51

Нещодавно я встановив Arch Linux і виявив, що досить швидко поїдаю на багатьох сховищах. З будь-якої причини я вже використав 17 Гб лише за 2 тижні. У мене не встановлено багато програмного забезпечення, тому я вважаю, що всі старі пакети десь підтримуються.

Щоб підтримати це, я помітив, що якщо я встановив пакет, видаліть його, а потім повторно встановіть його, щоб Pacman просто розпакував і перевстановив програмне забезпечення без необхідності його повторного завантаження.

Після того, як я встановив свою базову систему, перш ніж додаткове програмне забезпечення, я використав близько 2 Гб або близько того, можливо. З тих пір я встановив лише Matlab, Skype, Wine та кілька інших невеликих програм. Звичайно, я також встановив відсутні бібліотеки тощо, але вартістю майже 15 Гб.

Чи я тут абсолютно помиляюся чи Arch ніколи не видаляє старі пакунки під час завантаження / оновлення до нових версій?

Якщо так, то як видалити ці невикористані пакети?

Також при видаленні встановлених пакетів я використовую pacman -R ...


1
Це, мабуть, хороша ідея, щоб налаштувати какао як звичайну роботу cronабо systemdроботу.
Sparhawk

Відповіді:


59

Ні, Pacman не видаляє старі пакунки з кешу ( /var/cache/pacman/pkg), тому з часом він може заповнюватися.

Ви можете скористатися двома підходами до очищення кеша: груба сила з pacman -Sc:

-c, --clean
Видаліть пакети, які вже не встановлені з кешу, а також невикористані на даний момент бази даних синхронізації для звільнення місця на диску. Коли pacman завантажує пакети, він зберігає їх у каталозі кешу. Крім того, бази даних зберігаються для кожної БД синхронізації, яку ви завантажуєте, і не видаляються, навіть якщо вони видалені з файлу конфігурації pacman.conf (5). Використовуйте один - чистий перемикач, щоб видалити лише ті пакунки, які більше не встановлені; використовуйте два, щоб видалити всі файли з кешу. В обох випадках у вас буде опція "так" або "ні" для видалення пакетів та / або невикористаних завантажених баз даних.

Або, для більш тонкого підходу, ви можете використовувати один з утиліт , який поставляється з pacman-вно, paccache:

paccache - це гнучка утиліта для очищення кеш-пам'яті Pacman, яка має численні варіанти, які допомагають контролювати, скільки і що, видаляється з будь-якого каталогу, що містить тарболи пакету Pacman.

За замовчуванням paccacheбуде видалено всі, крім останніх трьох версій встановленого пакету, але ви можете змінити це число за допомогою -k, --keepперемикача. Також є -d, --dryrunперемикач для попереднього перегляду змін. Перегляньте paccache --helpвсі вимикачі.

У пакеті pacman-contrib є декілька утиліт, щоб допомогти в управлінні пакунками, варто роздивитися їх усі, і зрозуміти, як вони працюють, і це може значно спростити запуск Arch. Повний список ви можете побачити за допомогою:

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'

Jasonwryan сказав це :) Також будьте дуже обережні з подвійним --cleanперемикачем: забороняє легко повертатися до робочого пакету, якщо будь-яка проблема трапляється з останньою версією (наприклад, новий пакет покладається на більш стару версію або випуск Python; те ж саме з апаратними та останніми версіями) ядро). Я вважаю, що налаштування кеш-пам'яті Pacman в іншому місці, ніж /набагато краще рішення (просто встановіть шлях у /etc/pacman.conf ).
tuk0z

2
Якщо у вас немає, paccacheви можете отримати його, встановивши pacman-contribпакет.
pfrenssen

+1, але я пропоную $ pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin\/./ {print $NF}'уникати порожнього рядка в результатах? ;-)
Cbhihe

Welp, rm -rf /var/cache/pacman/pkgбуло неправильно робити
Повідомлення про себе

відповідна сторінка ArchWiki: wiki.archlinux.org/index.php/pacman#Cleaning_the_package_cache
wxyz

13

Ваш кеш пакету знаходиться в /var/cache/pacman/pkg/.

ПРИМІТКА: pacman пакети були оновлені у 2018 році та додатково потребують встановлення, pacman-contribщоб використовувати сценарії / інструменти, як paccacheописано нижче.

Зробіть:

paccache -d

Щоб зробити -dryrunта побачити, що запуск цієї утиліти може видалитись при наступному виконанні:

paccache -r

Для видалення кешованих пакетів. 17 Гб звучить круто. Переконайтеся, що у вас немає журналів про вибіг. Зробіть:

du -h /var/log

Або навіть просто:

du -h /var

Для більш загального уявлення про те, що відбувається.


7

pacman -Sccробить те, що ви просите, але це не рекомендується. З Вікі

Також можна повністю виповнити папку кеша з pacman -Scc , але це вважається поганою практикою, оскільки, крім вищезазначеного, також заважає перевстановлювати пакет безпосередньо з папки кеша в разі потреби, тим самим примушуючи перезавантажити його. Ніколи не слід користуватися ним, якщо немає відчайдушної потреби в більшій кількості дискового простору.

Як сторону, коли я видаляю пакунки, я вважаю за краще використовувати pacman -Rnsc, оскільки це також усуває залежність від пакунків, а також пакети, які залежать від цього. Як завжди, уважно читайте, які пакунки видаляються, оскільки ви могли дуже легко залишити нашу систему у непридатному стані.


Це круто - значить, це рівнозначно rm /var/cache/pacman/pkg/*тоді? Або - як принаймні, напевно. Я давно перемістив кеш-пам'ять на кг /tmpна більшості машин і дозволяю squidобробляти єдиний центральний кеш на маршрутизаторі. Не так просто, як pacman -Sccніби.
mikeserv

@mikeserv Центральний кеш-пакет Pacman на вашому маршрутизаторі? Як ви це налаштували, мені подобається звук, оскільки у мене є і робочий стіл Arch, і ноутбук.
семеро

6

Я настійно пропоную використовувати paccacheзамість цього pacman -Sc. Існує навіть дуже ефективний прапор для вибіркового видалення версій невстановлених пакетів -u. Прапорці, які paccacheя рекомендую (як частина paccache v5.0.2):

  • -d, --dryrun: виконайте сухий пробіг, знайшовши лише пакети кандидатів
  • -r, --remove: видалити пакети-кандидати
  • -u, --uninstalled: націлити лише видалені пакети
  • -k, --keep <num>: зберігати "num" кожного пакету в кеші (за замовчуванням: 3)

Приклад: Перевірте, чи не залишилися версії кешу видалених пакетів

paccache -dvuk0

1
Як це додає до існуючих відповідей, окрім друку варіантів?
Jasonwryan

Якщо ви видалили багато невикористаних великих пакетів, ви хочете видалити їх з кеш-пам'яті Pacman. Це можливо за допомогою прапора -uРосії paccache. Прикладами великих пакетів є, наприклад, Gnome, KDE або Texlive, щоб дати вам уявлення.
strpeter

1
Так, я знайомий з прапором. Моя думка, що лише додавання більше прапорів до відповіді не змінює того факту, що воно просто повторює те, що вже є тут.
Jasonwryan

-kпрапор був новим для мене , і не дуже добре пояснено в діалоговому вікні довідки, тому його використання тут було корисно.
hLk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.