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: вступление
- Apt-get: обновление системы
- Apt-cache: поиск пакетов
- Apt-get: установка пакетов
- Apt-build: сборка пакетов
Теги: apt, apt-get, deb, debian, ubuntu