Кэш pacman — не враг, а страховка. Он лежит в /var/cache/pacman/pkg и хранит скачанные версии пакетов, поэтому позволяет откатить обновление или переустановить пакет без интернета. Чистить его нужно точечно: paccache -rk1 оставляет по одной свежей версии каждого пакета и освобождает почти весь объём, а pacman -Scc вычищает всё под ноль и лишает тебя возможности отката. Правильная чистка — это paccache, а не полное стирание кэша.
Кэш живёт в /var/cache/pacman/pkg. Каждый раз при установке или обновлении pacman кладёт туда архив .pkg.tar.zst. Старые версии при этом не удаляются автоматически — они копятся рядом со свежими. После пары крупных обновлений ядра, браузера и офисного пакета кэш легко разрастается до нескольких гигабайт.
Проверь текущий размер:
du -sh /var/cache/pacman/pkg
Загляни внутрь — там лежат архивы всех версий, которые pacman когда-либо скачивал:
ls /var/cache/pacman/pkg | wc -l
Число покажет, сколько архивов накопилось. У одного пакета может быть три-четыре версии: свежая, пара старых и версия, которая уже не установлена. Формат архивов — .pkg.tar.zst: сжатый tar с файлами пакета и метаданными. Именно эти файлы pacman распаковывает при установке, поэтому они и нужны для переустановки без сети.
Если корневой раздел маленький, кэш — один из первых кандидатов на раздувание. Вместе с ним место съедают логи, снапшоты и старые ядра. Про заполнение корня подробнее — в статье «Корневой раздел заполняется».
Кэш — это локальная копия того, что ты уже скачал. Три сценария, где он спасает:
pacman -U /var/cache/pacman/pkg/имя-пакета.pkg.tar.zst поставит её офлайн.Сценарий с офлайн-переустановкой особенно актуален на ноутбуке, который не всегда подключён к сети: кэш — единственный источник пакетов, когда интернета нет.
Если вычистить кэш полностью, откат превращается в скачивание старой версии из архива Arch Linux — медленно и не всегда возможно. Поэтому кэш не враг, а инструмент. Вопрос только в том, сколько версий хранить.
Обновления в Arch выходят часто, и редкий, но реальный сценарий — битая свежая версия пакета. Кэш на этот случай — дешёвая страховка: пара гигабайт на диске против часов на восстановление системы. Поэтому вопрос не «чистить или нет», а «сколько версий оставить».
paccache входит в пакет pacman-contrib. Проверь, что он установлен:
pacman -Q pacman-contrib
Если пакета нет — поставь его:
sudo pacman -S pacman-contrib
paccache удаляет старые версии пакетов, оставляя выбранное число свежих. Как это работает: paccache смотрит на установленные пакеты, находит в кэше все их версии и удаляет лишние, оставляя -k самых свежих. Важная деталь: по умолчанию он работает только с версиями установленных пакетов. Архивы удалённых пакетов он не трогает — для них есть отдельный флаг.
sudo paccache -rk1
Оставляет одну самую свежую версию каждого установленного пакета. Освобождает максимум места, но окно отката сужается до одной версии. Хороший вариант для регулярной чистки после обновлений.
sudo paccache -rk2
Держит две последние версии. Если свежая версия окажется битой, у тебя остаётся предыдущая. Экономия чуть меньше, зато спокойнее. Подходит, если ты часто обновляешься и хочешь подстраховаться.
sudo paccache -ruk0
Удаляет все версии пакетов, которых уже нет в системе. Это первое, что стоит сделать при чистке: такие архивы занимают кучу места и никогда не понадобятся. Флаг u — uninstalled, k0 — хранить ноль версий.
Есть и промежуточный вариант — paccache -a: он сохраняет все версии установленных пакетов и удаляет только архивы удалённых. Максимальная страховка, если место позволяет.
Две команды удобно запускать подряд: сначала paccache -ruk0 убирает архивы удалённых пакетов, потом paccache -rk1 сжимает версии установленных. Вместе они освобождают максимум места, сохраняя одну свежую версию каждого пакета.
paccache -dv
Показывает, что было бы удалено, ничего не трогая. Флаг -d — dry-run, -v — подробный вывод. Вывод перечисляет пакеты и объём, который освободится. Полезно запустить перед первой чисткой, чтобы понять масштаб и убедиться, что paccache не собирается удалять лишнее.
pacman -Sc удаляет из кэша версии, которых больше нет ни в одном репозитории — то есть старее текущей. Текущие установленные версии остаются на месте. Команда безопасная, но экономит меньше, чем paccache: она не трогает свежие версии, которые занимают основную часть объёма.
pacman -Sc полезно запускать после долгого перерыва в обновлениях: в кэше накопится много версий, которых уже нет в репозиториях, и команда уберёт их, оставив актуальные. Но если ты обновляешься регулярно, -Sc почти ничего не удалит — свежие версии и так совпадают с репозиторными.
pacman -Scc вычищает кэш почти полностью: удаляет все архивы, включая версии установленных пакетов. После этого откат невозможен без повторного скачивания. Применяй только когда место критично, и помни: кэш — страховка, а -Scc её сжигает. Разница между двумя командами — одна буква, а последствия разные.
Сироты — пакеты, установленные когда-то как зависимости, но больше не нужные ни одному установленному пакету. Они занимают место в системе, но не в кэше. Чистка сирот освобождает место в корневом разделе, а не в кэше — это два разных источника мусора. Список:
pacman -Qtdq
Удаление вместе с ненужными зависимостями и конфигами:
sudo pacman -Qtdq | sudo pacman -Rns -
Откуда берутся сироты? Пакет перестаёт зависеть от другой библиотеки после обновления, или ты удаляешь программу, а её зависимости остаются. pacman не трогает их автоматически — он не знает, не понадобятся ли они тебе.
Команда pacman -Qtd покажет тот же список с описаниями пакетов — удобно, чтобы понять, что именно удаляешь. pacman -Qtdq выводит только имена, готовые для передачи в pacman -Rns.
Перед удалением просмотри список — иногда сироты оказываются нужными. Например, пакет, который ты ставил вручную, а потом забыл. Если сомневаешься — оставь его. И учти: флаг -n в pacman -Rns удаляет и конфигурационные файлы. Если планируешь когда-нибудь вернуть пакет и хочешь сохранить настройки — убери -n из команды.
Простой график без фанатизма:
sudo paccache -rk1. Занимает секунды и не даёт кэшу разрастись.sudo paccache -rk1, затем sudo paccache -ruk0 и чистка сирот через pacman -Qtdq | pacman -Rns -.Кэш — локальный, на обновления он не влияет. Чистка не ускоряет и не замедляет pacman, она только освобождает диск. Если место не поджимает, можно вообще не чистить — полный кэш сам по себе ничего не ломает.
После чистки проверь результат:
du -sh /var/cache/pacman/pkg
Сравни с числом до чистки — так увидишь, сколько места освободилось. Если кэш снова разросся через неделю, значит, ты обновляешься часто. Это нормально, просто прогоняй paccache -rk1 почаще. Для большинства систем месячной рутины хватает: кэш не успевает разрастись, а сироты не накапливаются. Автоматизировать чистку можно через systemd-таймер, но для разовой команды это избыточно — проще держать под рукой одну строку и запускать её после обновлений.
Отдельная тема — старые ядра и initramfs, они тоже копятся и занимают место. Их чистка описана в статье «Чистка старых ядер и initramfs». А если хочешь понять, какие пакеты съедают больше всего места, — смотри статью «Какие пакеты занимают место».
Установи pacman-contrib: sudo pacman -S pacman-contrib. paccache входит именно в этот пакет.
Нет. paccache всегда оставляет как минимум одну версию каждого установленного пакета. С -rk1 это самая свежая. Даже если в кэше лежит только одна версия — она останется нетронутой.
paccache гибче: ты сам выбираешь, сколько версий хранить. pacman -Sc просто убирает версии, которых нет в репозиториях. Обе команды безопасны для текущих установленных пакетов.
Можно, но не стоит: потеряешь возможность отката и офлайн-переустановки. В /etc/pacman.conf есть опция CleanMethod — она меняет поведение pacman -Sc, но не отключает кэш целиком. Лучше регулярная чистка paccache — она даёт почти тот же эффект по месту, но сохраняет страховку.
Нет. Сироты — установленные пакеты, которые занимают место в системе. Кэш — архивы в /var/cache/pacman/pkg. Чистятся они по-разному: сироты через pacman -Rns, кэш через paccache.
Кэш pacman — не мусор, а локальная страховка для отката и офлайн-переустановки. Чисти его точечно: paccache -rk1 после обновлений, paccache -ruk0 для версий удалённых пакетов, pacman -Scc — только в крайнем случае. Отдельно раз в месяц убирай сироты через pacman -Qtdq | pacman -Rns -. Так диск останется свободным, а возможность отката — на месте.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии