Автор - Лукас Вестерман (Lucas Westermann)

Недавно я вернулся из отпуска и, обновив около трёх сотен пакетов, получил уведомление от conky о том, что на корневом разделе вот-вот кончится место. И я подумал, что было бы полезно написать статью о нескольких приёмах, которым я научился за годы, и которые я использую, когда на жёстком диске не хватает места.

Для начала нужно оценить, сколько свободного места осталось на диске. Я для этого использую утилиту командной строки «df». Можно это сделать и в gparted, но я остановлюсь на использовании консоли. Итак, приступим. Для того, чтобы получить список смонтированных файловых систем с отображением сведений об их использовании, используем команду:

df -h

Она выведет список смонтированных разделов, сколько места на них занято, сколько свободно, процент используемого места и их точки монтирования. Я считаю, что можно без опаски использовать корневой раздел, пока он не заполнится на 90% (а в случае домашнего раздела, и на все 95%). Системе в корневом разделе требуется место под логи, домашнюю папку суперпользователя и прочее, и она оповещает вас, если раздел «заполнится» (всё свободное место, за исключением места под логи, будет занято). Это означает, что мы не сможем устанавливать пакеты или перемещать на раздел файлы, чего нам не хотелось бы. Если вы обнаружили, что не можете освободить достаточно места, возможно вам придётся изменить размер раздела, чтобы впредь оно у вас было. Под корневой раздел мне достаточно 10 Гбайт (домашний раздел у меня занимает 25 Гбайт, а то и больше).

Если корневой раздел заполнен, первым делом вам необходимо очистить кэш пакетов (aptitude, apt-get и synaptic сохраняют скачанные ими пакеты в кэше, чтобы, не нужно было скачивать пакет снова при необходимости переустановить какой-либо из них). Откройте новое окно терминала, чтобы вывод «df -h» в другом был вам виден, и выполните:

sudo aptitude autoclean

или

sudo apt-get autoclean

чтобы удалить из кэша все пакеты, которые больше не доступны для скачивания (читай: устаревшие). После выполнения вновь запустите «df -h», чтобы увидеть, сколько места освободилось. Если достаточно, то можно двигаться дальше. Однако, если его по-прежнему не хватает, и вы не подключали репозиторий бэкпортов, не нуждаетесь в самых свежих пакетах и не используете бета-версию Ubuntu, кэш, в принципе, можно очистить полностью. Я спокойно делал так, пока не перешёл на Arch, поскольку Ubuntu тщательно проверяет пакеты в своих репозиториях, оставляя лишь наиболее стабильные. Но если вы используете репозитории типа getdeb, я бы не советовал так поступать — на тот случай, если для устранения некоторых проблем понадобится откат. Да и вообще, не стоит превращать это в привычку — рано или поздно пакеты из кэша могут для чего-нибудь да пригодиться. Полностью очистить кэш можно командой:

sudo aptitude clean

или

sudo apt-get clean

К слову, я привожу команды и для aptitude, и для apt-get, поскольку для очистки предпочитаю aptitude, а так как Ubuntu в последнее время не пользуюсь, не уверен, что apt-get выполняет её точно так же.

Очистка кэша дала нам немного свободного места. Если вам нужно ещё, или у вас переполнен какой-либо другой раздел кроме корневого, попробуйте отсортировать папки и файлы по размеру и вручную удалить ненужные крупные файлы (старые ISO-образы, архивы, темы значков и т. п.). Приём я позаимствовал из Linux Journal (номер уже не помню) — работает на ура. Итак, если корневой каталог и домашняя папка у вас на разных разделах, и вам требуется освободить место в корневом, выполните:

cd / && du -ckx | sort -n

Сначала команда меняет текущий каталог на корневой («cd /»), показывает используемое дисковое пространство («du») с размером блока в 1 Кбайт («-k») и общим количеством занятого дискового пространства («-c») раздела, исключая домашний раздел и другие. Полученная информация сортируется по размеру от мелких файлов к крупным (последний файл в списке — самый крупный) путём перенаправления вывода du команде «sort -n». Не советую удалять что-то в корневом каталоге, предварительно не выяснив, что это (если только это не кэш какой-нибудь программы, которой вы уже давно не пользуетесь — но и в этом случае не помешает заранее всё проверить). Вы можете серьёзно повредить свою систему, просто стирая всё и вся. Для того, чтобы получить ту же информацию для домашней папки, воспользуйтесь следующей командой:

cd ~ && du -ck | sort -n

Она отобразит размеры всех папок и файлов в вашем домашнем каталоге и расположит их по порядку, от меньшего к большему. Выбрав самые крупные, вы можете узнать их конкретный размер (в килобайтах/мегабайтах/гигабайтах), выполнив:

du -h ~/<имя_папки>/

Ключ «-h» задаёт вывод размеров в удобочитаемом виде. Тильда (~) заменяет «/home/<имя_пользователя>» (что избавляет нас от набора лишнего текста), а «<имя_папки>» необходимо заменить на имя папки, которая вас интересует. Выяснив, какие папки и файлы захламляют диск, можете удалить те, которые больше не нужны (или сделать резервные копии нужных, но редко используемых файлов, на другие носители). После этих манипуляций свободного места станет ещё больше, и вы снова сможете устанавливать пакеты!

Настоятельно рекомендую пройтись по списку установленных пакетов и решить, которые из них не нужны, удалив их впоследствии. Делается это легко, при помощи aptitude (рядом с названиями установленных пакетов она выводит метку «i»). Используйте команду:

sudo aptitude search '~i'

или

sudo apt-cache search '~i'

Замечание насчет apt-cache: я не уверен, что она работает аналогично. Кроме того, стоит проверить назначение пакетов, которые вы не устанавливали лично, перед тем, как их удалять. Пакет вполне может оказаться одной из зависимостей Ubuntu.

Я готов тысячу раз повторить: будьте предельно осторожны при удалении, особенно, если не знаете, что удаляете. Как говорится, бережёного бог бережёт.

Я жду ваших предложений для новых статей, так что, если у вас есть вопрос по командной строке, который, как вам кажется, может заинтересовать других читателей, — скиньте мне его на e-mail, и я смогу об этом написать. Имя отправителя будет указано в статье.

Дополнительные источники Шпаргалка по apt-get: http://www.cyberciti.biz/tips/linux-debian-package-management-cheat-sheet.html

Справка по «aptitude search '~i'»: http://www.linuxquestions.org/questions/debian-26/aptitude-how-to-get-a-list-of-all-installed-packages-458119/#post2310207