Почему ядро ​​4.4.0-135 нуждается в явном обновлении вместо обычного обновления apt? - proUbuntu
0 голосов
/

В нескольких системах Ubuntu (16.04 LTS, Xenial) 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]

Однако 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 внезапно требуется пакет -version? Версии -130, -133 и 134 не нуждаются в явном обновлении или dist-upgrade, и где они устанавливаются либо с apt upgrade или unattended-upgrade. Что-то особенное в 4.4.0-135?

(Примечание: я знаю, как обновить ядро, хотелось бы знать , почему 4.4.0-135 не следует обычной политике apt upgrade)

Ответы [ 2 ]

1 голос
/

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 могут.

0 голосов
/

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

Как вы знаете, установка новых пакетов при обновлении системы занимает дворец, используя apt-get dist-upgrade.

Пакет linux-generic является фиктивной. Пакеты-пустышки указывают на реальный пакет:

apt show linux-generic

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

Таким образом, вместо проверки новой версии и ее установки вручную, linux-generic позаботится об этой работе за нас.

В конце, когда вы используете apt upgrade, он установит новые пакеты, тогда как apt-get необходим dist-upgrade для установки новых пакетов.

...