It’s FOSS: Отличия между командами apt update и apt upgrade?

Продолжаем разбираться с консольными командами. На очереди команды для обновления дистрибутивов на базе Debian/Ubuntu. В чём разница между apt update и apt upgrade?

В чём разница между командами apt update и apt upgrade?

Для обновления систем на базе Debian и Ubuntu используют комбинацию команд sudo apt update и sudo apt upgrade. Вроде бы похожие команды с, казалось бы, совсем незначительными отличиями. В русском языке разница между апдейтом и апгрейдом и вовсе почти неуловима.

Отличия apt update и apt upgrade

Итак, вы перешли на Linux и начали учить полезные команды. Опыт подсказывает, что команда apt update должна обновлять систему, но на деле всё немного иначе: команда apt update обновляет информацию об актуальных версиях доступных пакетов, а не сами пакеты. А вот команда apt upgrade в свою очередь обновляет именно пакеты.

Пока непонятно? Тогда вам стоит поподробнее узнать о системе управления пакетами в Linux.

Когда вы проверяете обновления, система сверяется со списком доступных в репозитории пакетов, но это лишь метаданные: версии, информация о зависимостях и т. д. Если вы редко обновляете этот список доступных пакетов, система не будет знать о том, что некоторые её компоненты можно обновить. И команда apt update (и похожая на неё apt-get update) отвечают как раз за обновление списков доступных пакетов.

apt update

После проверки сведений об актуальных версиях пакетов система сверит их с уже установленными, а уже потом предложит установить найденные обновления. Для этого и нужна команда apt upgrade.

То есть сперва вы вводите команду apt update, чтобы обновить список доступного ПО, а затем команду apt upgrade, чтобы установить найденные обновления. После этого вам покажут список пакетов, которые будут обновлены и предложат нажать клавишу Y, чтобы установить обновления (или клавишу N, чтобы отменить обновление).

apt upgrade

Другими словами:

  • apt update обновляет список доступных пакетов
  • apt upgrade обновляет уже установленные пакеты

Поскольку обновление – сложный процесс, для выполнения обеих команд вам понадобятся права root, а следовательно перед самой командой нужно добавить sudo.

Ну а теперь, когда вы хотя бы немного разобрались в отличиях apt update и apt upgade, поговорим об отличиях apt и apt-get.

Что лучше: apt или apt-get?

Для управления пакетами в системах на базе Debian и Ubuntu используется пакетный менеджер APT (не путайте с командой apt). Существует несколько команд для взаимодействия с пакетным менеджером: apt-get, apt, dpkg, aptitude и т. д. И команда apt-get долгое время была самой популярной из всех, но затем ей на смену пришла более простая команда apt.

Если хотите поглубже разобраться в теме, вам сюда. Мы же сосредоточимся на отличиях, связанных с обновлениями.

apt update или apt-get update?

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

Hit:15 https://ppa.launchpadcontent.net/slimbook/slimbook/ubuntu jammy InRelease
Fetched 213 kB in 4s (55.8 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
6 packages can be upgraded. Run 'apt list --upgradable' to see them.

А вот команда apt-get update даже о том, что в системе вообще есть пакеты, которые нуждаются в обновлении, не сообщит.

apt-get update
apt update
abhishek@itsfoss:~$ apt list --upgradable
Listing... Done
fprintd/jammy-updates 1.94.2-1ubuntu0.22.04.1 amd64 [upgradable from: 1.94.2-1]
gnome-control-center-data/jammy-updates,jammy-updates 1:41.7-0ubuntu0.22.04.4 all [upgradable from: 1:41.7-0ubuntu0.22.04.1]
gnome-control-center-faces/jammy-updates,jammy-updates 1:41.7-0ubuntu0.22.04.4 all [upgradable from: 1:41.7-0ubuntu0.22.04.1]
gnome-control-center/jammy-updates 1:41.7-0ubuntu0.22.04.4 amd64 [upgradable from: 1:41.7-0ubuntu0.22.04.1]
libpam-fprintd/jammy-updates 1.94.2-1ubuntu0.22.04.1 amd64 [upgradable from: 1.94.2-1]
vivaldi-stable/stable 5.4.2753.40-1 amd64 [upgradable from: 5.4.2753.37-1]

apt upgrade или apt-get upgrade?

Обе команды отвечают за установку актуальных версий вашего ПО, но работают они слегка по-разному. И основное их отличие заключается в том, что командой apt upgrade можно обновить ядро Linux, а командой apt-get upgrade нельзя. Если хотите обновить ядро с помощью команды apt-get, придётся использовать команду apt-get dist-upgrade.

apt-get upgrade не затрагивает ядро Linux

Дело в том, что обновление ядра на деле представляет собой установку нового пакета, а команда apt-get upgrade новые пакеты устанавливать не может, она может лишь обновлять уже установленные.

А ещё при выполнении команды apt-get upgrade не появляется индикатор в нижней части терминала.

apt upgrade и индикатор прогресса

Подытожим?

Слова «апдейт» и «апгрейд» похожи. И то, и другое означают обновление, и многие пользователи поначалу путают с виду похожие команды. Лично мне кажется, что было бы логично, если бы обе команды объединили в одну. Никто ведь не станет использовать их по отдельности: сперва вы обновляете список доступного ПО, а затем обновляете сами пакеты. Зачем нам сразу две команды, которые мы всё равно будем запускать только вместе?

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

Абхишек Пракаш,
It’s FOSS
11 января 2023

Comment