Почему apt-get не требует перезапусков, в отличие от диспетчера обновлений?


53

Часто я пытаюсь «победить» менеджер обновлений, открыв консоль и введя последовательность

sudo apt-get update
sudo apt-get upgrade

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

Однако иногда менеджер обновлений (чаще всего, когда распространяется новое ядро) требует перезагрузки после завершения работы. apt-getникогда, даже когда похоже, что я обновляю ядро. Почему это так?


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


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

4
FWIW, вы можете проверить, требуется ли перезагрузка, проверив наличие /var/run/reboot-required. Кроме того, Byobu показывает значок «требуется обновление» в строке состояния при необходимости.
Андреа Корбеллини

2
@ Pilot6 Не даже отдаленно близко к дубликатом. Вы отметили вопрос о том, какие пакеты требуют перезагрузки. Мой вопрос спрашивает, почему один метод обновления не требует перезагрузки, даже если я узнаю, что обновляется пакет, требующий перезагрузки.
января

1
ХОРОШО. Но это тесно связано.
Pilot6

1
@ Pilot6 С этим я могу согласиться;)
января

Ответы:


81

Потому что apt-get(или просто apt) для профи, а когда профи делают:

sudo apt-get dist-upgrade

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

Автоматическое обновление для всех остальных!

;-)

Кроме того, теперь вы можете установить исправление ядра Ubuntu Live начиная с версии 16.04 и далее, что позволяет обновлять ядро ​​во время работы сервера.


4
Я хотел бы принять все три ответа, потому что все они технически говорят одно и то же. Но я думаю, что я возьму твой, потому что ты заставил меня улыбнуться больше всего ;-)
января

6
> :) Немного юмора в ответе никогда не бывает плохо! ;-)
Fabby

4
Поддержка livepatching в ядре теперь есть в основных ядрах, поэтому, если повезет, нам больше не придется перезагружаться, как только мы доберемся до LTS 16.04.
Касперд

Ваше описание apt-get upgradeпротив apt-get dist-upgradeне соответствует man apt-getни моему опыту использования инструмента. Я почти уверен, что разница связана с тем, как обрабатываются зависимости, которые потребуют установки или удаления пакетов; «upgrade» пропускает эти пакеты, «dist-upgrade» пытается установить / удалить пакеты, чтобы выполнить обновление.
Дероберт

1
@Fabby несколько сбит с толку, поскольку вы в настоящее время удалили этот абзац, но если вы посмотрите на справочную страницу apt-get, описание «upgrade» говорит, например, «ни при каких обстоятельствах в настоящее время не установлены установленные пакеты, или пакеты, которые еще не установлены, извлечены и установлен. Поэтому, если обычное обновление приложения требует установки нового пакета (например, новой библиотеки soname), это не будет сделано. Или, если обновление ядра использует то же имя пакета, это будет сделано.
Дероберт

37

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

В этом случае /var/run/reboot-requiredустанавливается скрипт установки пакета.

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

Но после обновления с помощью apt-get Update Manager через некоторое время тоже предложит перезагрузить.


Я не могу в это поверить, это правда? «Службы, которые не могут быть перезапущены без перезагрузки всей системы».
AB

2
Да, это правда. Как «выскочка» и некоторые другие. Не много.
Pilot6

2
@ Pilot6 Звучит смешно, если upstart не может быть перезапущен без перезагрузки. Предполагалось, что это будет обновление от SysV init, которое можно перезапустить без перезагрузки.
Касперд

@kasperd Это был просто пример. Я заметил, что менеджер обновлений запрашивает перезапуск на некоторых неядерных пакетах. Там должен быть какой-то список этих пакетов. Я не совсем уверен, что выскочка там.
Pilot6

1
Откроется менеджер обновлений @MaxNanasy и предложит перезагрузиться. это может случиться через некоторое время.
Pilot6

15

Когда вы устанавливаете новое ядро, вам нужно перезагрузить компьютер, чтобы изменения вступили в силу, apt-get просто не беспокоится об этом.


1
Не только обновления ядра. Вы также должны либо перезагрузить, либо перезапустить некоторые службы при обновлении некоторых других пакетов. Если вы разбираетесь в этом, вы часто можете перезапустить соответствующие сервисы и избежать перезагрузки. Если нет, то перезагрузка всегда будет работать. Часто бывает непросто определить, какие службы нуждаются в перезапуске, поскольку в обновленных пакетах могут использоваться общие библиотеки, от которых многие другие программы прямо или косвенно зависят от других программ. Я не обязательно на 100% доверяю графическому менеджеру обновлений.
Томасруттер

7

apt-get уведомляет вас на терминале, когда после установки определенного пакета требуется перезагрузка.

update-manager - это комплексное решение, которое позаботится обо всех ваших потребностях в обновлении.

Я предпочитаю apt-get, хотя, не знаю почему :)


2

apt-get upgrade не обновляет ядро.

apt-get dist-upgrade обновляет ядро ​​в Ubuntu.

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

Другие пакеты не нуждаются в перезагрузке, просто перезапуск самого приложения. Некоторые приложения Windows, работающие на Wine, запрашивают перезагрузку, но просто набирают команду:

wineserver -k

и перезапустите приложение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.