На нескольких Ubuntu (16.04 LTS, Гостеприимные) системы apt list --upgradable
говорит мне, что обновления ядра доступны:
$ apt list --upgradable
initramfs-tools/xenial-updates,xenial-updates 0.122ubuntu8.12 all [upgradable from: 0.122ubuntu8.11]
initramfs-tools-bin/xenial-updates 0.122ubuntu8.12 amd64 [upgradable from: 0.122ubuntu8.11]
initramfs-tools-core/xenial-updates,xenial-updates 0.122ubuntu8.12 all [upgradable from: 0.122ubuntu8.11]
linux-generic/xenial-updates 4.4.0.135.141 amd64 [upgradable from: 4.4.0.134.140]
linux-headers-generic/xenial-updates 4.4.0.135.141 amd64 [upgradable from: 4.4.0.134.140]
linux-image-generic/xenial-updates 4.4.0.135.141 amd64 [upgradable from: 4.4.0.134.140]
Однако a apt upgrade
не обновляет ядро. Вместо этого явное apt upgrade linux-generic
(или один из других пакетов), необходимо и установил бы 4.4.0-135
пакеты:
$ apt-get upgrade linux-generic --dry-run
.. snip ..
The following NEW packages will be installed:
linux-headers-4.4.0-135 linux-headers-4.4.0-135-generic linux-image-4.4.0-135-generic linux-image-extra-4.4.0-135-generic
The following packages will be upgraded:
initramfs-tools initramfs-tools-bin initramfs-tools-core linux-generic linux-headers-generic linux-image-generic
6 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Это необычно. Почему делает linux-generic
внезапно потребность a -version
пакет? -130
, -133
и 134
для версий не были нужны явное обновление или a dist-upgrade
, и, где установлено любой с apt upgrade
или unattended-upgrade
. Есть ли что-то специальное о 4.4.0-135
?
(Примечание: Я знаю, как обновить ядро, я хотел бы знать почему 4.4.0-135
не следует за обычным apt upgrade
политика)
В Ubuntu мы не обновляем Ядро. На самом деле мы устанавливаем более новую версию и сохраняем старую версию на всякий случай любого отказа в загружающейся системе с новым ядром и удаляем другие.
Поскольку Вы знаете устанавливающие новые пакеты, в то время как обновление системы берет использование дворца apt-get dist-upgrade
.
linux-generic
пакет является фиктивным пакетом. Фиктивные пакеты указывают на Вас на реальный пакет:
apt show linux-generic
Это будет всегда зависеть от последнего полного универсального ядра Linux и заголовков.
Таким образом вместо того, чтобы проверить на новую версию и установку его вручную, имея linux-generic
будет заботиться об этом задании для нас.
В конце, когда Вы используете apt upgrade
это установит новые пакеты в то время как apt-get
потребности dist-upgrade
устанавливать новые пакеты.
apt
!= apt-get
Традиционное apt-get
имеет следующие связанные с обновлением команды:
apt-get upgrade
обновит пакеты до более новых версий, не устанавливая новый или удаляя другие пакеты.apt-get dist-upgrade
обновит пакеты также, но также может обработать обновления с изменяющимися зависимостями путем установки новый или удаления старых пакетов при необходимости.Более новый интерфейс apt
интерпретирует различные варианты:
apt upgrade
конечно, пакеты обновлений снова, но это также может установить новые пакеты для выполнения изменяющихся зависимостей, в отличие от этого, apt-get upgrade
. Это никогда не удаляет пакеты все же.apt full-upgrade
эквивалентно apt-get dist-upgrade
в этом это может и установить и удалить пакеты, если это требуется измененными зависимостями более новой версии пакета.Обновления ядра работают путем обновления метапакета (например. linux-image-generic
) к более новой версии, которая затем имеет измененную зависимость от последнего linux-image-X.Y.Z-AAA-generic
пакет. Это означает, apt-get upgrade
никогда не может обновлять ядра, но apt-get dist-upgrade
, apt full-upgrade
или даже apt upgrade
может.