Как удалить старые пакеты, установленные pacman в Arch Linux?

Как удалить старые пакеты, установленные pacman в Arch Linux?

Недавно я установил Arch Linux и обнаружил, что я довольно быстро пожираю много места на диске. По какой-то причине я уже использовал 17 ГБ всего за 2 недели. У меня не так много установленного ПО, поэтому я склонен полагать, что все старые пакеты где-то сохраняются.

В подтверждение этого я заметил, что если я установил пакет, удалил его, а затем переустановил его, то pacman просто распаковал и переустановил программное обеспечение без необходимости его повторной загрузки.

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

Я полностью ошибаюсь или Arch никогда не удаляет старые пакеты при загрузке/обновлении до новых версий?

Если да, то как удалить эти неиспользуемые пакеты?

Также, когда я удаляю установленные пакеты, я используюpacman -R ...

решение1

Нет, pacman не удаляет старые пакеты из кэша ( /var/cache/pacman/pkg), поэтому со временем он может заполниться.

Вы можете использовать два подхода к очистке кэша: метод грубой силы pacman -Sc:

-c, --clean
Удаляет пакеты, которые больше не установлены из кэша, а также неиспользуемые в данный момент базы данных синхронизации, чтобы освободить место на диске. Когда pacman загружает пакеты, он сохраняет их в каталоге кэша. Кроме того, базы данных сохраняются для каждой синхронизированной базы данных, из которой вы загружаете, и не удаляются, даже если они удалены из файла конфигурации pacman.conf(5). Используйте один ключ --clean, чтобы удалить только пакеты, которые больше не установлены; используйте два, чтобы удалить все файлы из кэша. В обоих случаях у вас будет возможность удалить пакеты и/или неиспользуемые загруженные базы данных.

Или, для более тонкого подхода, вы можете использовать одну из утилит, поставляемых с pacman-contrib paccache:

paccache — это гибкая утилита очистки кэша pacman, которая имеет множество опций, помогающих контролировать объем и содержание данных, удаляемых из любого каталога, содержащего tar-архивы пакетов pacman.

По умолчанию paccache -rудалит все версии установленного пакета, кроме последних трех, но вы можете изменить это число с помощью переключателя -k, --keep. Также есть -d, --dryrunпереключатель для предварительного просмотра ваших изменений. Вы также можете использовать -m, --move <dir>опцию для перемещения пакетов в отдельный каталог по вашему выбору. См. paccache -hили paccache --helpдля всех переключателей.

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

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

решение2

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

ПРИМЕЧАНИЕ: pacmanПакеты были обновлены в 2018 году и дополнительно требуют установки pacman-contribдля использования скриптов/инструментов, paccacheописанных ниже.

Делать:

paccache -d

Чтобы сделать -dryrunи посмотреть, что может удалить запуск этой утилиты при следующем запуске:

paccache -r

Чтобы удалить кэшированные пакеты. 17 ГБ звучит круто. Убедитесь, что у вас нет каких-то вышедших из-под контроля журналов. Сделайте:

du -h /var/log

Или даже просто:

du -h /var

Для более общего представления о том, что происходит.

решение3

Я настоятельно рекомендую использоватьpaccacheвместо pacman -Sc. Есть даже очень эффективный флаг для выборочного удаления версий неустановленных пакетов -u. Флаги, которые paccacheя рекомендую, следующие (как часть paccache v5.0.2):

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

Пример: проверка оставшихся версий кэша неустановленных пакетов

paccache -dvuk0

решение4

pacman -Sccделает то, о чем вы просите, но это не рекомендуется. ИзВики

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

Кстати, когда я удаляю пакеты, я предпочитаю использовать pacman -Rnsc, так как он также удаляет зависимости пакетов, а также пакеты, которые зависят от этого. Как всегда, внимательно читайте, какие пакеты удаляются, так как вы можете очень легко оставить нашу систему в непригодном для использования состоянии.

Связанный контент