Это старая версия документа.


Автор - Лукас Вестерман (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