Самая частая ошибка при удалении пакета — считать что работа закончена после одной команды. На диске остаются конфиги, кеш, зависимости которые больше никому не нужны. Через полгода такой «чистки» система пухнет от мусора. Разбираем как убирать по-настоящему.
Три уровня удаления в apt (Debian, Ubuntu, Mint)
У apt есть принципиальное разделение которое знают не все.
Первый уровень — убрать только исполняемые файлы, конфиги оставить:
sudo apt remove htop
Когда это нужно: собираетесь переустановить пакет позже и хотите сохранить настройки.
Второй уровень — убрать всё включая конфиги из /etc:
sudo apt purge htop
Домашняя директория при этом не трогается — ~/.config/htop останется. Это сделано намеренно: системные команды не должны лезть в личные файлы пользователей.
Третий уровень — найти и добить то что осталось от предыдущих удалений:
dpkg --list | grep '^rc'
Буквы rc в начале строки означают: пакет удалён (r = removed), конфиги живы (c = config-files). Бывает что таких записей накапливается несколько десятков. Очистить всё за один вызов:
sudo apt purge $(dpkg --list | grep '^rc' | awk '{print $2}')
Зависимости которые остались без хозяина
После удаления пакета его зависимости никуда не уходят — они просто перестают быть нужными. apt помечает их как «автоматически установленные» и предлагает убрать:
sudo apt autoremove
Привычка запускать autoremove после каждого remove или purge — это хорошая гигиена системы. На серверах которые живут годами без неё накапливается по несколько гигабайт ненужных пакетов.
Посмотреть что именно будет удалено до запуска:
sudo apt autoremove --dry-run
Кеш который растёт сам по себе
Каждый скачанный .deb остаётся в /var/cache/apt/archives/. На активно обновляемой системе папка вырастает до нескольких гигабайт.
Проверить размер:
du -sh /var/cache/apt/archives/
Удалить всё накопленное:
sudo apt clean
Удалить только устаревшие версии, оставить актуальные:
sudo apt autoclean
Red Hat-семейство: dnf умеет больше чем кажется
На RHEL 8+, Fedora, Rocky, AlmaLinux используется dnf. На CentOS 7 — yum. Синтаксис одинаковый.
Удалить пакет — dnf сам спросит про зависимости:
sudo dnf remove nginx
Без вопросов:
sudo dnf remove -y nginx
Отдельная очистка осиротевших зависимостей:
sudo dnf autoremove
Не знаете имя пакета, но знаете файл который он поставил:
rpm -qf /usr/sbin/nginx
Вернёт точное имя. Потом передаёте его в dnf remove.
Пакеты в Red Hat-системах объединяются в группы — «Development Tools», «Web Server» и так далее. Убрать группу целиком:
sudo dnf groupremove "Development Tools"
Arch Linux: три команды с нарастающей агрессивностью
-R — только сам пакет, зависимости не трогает:
sudo pacman -R firefox
-Rs — пакет плюс всё что установилось вместе с ним и больше нигде не используется:
sudo pacman -Rs firefox
-Rns — то же самое плюс системные конфиги. Максимально чистое удаление:
sudo pacman -Rns firefox
Осиротевшие пакеты в Arch накапливаются со временем. Найти и уничтожить всё лишнее:
sudo pacman -Qdtq | sudo pacman -Rns -
-Qdtq возвращает список пакетов без зависимых, пайп передаёт его прямо в команду удаления.
openSUSE: zypper с зависимостями
sudo zypper remove nginx
Убрать вместе с зависимостями которые стали ненужными:
sudo zypper remove --clean-deps nginx
Snap: невидимый мусор в ревизиях
У snap есть особенность о которой мало кто знает — он хранит несколько ревизий каждого пакета. Поставили обновление — старая версия осталась на диске. По умолчанию хранится две ревизии, и они занимают место.
Список всего установленного:
snap list
Удалить пакет:
sudo snap remove spotify
Посмотреть все ревизии включая отключённые:
snap list --all
Удалить конкретную ревизию:
sudo snap remove spotify --revision=123
Скрипт для удаления всех отключённых ревизий разом:
snap list --all | awk '/disabled/{print $1, $3}' | while read pkg rev; do
sudo snap remove "$pkg" --revision="$rev"
done
Flatpak: не забыть про runtime
flatpak list
Удалить приложение:
sudo flatpak uninstall com.spotify.Client
Flatpak хранит runtime-окружения — общие библиотеки для нескольких приложений. После удаления программ они часто остаются висеть:
sudo flatpak uninstall --unused
Если нужно убрать и пользовательские данные вместе с приложением:
sudo flatpak uninstall --delete-data com.spotify.Client
Что занимает больше всего места: смотрим до чистки
Прежде чем начинать массовое удаление — полезно понять картину. Топ-15 самых тяжёлых пакетов в системе (Debian/Ubuntu):
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -rn | head -15
Размер в килобайтах. Делите на 1024 чтобы получить мегабайты.
Шпаргалка
| Система | Удалить | Удалить с конфигами | Почистить хвосты |
|---|---|---|---|
| Debian/Ubuntu | apt remove pkg |
apt purge pkg |
apt autoremove |
| RHEL/Fedora | dnf remove pkg |
— | dnf autoremove |
| Arch | pacman -R pkg |
pacman -Rns pkg |
pacman -Qdtq | pacman -Rns - |
| openSUSE | zypper remove pkg |
— | zypper remove --clean-deps pkg |
| Snap | snap remove pkg |
— | скрипт по ревизиям |
| Flatpak | flatpak uninstall pkg |
flatpak uninstall --delete-data pkg |
flatpak uninstall --unused |