Как очистить кэш пакетов в Arch Linux
Что произошло с моим диском?
Arch Linux сохраняет копии всех загруженных пакетов в каталоге /var/cache/pacman/pkg/. Это включает установленные версии и предыдущие версии пакетов, которые могут понадобиться для отката после неудачного обновления. Такая политика полезна на rolling-release дистрибутивах, но кэш быстро накапливает гигабайты, если им не управлять.
Важно: файлы в кэше — это не системные файлы, их можно удалить. Но при удалении старых пакетов вы теряете возможность быстро откатиться к предыдущей версии.
Быстрое очищение: pacman
Если нужно быстро освободить место, pacman умеет чистить кэш из коробки.
Команды:
pacman -ScЭта команда удалит из кэша те пакеты, которые в данный момент не установлены.
pacman -SccЭта команда удалит весь кэш (включая текущие версии). Не рекомендуется делать это на серверах без возможности быстрого восстановления пакетов, потому что после этого у вас не будет локальных архивов для отката.
Гибкий вариант: paccache (pacman-contrib)
pacman -Sc и -Scc — «всё или ничего». Для баланса используйте paccache из пакета pacman-contrib.
Установка:
sudo pacman -S pacman-contribПример: удалить из кэша все версии пакета, кроме трёх последних (paccache по умолчанию оставляет 3 последние версии):
sudo paccache -rЕсли нужно явно сохранить ровно N последних версий, используйте -k:
sudo paccache -rk1Это сохранит только одну последнюю версию каждого пакета.
Совет: всегда запускайте paccache с sudo, иначе не будет доступа к системному кэшу.
Как проверить, какие пакеты и сколько места занимает кэш
Команды для анализа:
sudo du -sh /var/cache/pacman/pkg
sudo du -sh /var/cache/pacman/pkg/* | sort -h
ls -lh /var/cache/pacman/pkg | tail -n 20Эти команды помогут понять общий размер кэша и какие файлы занимают больше места.
Автоматизация: systemd timer для paccache
На Arch обычно есть юниты systemd для paccache. Вы можете включить таймер, чтобы кэш автоматически чистился по расписанию.
Включение системного таймера (если он поставляется с pacman-contrib):
sudo systemctl enable --now paccache.timerЕсли таймер отсутствует или вы хотите задать свой интервал, создайте пользовательский таймер в /etc/systemd/system/paccache.service и /etc/systemd/system/paccache.timer.
Пример простого service и timer:
# /etc/systemd/system/paccache.service
[Unit]
Description=Run paccache to clean pacman cache
[Service]
Type=oneshot
ExecStart=/usr/bin/paccache -r
# /etc/systemd/system/paccache.timer
[Unit]
Description=Run paccache weekly
[Timer]
OnCalendar=weekly
Persistent=true
[Install]
WantedBy=timers.targetЗатем активируйте:
sudo systemctl daemon-reload
sudo systemctl enable --now paccache.timerЧто делать, если нужно сохранить конкретный пакет
Если вы планируете быстро откатиться для одного пакета, скопируйте нужный архив из кэша в другое место прежде, чем запускать массовую зачистку:
sudo cp /var/cache/pacman/pkg/name-1.2.3-1-x86_64.pkg.tar.zst ~/backups/Или скачайте пакет заново из репозитория с помощью pacman -Sw:
pacman -Sw package-nameКогда очистка кэша не решит проблему
- Если проблема — не кэш, а лог-файлы: проверьте /var/log и journalctl –vacuum-size.
- Если диск переполнен из-за временных файлов (например, /tmp) — почистите их отдельно.
Безопасность и риски
Важно: удаление кэша не влияет на установленные пакеты, но удаление текущих версий лишит вас локального резерва для отката. Всегда имейте резервную стратегию (backup/rsync, Btrfs snapshots, Timeshift).
Практические примеры и шаблоны
- Единоразовая очистка, оставляя 3 версии (по умолчанию):
sudo paccache -r- Оставить только текущую версию каждого пакета:
sudo paccache -rk1- Полная очистка (аналог pacman -Scc):
sudo rm -v /var/cache/pacman/pkg/*Используйте rm только если понимаете последствия.
Мини-методология для регулярного обслуживания
- Еженедельно: проверять размер кэша и свободное место.
- Настроить paccache.timer или cron/systemd-таймер.
- Перед крупным обновлением делать резервную копию важных пакетов/снимок.
- После очистки проверить статус диска и работающие сервисы.
Роли: чек-листы
Desktop-пользователь:
- Запустить sudo paccache -r раз в месяц.
- Включить paccache.timer.
- Копировать редкие пакеты вручную при необходимости.
Серверный администратор:
- Настроить paccache с -k2 или -k1 в зависимости от SLA.
- Включить мониторинг свободного места и алерты.
- Перед major-обновлением создать снимок/backup.
Пользователь с ограниченным диском (микро-VM):
- Оставлять только текущие версии: sudo paccache -rk1
- Ограничить логи journalctl: sudo journalctl –vacuum-size=100M
Когда paccache не поможет — альтернативы
- Управление снимками: Btrfs/ZFS snapshots позволяют откатываться без хранения пакетов.
- Локальный репозиторий: храните важные пакеты на приватном репозитории или на NAS.
- Ограничение размера кэша через регулярные задачи (cron/systemd).
Факто-бокс: ключевые моменты
- Место кэша: /var/cache/pacman/pkg/
- Быстрая очистка: pacman -Sc (удаляет неустановленные пакеты)
- Полная очистка: pacman -Scc (удаляет всё)
- Гибкая очистка: paccache (pacman-contrib), по умолчанию сохраняет 3 последние версии
Критерии приёмки
- Диск: свободное место увеличилось на ожидаемую величину.
- Система: пакеты, которые нужны в рабочем состоянии, не удалены.
- Автоматизация: таймер или cron запущен и выполняется корректно.
Полезные команды для проверки после очистки
df -h /
sudo du -sh /var/cache/pacman/pkg
sudo journalctl --no-pager -n 50Часто задаваемые вопросы
Как вернуть пакет из кэша, если он был удалён?
Если пакет удалён из кэша, скачайте его снова командой pacman -Sw package-name или найдите нужную версию на AUR/репозитории и установите.
Можно ли полностью автоматизировать очистку без риска?
Да, если у вас есть надёжные бэкапы или файловая система со снапшотами. На серверах рекомендовано сохранять хотя бы одну предыдущую версию или использовать снимки.
Наглядный выбор: простая диаграмма
flowchart TD
A[Кэш слишком большой?] -->|да| B{Нужны ли старые версии?}
B -- Да --> C[Установить paccache и оставить N версий]
B -- Нет --> D[Использовать pacman -Scc или rm]
C --> E[Настроить paccache.timer]
D --> E
A -->|нет| F[Ничего не делать]Краткое резюме
Очистка кэша pacman помогает быстро вернуть место на диске. Для безопасного и гибкого управления используйте paccache из pacman-contrib и автоматизируйте процесс через systemd timer. Всегда имейте резервную стратегию, если вы полагаетесь на старые пакеты для отката.
Социальный превью (рекомендация): “Освободите место в Arch Linux: pacman, paccache и автоматизация очистки кэша”.
Короткое объявление (для рассылки, 100–200 слов):
Освободите место на диске в Arch Linux без потери возможности отката. Arch сохраняет все загруженные пакеты в /var/cache/pacman/pkg/, и этот кэш со временем занимает значительное пространство. Для быстрой зачистки используйте pacman -Sc или pacman -Scc. Для более гибкого управления установите pacman-contrib и применяйте paccache (по умолчанию оставляет несколько последних версий). Рекомендуется включить paccache.timer или настроить systemd-таймер, чтобы автоматизировать процесс. На серверах сохраняйте минимум одну предыдущую версию и применяйте снимки/бэкапы для надёжного отката.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone