Введение / Зачем это нужно
Пакетный менеджер APT (Advanced Package Tool) в Ubuntu и других дистрибутивах на его основе хранит в специальной папке /var/cache/apt/ все скачанные установочные файлы пакетов (файлы .deb). Этот кэш пригождается при переустановке пакетов или обновлении системы — не нужно каждый раз качать одни и те же файлы из интернета.
Однако со временем кэш может вырасти до нескольких гигабайт, особенно на системах, часто обновляющих ПО. Очистка кэша — это простой и безопасный способ освободить место на системном разделе (часто это / или /var), что особенно актуально для SSD с ограниченным объёмом или виртуальных машин.
Этот гайд покажет, как правильно очистить кэш APT, не повредив системе, и как настроить автоматическую поддержку чистоты.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к учётной записи с правами sudo (администратора).
- Вы работаете в терминале (Ctrl+Alt+T или через SSH).
- У вас установлен стандартный менеджер пакетов APT (есть по умолчанию во всех официальных flavours Ubuntu).
- Рекомендуется иметь стабильное интернет-соединение на случай, если после очистки вам потребуется заново скачать метаданные (
apt update) или пакеты.
Пошаговая инструкция
Шаг 1: Проверьте текущий размер кэша APT
Сначала оценим, сколько места занимает кэш. Это поможет понять масштаб проблемы.
sudo du -sh /var/cache/apt/
Пример вывода:
1,2G /var/cache/apt/
В данном случае кэш занимает 1,2 гигабайта. Если вывод показывает 0 или несколько килобайт, очистка может не понадобиться.
Шаг 2: Очистите кэш полностью (apt clean)
Эта команда удаляет все без исключения файлы из папок кэша (/var/cache/apt/archives/ и /var/cache/apt/archives/partial/).
sudo apt clean
Что происходит:
- Система запрашивает ваш пароль sudo.
- Все скачанные
.deb-пакеты безвозвратно удаляются. - После этого папка
/var/cache/apt/archives/будет пустой (или содержать только служебные lock-файлы).
⚠️ Важно: После
apt cleanпри переустановке любого пакета его установочный файл будет загружаться заново из репозиториев. Это не сломает систему, но увеличит трафик при следующих операциях.
Шаг 3: Очистите только устаревшие пакеты (apt autoclean) — альтернативный вариант
Если вы хотите сохранить возможность быстрой переустановки последних версий пакетов без их повторной загрузки, используйте более щадящий метод.
sudo apt autoclean
Что происходит:
- APT анализирует кэш и сравнивает список имеющихся
.deb-файлов с актуальным списком пакетов в репозиториях. - Удаляются только те файлы, которые больше не представлены в репозиториях (например, старые версии, заменённые на новые).
- Самые свежие версии пакетов остаются в кэше.
Это хороший компромисс между свободой места и удобством.
Шаг 4: Проверьте результат очистки
Сразу после любой из команд выше проверьте, сколько места осталось.
sudo du -sh /var/cache/apt/
Ожидаемый вывод после clean или autoclean:
12K /var/cache/apt/
Если размер не изменился, возможно, кэш уже был пуст или вы работали в системе, которая только что была обновлена и кэш ещё не наполнился.
Проверка результата
- Размер на диске: Выполните команду из шага 4 и убедитесь, что размер папки
/var/cache/apt/резко уменьшился. - Работоспособность APT: Проверьте, что менеджер пакетов жив. Обновите список пакетов:
Ошибок быть не должно. Если команда отработала успешно, система в порядке.sudo apt update - Свободное место: Посмотрите, сколько места освободилось на системном разделе (обычно
/):
Сравните значениеdf -h /Availableдо и после очистки.
Возможные проблемы
E: Could not open lock file /var/lib/dpkg/lock-frontend
Причина: Другой процесс (например,aptилиunattended-upgrades) уже использует APT.
Решение: Дождитесь завершения фоновых обновлений или завершите процессsudo killall apt apt-get.- Кэш не очищается, размер не меняется
Причина: Кэш уже пуст, или вы неправильно указали путь.
Решение: Проверьте, что выполняете команды сsudo. Вручную посмотрите содержимое:ls -la /var/cache/apt/archives/. - После очистки
apt updateстал медленнее
Причина: Это нормально. При первом запуске послеcleanAPT загружает все метаданные репозиториев заново. Последующие вызовы будут работать с кэшем метаданных и будут быстрыми. - Ошибка доступа к
/var/cache/apt/без sudo
Причина: Эта папка принадлежит root и требует повышенных прав.
Решение: Всегда используйтеsudoдля командapt cleanиapt autoclean.
Дополнительные советы и автоматизация
Для поддержания системы в чистоте рекомендуется периодически (раз в месяц) выполнять sudo apt autoclean. Если вы уверены, что никогда не будете переустанавливать старые пакеты, можно использовать sudo apt clean раз в квартал.
Настройка автоматической очистки
- Через
unattended-upgrades(если установлен): Откройте конфиг/etc/apt/apt.conf.d/50unattended-upgradesи найдите строку//Unattended-Upgrade::Remove-Unused-Kernel-Programming "false";. Рядом добавьте:APT::Clean-Installed "true";
Это автоматически удалит устаревшие пакеты после каждого автоматического обновления. - Через cron (простой вариант):
Добавьте задание в crontab (
sudo crontab -e):0 4 * * 0 /usr/bin/apt autoclean -y
Эта задача будет выполняться каждое воскресенье в 4:00 утра. - Для серверов без
unattended-upgrades: Создайте скрипт/usr/local/bin/apt-cache-clean.sh:#!/bin/bash apt autoclean -y
Дайте праваsudo chmod +x /usr/local/bin/apt-cache-clean.shи добавьте в cron.
Важно: Не настраивайте apt clean в cron на частое выполнение (например, ежедневно), так как это может привести к ненужной загрузке пакетов при частых обновлениях.