Любая, даже самая совершенная операционная система со временем накапливает в себе мусор в виде неиспользуемых пакетов, ненужных файлов, давних логов, кеша уже устаревших пакетов и т д. Не исключение и зарекомендовавшая себя как самую стабильную систему - Debian. Этот дистрибутив Linux чаще всего используется на серверах, поэтому и проблемы с засорением здесь немного иные. Здесь меньше пользовательских файлов, но зато больше внимания нужно уделять безопасности и работе с пакетами.
В этой инструкции мы рассмотрим как выполняется очистка системы Debian 8. Сконцентрируемся на работе с пакетами, поиску ненужных, больших, рассмотрим удаление неиспользуемых программ.
Содержание статьи
Очистка Debian 10
1. Найдите большие пакеты
Одно дело когда ненужная программа занимает несколько мегабайт, тогда ее можно и оставить, на случай если вдруг когда пригодится, но вот если программа не нужна и занимает много, ситуация совсем другая, это ведь все таки очистка Debian от мусора. Чтобы найти все самые большие пакеты выполните команду:
dpkg --get-selections | cut -f1 | while read pkg; do dpkg -L $pkg | xargs -I'{}' bash -c 'if [ ! -d "{}" ]; then echo "{}"; fi' | tr '\n' '\000' | du -c --files0-from - | tail -1 | sed "s/итого/$pkg/"; done
Если запустить команду от root, а именно это нужно сделать, то в директории /root появится файл packages.log со списком всех пакетов, упорядоченных по размеру.
Также вы можете использовать команду:
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
Но здесь также будет учитываться размер баз данных и дополнительных файлов.
2. Удалите конфигурационные файлы
Это важный процесс, когда проводится очистка Debian 8. Если вы устанавливали много пакетов с помощью apt-get, то скорее всего, их конфигурационные файлы не были удаленны и все еще занимают место на диске. Конечно, можно использовать для удаления команду apt-get purge, но многие просто забывают об этом. Следующая команда выведет список всех пакетов, которые были удаленны, но оставили конфигурационные файлы в вашей системе:
dpkg --list | grep '^rc '
Теперь, вы можете отфильтровать вывод и удалить все эти конфигурационные файлы, такой командой:
dpkg --list | grep '^rc ' | awk '{ print $2 }' | xargs dpkg -P
3. Очистка лишних пакетов
С зависимостями в систему устанавливается большое количество пакетов. Но при удалении ранее установленных пакетов их зависимости не удаляются. Таким образом, все это может накапливаться в системе. Чтобы удалить лишние пакеты и освободить место на диске выполните:
apt-get autoremove
apt-get clean
Опция autoremove используется для удаления ненужных пакетов, как раз тех, которые были установлены раньше как зависимости, но больше не нужны в вашей системе. А вторая команда просто удаляет все пакеты из кеша apt.
4. Очистка рекомендуемых пакетов
На удалении зависимостей очистка Debian 8 не заканчивается. Кроме зависимостей, вместе с программой устанавливаются рекомендуемые пакеты. Но поскольку они не находятся в зависимостях, то не удаляются вышеописанным способом. Такие пакеты можно найти с помощью следующей команды:
aptitude search '?and( ?automatic(?reverse-recommends(?installed)), ?not(?automatic(?reverse-depends(?installed))))'
Утилита отобразит список пакетов с описаниями:
Пересмотрите список и если все правильно удалите все, только будьте осторожны, здесь могли оказаться полезные программы:
aptitude search '?and( ?automatic(?reverse-recommends(?installed)), ?not(?automatic(?reverse-depends(?installed))))' | awk '{ print $3 }' | xargs dpkg -P
5. Удалите лишние файлы
Очистка системы Debian 8 не будет полной, если не удалить засоряющие систему файлы. Дело в том, что не все файлы в файловой системе Linux принадлежат каким-либо пакетам. Файлы могли быть созданы вручную вами самими и забыть о них, а могли остаться после установки программ через make install. Так или иначе, многие из них больше не нужны.
Чтобы найти все такие файлы используйте утилиту cruft. Она сравнивает вашу файловую систему с базой данных менеджера пакетов и выводит файлы которых там нет.
Чтобы проверить файловую систему исключая /home, /tmp и /var используйте команду:
sudo cruft -d / -r report --ignore /home --ignore /var --ignore /tmp
Результат работы команды будет сохранен в файле report. Обратите внимание, что обработка выполняется только в пределах одной файловой системы, и если ваш /usr примонтирован как другой раздел используйте опцию -d /usr/.
Теперь вы можете переходить к анализу отчета. Но будьте аккуратны не удаляйте файлы, если не знаете откуда они там взялись, многие файлы будут создаваться служебными программами и библиотеками, например Grub создает несколько файлов в каталоге /boot, а openssl сохраняет свои сертификаты в /etc/.
6. Удаление файлы логов
Со временем в системе накапливаются файлы логов. Они могут занимать по несколько сотен мегабайт, поэтому логи тоже нужно вовремя удалять. Все логи находятся в папке /var/log. Просто удалите те, которые занимают много места и вам не нужны:
du -h /var/log/
7. Удалите большие файлы
Нам нужно оценить насколько успешно прошла очистка диска Debian. Сначала давайте посмотрим сколько места занимают все файлы на жестком диске вашего сервера:
df -h
Теперь отсортируем все файлы по размеру, с помощью одной из следующих команд:
du -h | grep ^[0-9.]*M | sort -rn
du -h | grep ^[0-9.]*G | sort -rn
Первая отбирает файлы, размер которых исчисляется в мегабайтах, а вторая - в гигабайтах. Кроме того, вы можете воспользоваться утилитой ncdu. Но её надо сначала усстановить:
sudo apt install ncdu
Затем запустите:
ncdu /
Выводы
С помощью описанных здесь команд вы можете держать свою систему в чистоте и порядке, но будьте готовы, что если удалите, что-то не то, например, пакет libc6, systemd, apt-get, coreutils или что-то подобное будьте готовы потратить вечер, на то, чтобы все исправить. Как видите, очистка сиcтемы Debian 10 выполняется не так уж сложно. Но обратите внимание, что все команды, описанные в этой статье выполняются от имени суперпользователя, иначе ничего работать не будет.
в как единицах размер выводится?
Здравствуйте. Мне кажется, что в команде:
dpkg --list | grep '^rcb' | awk '{ print $2 }' | xargs dpkg -P
есть ошибка (надо наверное не grep '^rcb', а grep '^rc '), т.е. правильно будет:
dpkg --list | grep '^rc ' | awk '{ print $2 }' | xargs dpkg -P.
Во всяком случае у меня отработал именно вариант с grep '^rc '.