Как работает процесс обновления Ubuntu?

Как Ubuntu плавно переходит к более новому дистрибутиву, а операционная система все еще работает? Я обновляюсь с 10.10 до 11.04, и я обновлялся несколько раз раньше, и это так же просто, как запуск update-manager -d, загрузка и установка, а затем перезагрузка.

Как именно это работает? Как менеджер обновлений может обновить операционную систему, пока он все еще используется?

9
задан 12 April 2011 в 04:53

41 ответ

На уровне файловой системы, в отличие от Windows, в системе Unix вы можете удалить открытые файлы. Deletion просто удаляет имя файла, а не его содержимое, поэтому любые программы, все еще имеющие открытый файл, могут получить к нему доступ до тех пор, пока они не закроют файл, и только тогда будут освобождены данные.

Итак, обновление Процесс просто удаляет старые файлы, заменяет их новыми и определенными системными службами, перезапускает их, поэтому запускается новая версия.

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

3
ответ дан 6 August 2018 в 03:49

Это похоже на другую функцию. Надеюсь, это поможет понять базовый процесс.

Я имею в виду возможность «переключать root» при загрузке операционной системы.

Когда загружается операционная система, корневая файловая система (read: "/") изначально доступен только в ОЗУ. Пока этот процесс загрузки запущен, он переключает / из ОЗУ на / файловую систему на жестком диске.

-2
ответ дан 6 August 2018 в 03:49

На уровне файловой системы, в отличие от Windows, в системе Unix вы можете удалить открытые файлы. Deletion просто удаляет имя файла, а не его содержимое, поэтому любые программы, все еще имеющие открытый файл, могут получить к нему доступ до тех пор, пока они не закроют файл, и только тогда будут освобождены данные.

Итак, обновление Процесс просто удаляет старые файлы, заменяет их новыми и определенными системными службами, перезапускает их, поэтому запускается новая версия.

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

3
ответ дан 7 August 2018 в 21:45

Это похоже на другую функцию. Надеюсь, это поможет понять базовый процесс.

Я имею в виду возможность «переключать root» при загрузке операционной системы.

Когда загружается операционная система, корневая файловая система (read: "/") изначально доступен только в ОЗУ. Пока этот процесс загрузки запущен, он переключает / из ОЗУ на / файловую систему на жестком диске.

-2
ответ дан 7 August 2018 в 21:45

Как можно обновить Linux, пока он все еще используется?

В основном потому, что Linux (и с ним, большинство дистрибутивов) просто спроектирован именно так.

В Linux нет ничего, что могло бы помешать процессу диспетчера пакетов записывать в файл на диске, даже если это файл в настоящее время открыт приложением или файл является исполняемой или разделяемой библиотекой кода , который в настоящее время запущен . На очень низком уровне есть блокировки, которые защищают доступ к файлу во время одной операции записи / чтения, но они никогда не предназначены для хранения более чем миллисекунды и любого другого приложения, пытающегося записать в тот же файл будет просто ждать эти миллисекунды.

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

Вот почему в Linux, хотя вы можете обновить приложение во время его работы, обновление не будет в действительности вступать в силу до перезапуска приложения, которое вы обновили. В случае обновления фонового процесса, такого как системная служба, эта служба должна быть перезапущена. В случае, если вы обновили ядро, это означает перезагрузку.

Не будет заменять файлы программы во время запуска некоторых программ?

Некоторые из пакетов в в дистрибутиве Linux будут содержаться инструкции по установке, инструктирующие диспетчер пакетов останавливать определенные системные службы при обновлении пакета и повторно запускать эти службы после завершения обновления. Это предотвращает ситуации, когда, например, файлы конфигурации для конкретной службы обновляются, а работающая версия службы может не справиться с более новой версией файлов конфигурации.

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

2
ответ дан 7 August 2018 в 21:45

Это похоже на другую функцию. Надеюсь, это поможет понять базовый процесс.

Я имею в виду возможность «переключать root» при загрузке операционной системы.

Когда загружается операционная система, корневая файловая система (read: "/") изначально доступен только в ОЗУ. Пока этот процесс загрузки запущен, он переключает / из ОЗУ на / файловую систему на жестком диске.

-2
ответ дан 10 August 2018 в 09:59

Как можно обновить Linux, пока он все еще используется?

В основном потому, что Linux (и с ним, большинство дистрибутивов) просто спроектирован именно так.

В Linux нет ничего, что могло бы помешать процессу диспетчера пакетов записывать в файл на диске, даже если это файл в настоящее время открыт приложением или файл является исполняемой или разделяемой библиотекой кода , который в настоящее время запущен . На очень низком уровне есть блокировки, которые защищают доступ к файлу во время одной операции записи / чтения, но они никогда не предназначены для хранения более чем миллисекунды и любого другого приложения, пытающегося записать в тот же файл будет просто ждать эти миллисекунды.

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

Вот почему в Linux, хотя вы можете обновить приложение во время его работы, обновление не будет в действительности вступать в силу до перезапуска приложения, которое вы обновили. В случае обновления фонового процесса, такого как системная служба, эта служба должна быть перезапущена. В случае, если вы обновили ядро, это означает перезагрузку.

Не будет заменять файлы программы во время запуска некоторых программ?

Некоторые из пакетов в в дистрибутиве Linux будут содержаться инструкции по установке, инструктирующие диспетчер пакетов останавливать определенные системные службы при обновлении пакета и повторно запускать эти службы после завершения обновления. Это предотвращает ситуации, когда, например, файлы конфигурации для конкретной службы обновляются, а работающая версия службы может не справиться с более новой версией файлов конфигурации.

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

2
ответ дан 10 August 2018 в 09:59

На уровне файловой системы, в отличие от Windows, в системе Unix вы можете удалить открытые файлы. Deletion просто удаляет имя файла, а не его содержимое, поэтому любые программы, все еще имеющие открытый файл, могут получить к нему доступ до тех пор, пока они не закроют файл, и только тогда будут освобождены данные.

Итак, обновление Процесс просто удаляет старые файлы, заменяет их новыми и определенными системными службами, перезапускает их, поэтому запускается новая версия.

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

3
ответ дан 10 August 2018 в 09:59

Как можно обновить Linux, пока он все еще используется?

В основном потому, что Linux (и с ним, большинство дистрибутивов) просто спроектирован именно так.

В Linux нет ничего, что могло бы помешать процессу диспетчера пакетов записывать в файл на диске, даже если это файл в настоящее время открыт приложением или файл является исполняемой или разделяемой библиотекой кода , который в настоящее время запущен . На очень низком уровне есть блокировки, которые защищают доступ к файлу во время одной операции записи / чтения, но они никогда не предназначены для хранения более чем миллисекунды и любого другого приложения, пытающегося записать в тот же файл будет просто ждать эти миллисекунды.

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

Вот почему в Linux, хотя вы можете обновить приложение во время его работы, обновление не будет в действительности вступать в силу до перезапуска приложения, которое вы обновили. В случае обновления фонового процесса, такого как системная служба, эта служба должна быть перезапущена. В случае, если вы обновили ядро, это означает перезагрузку.

Не будет заменять файлы программы во время запуска некоторых программ?

Некоторые из пакетов в в дистрибутиве Linux будут содержаться инструкции по установке, инструктирующие диспетчер пакетов останавливать определенные системные службы при обновлении пакета и повторно запускать эти службы после завершения обновления. Это предотвращает ситуации, когда, например, файлы конфигурации для конкретной службы обновляются, а работающая версия службы может не справиться с более новой версией файлов конфигурации.

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

2
ответ дан 13 August 2018 в 16:18
  • 1
    Я уже знаю обо всех этих деталях, пожалуйста, прочитайте комментарий, который я разместил с моей щедростью. Я хочу знать, как именно Ubuntu, т. Е. [D0] apt , обрабатывает определенные пакеты и зависимости во время процесса обновления. – Oxwivi 31 October 2012 в 12:56

Это похоже на другую функцию. Надеюсь, это поможет понять базовый процесс.

Я имею в виду возможность «переключать root» при загрузке операционной системы.

Когда загружается операционная система, корневая файловая система (read: "/") изначально доступен только в ОЗУ. Пока этот процесс загрузки запущен, он переключает / из ОЗУ на / файловую систему на жестком диске.

-2
ответ дан 13 August 2018 в 16:18
  • 1
    Нет, механизм chroot не используется во время обновления системы. Обновление выполняется в живой файловой системе. Вы даже можете посмотреть, как ваши программные меню восстанавливаются, а значки программ меняются по мере их замены. Но механизм chroot используется в исходной системной установке, когда новая система «отбракована». в среду изменения корня на вновь созданном диске partiton. – Paul Hänsch 31 October 2012 в 09:40

На уровне файловой системы, в отличие от Windows, в системе Unix вы можете удалить открытые файлы. Deletion просто удаляет имя файла, а не его содержимое, поэтому любые программы, все еще имеющие открытый файл, могут получить к нему доступ до тех пор, пока они не закроют файл, и только тогда будут освобождены данные.

Итак, обновление Процесс просто удаляет старые файлы, заменяет их новыми и определенными системными службами, перезапускает их, поэтому запускается новая версия.

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

3
ответ дан 13 August 2018 в 16:18

Другие вопросы по тегам:

Похожие вопросы: