Почему 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.