Как очистить кэш пакетов Pacman в Arch Linux

TL;DR
Pacman сохраняет скачанные пакеты в /var/cache/pacman/pkg/. Со временем эти tarball-файлы занимают много места. Для безопасной очистки используйте paccache (рекомендуется) или pacman (-Sc/-Scc). Планируйте автоматическую очистку через systemd-timer и храните 1–3 последних версий пакета.
Краткое описание проблемы
Arch Linux даёт много контроля. Pacman скачивает пакеты в кэш и не удаляет старые версии автоматически. Если вы часто обновляете систему, кэш может вырасти до гигабайт и занять ценный диск. Очистка кэша освобождает место, но требует осторожности — вы можете потерять возможность быстро откатиться на старую версию пакета.
Что такое кэш пакетов и зачем он нужен
Pacman использует локальный кэш в каталоге /var/cache/pacman/pkg/ для хранения загруженных tar.xz-файлов. Кэш экономит трафик и позволяет быстро переустановить или откатить пакет без повторного скачивания. Однако кэш растёт и хранит старые версии, которые чаще всего уже не нужны.

Ключевые команды, которые запускают загрузку в кэш:
- pacman -S <пакет> — скачивает и устанавливает пакет.
- pacman -Syu — обновляет список репозиториев и устанавливает обновления.
При обновлении новые tarball-файлы остаются в кэше, а старые не удаляются автоматически.
Как проверить размер кэша
Простая проверка дискового места, занятого кэшем:
sudo du -sh /var/cache/pacman/pkgСписок пакетов в кэше:
ls -lh /var/cache/pacman/pkgСписок всех установленных пакетов и их версий:
pacman -QЭти команды помогут понять, сколько места занимает кэш и какие пакеты там хранятся.
Способы очистки кэша
Ниже — проверенные подходы от осторожного к агрессивному.
1) Стандартная команда pacman
sudo pacman -ScЧто делает: удаляет все файлы из /var/cache/pacman/pkg/, кроме тех версий пакетов, которые в данный момент установлены. Риски: если вы удалили пакет и захотите установить старую версию — её не будет в кэше. Учтите, что pacman -Sc не удаляет все старые версии установленных пакетов — оно сохраняет версию, установленную сейчас.
Для полной очистки кэша используйте очень осторожно:
sudo pacman -SccЭто удалит весь кэш и потребует повторного скачивания при переустановке.
2) Рекомендуемый способ — paccache
paccache предоставляет гибкий контроль.
sudo paccache -rПо умолчанию paccache оставляет три последние версии каждого пакета и удаляет остальные (включая неустановленные). Если хотите хранить другое количество версий:
sudo paccache -rk1сохранит только одну версию каждого пакета. Чтобы удалить все tarball-файлы пакетов, которых нет на машине:
sudo paccache -ruk0- -r — удалить.
- -kN — оставить N версий каждого пакета.
- -u — применить действие только к пакетам, которые в настоящий момент не установлены (uninstalled).
paccache более безопасен и гибок, поэтому рекомендуется для рабочих систем.
3) Автоматизация с помощью systemd (рекомендуется для серверов и рабочих станций)
Создайте юнит и таймер, чтобы выполнять paccache раз в неделю.
Пример systemd service: /etc/systemd/system/paccache.service
[Unit]
Description=Очистка кэша pacman через paccache
[Service]
Type=oneshot
ExecStart=/usr/bin/paccache -rПример systemd timer: /etc/systemd/system/paccache.timer
[Unit]
Description=Запуск paccache раз в неделю
[Timer]
OnCalendar=weekly
Persistent=true
[Install]
WantedBy=timers.targetПосле создания включите таймер:
sudo systemctl daemon-reload
sudo systemctl enable --now paccache.timerЭто простая и безопасная автоматизация, которую легко отменить.
Когда стоит избегать очистки кэша
- Если вы часто тестируете откаты на старые версии программ.
- Если у вас медленное или лимитированное подключение к Интернету.
- Если зеркало репозитория может не хранить старые сборки.
В таких случаях храните как минимум 2–3 версии пакета или не удаляйте кэш для критичных пакетов.
Действия после очистки
- Проверяйте, что системы и приложения запускаются нормально.
- При проблемах с совместимостью — восстановите систему из резервной копии или скачайте старую сборку из архива пакетов.
Примеры и шпаргалка (cheat sheet)
- Оставить 3 версии каждого пакета (по умолчанию пaccache):
sudo paccache -r- Оставить 1 версию каждого пакета:
sudo paccache -rk1- Удалить все пакеты, которые не установлены локально:
sudo paccache -ruk0- Удалить весь кэш pacman (внимание):
sudo pacman -Scc- Проверить размер кэша:
sudo du -sh /var/cache/pacman/pkgРешение: дерево принятия решения
flowchart TD
A[Проблема: мало диска?] --> B{Кэш пакетов велик?}
B -->|Да| C{Нужны откаты?}
C -->|Да| D[Оставить 2-3 версии: sudo paccache -rk3]
C -->|Нет| E[Удалить неустановленные: sudo paccache -ruk0]
B -->|Нет| F[Нет действий]
D --> G[Настроить systemd-timer]
E --> G
G --> H[Мониторинг и проверка]Рольные чек-листы
Администратор сервера:
- Проверить политику откатов и совместимости.
- Настроить systemd-timer для paccache.
- Проверить зеркало репозиториев на доступность старых версий.
Пользователь рабочего стола:
- Осмотреть размер кэша перед очисткой.
- Использовать paccache -rk1 или -r.
- Не выполнять pacman -Scc без крайней необходимости.
Разработчик / тестировщик:
- Храните 2–3 версии для тестов.
- Документируйте, какие пакеты критичны.
SOP: быстрая инструкция для команды
- Оцените свободное место: sudo df -h
- Оцените размер кэша: sudo du -sh /var/cache/pacman/pkg
- Если требуется очистка, выполните: sudo paccache -rk3
- Проверка: повторите du -sh и перезапустите критичные сервисы.
- Автоматизация: настроить paccache.timer как выше.
Критерии приёмки
- Размер каталога /var/cache/pacman/pkg уменьшился ожидаемо.
- Система успешно загружает и запускает сервисы и приложения.
- Процесс очистки задокументирован и настроен на повторение (таймер или cron).
Контрпримеры и ограничения
- На системах без paccache (редкий случай) можно установить пакет pacman-contrib, который включает paccache.
- Если вы используете AUR-хелперы (yay, paru), они могут иметь собственные кеши. Проверьте ~/.cache/yay и аналогичные каталоги.
Краткий словарь терминов
- tarball — сжатый архив пакета, обычно .tar.xz.
- paccache — скрипт для управления кэшем pacman.
- pacman -Sc / -Scc — команды pacman для очистки кэша.
Безопасность и резервные копии
Очистка кэша не трогает конфигурации, но усложняет откат. Для критичных систем держите резервные копии пакетов или используйте локальное зеркало.
Итог
Pacman кэширует загруженные пакеты и со временем может занять много места. paccache — гибкий и безопасный инструмент для регулярной очистки. Для большинства пользователей достаточно оставить 1–3 версии пакета и настроить регулярную автоматизацию. Всегда проверяйте систему после очистки и документируйте процедуру.

Полезная шпаргалка (напоминание):
- sudo paccache -r — удалить старые, оставить 3 версии.
- sudo paccache -rk1 — оставить 1 версию.
- sudo paccache -ruk0 — удалить неустановленные пакеты.
- sudo pacman -Scc — удалить весь кэш (крайняя мера).
Важно: перед массовой очисткой убедитесь, что у вас есть резервные планы для восстановления старых версий.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента