Apt-get: обновление системы

Назначение команды apt-cache -- в получении информации о пакетах, как установленных на локальной машине, так и находящихся в сетевых репозиториях. Причем в последнем случае она извлекается даже при запуске на локальной машине, не обязательно подключенной к сети (хотя в целом без сети использование ее ограничено).

Откуда apt-cache берет эту информацию? Из локальной базы данных, создаваемой во время инсталляции системы, и в дальнейшем обновляемой с помощью apt-get, чему служит специальный опертор update.

Так что первое, что надлежит сделать после установки системы -- обновить кэш пакетов (особенно если со дня выхода установочного компакт-диска прошло какое-то время):

$ sudo apt-get update

Программа устанавливает соединение со всеми репозиториями, перечисленными в файле /etc/apt/sources.list, и приведет локальный кэш пакетов в соответствие с их актуальным состоянием. Что, разумеется, уже предполагает сетевое подключение -- иначе базу данных можно было бы обновлять только с установочного компакт-диска или иного локального носителя. Что, впрочем, тоже не возбраняется -- при отсутствии сети именно так проще всего обновить систему с дистрибутива более свежей версии на CD или DVD. Только предварительно нужно, во-первых, позаботиться, чтобы CD был правильно описан в файле /etc/fstab, например, вот так:

/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0

Что, впрочем, обычно корректно выполняется на стадии первичной установки. А во-вторых, выполнить такую команду:

$ apt-cdrom add

Ее посредством правильное описание репозитория на новом диске будет добавлено в файл /etc/apt/sources.list lines.

Теперь можно либо заняться установкой отдельных недостающих пакетов, либо произвести тотальное обновление системы. Опять-таки, начать лучше со второго, чему служит цель upgrade. Так что команда:

$ sudo apt-get upgrade

сравнит версии установленных пакетов с обновленным их кэшем, выявит все компоненты, нуждающиеся в обновлении, скачает соответствующие их версии из сети (или вытащит их из свежего компакта) и заменит ими пакеты устаревшие. В случае, если новые версии повлекут за собой и новые зависимости, по сравнению с имевшимися ранее, -- они также будут скачаны и установлены. Но перед этим будет выведен полный список пакетов, нуждающихся в обновлении, число файлов, который предстоит скачать из сети, и их суммарный объем, значение, на которое возрастет занятое дисковое пространство в результате всех этих действий, и последует запрос на подтверждение операции обновления.

Пакеты, скачиваемые при исполнении apt-get upgrade (это относится и к описываемым ниже операторам dist-upgrade и install), помещаются в каталог /var/cache/apt/archives/ -- в дальнейшем их можно использовать для создания собственного локального репозитория или репозитория на CD/DVD. Недокачанные же части пакетов обретаются в каталоге /var/cache/apt/archives/partial/ -- в случае обрыва соединения (или просто прерывания процесса apt-get upgrade по любой причине, в том числе и клавишной комбинацией Control+C) по восстановлении связи процедура скачивания и установки продолжается, как ни в чем не бывало.

Впрочем, если покажется, что закачанные для установки пакеты занимают через чур уж много места -- от них легко освободиться либо стандартными средствами шелла:

$ sudo rm -Rf /var/cache/apt/archives/*

либо тем же apt-get с оператором clean или autoclean

Надо заметить, что в некоторых случаях apt-get с оператором upgrade не сможет выполнить обновление каких-то пакетов, о чем честно и сообщит перед запросом на подтверждение операции. Причины этому могут быть разные -- например, конфликт новых зависимостей пакетов с каким-либо наличным софтом. На сей случай мы располагаем более радикальным средством -- оператором dist-upgrade. Именно к нему следует прибегнуть, если мы обновляем старую версию дистрибутива до нового релиза:

$ sudo apt-get dist-upgrade

Эта команда просто тотально перепишет все наличные пакеты их обновленными версиями, одновременно разрешая и новые их зависимости (вплоть до удаления старых конфликтующих пакетов). Правда, и тут возможны коллизии типа описанной выше, но в большинстве случаев их можно проигнорировать -- они, скорее всего, рассосутся при следующем апдейте и апгрейде. Если нет -- эти коллизии придется разрешать вручную, на чем здесь останавливаться неуместно (возможные способы можно посмотреть в apt-howto из официальной документации проекта Debian, в том числе и на русском языке.


Теги: , , , ,