Недавно я установил 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
, так как он также удаляет зависимости пакетов, а также пакеты, которые зависят от этого. Как всегда, внимательно читайте, какие пакеты удаляются, так как вы можете очень легко оставить нашу систему в непригодном для использования состоянии.