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

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

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

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

41 ответ

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

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

3
ответ дан 25 May 2018 в 22:09
  • 1
    Это также объясняет, почему я замечаю, что новые функции добавляются в некоторые меню по мере обновления. – IDWMaster 12 April 2011 в 05:02

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

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

3
ответ дан 25 July 2018 в 22:14

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

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

3
ответ дан 31 July 2018 в 10:59

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

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

3
ответ дан 2 August 2018 в 03:42

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

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

3
ответ дан 4 August 2018 в 19:46

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

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

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

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

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

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

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

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

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

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

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

3
ответ дан 13 August 2018 в 16:18
  • 1
    Это также объясняет, почему я замечаю, что новые функции добавляются в некоторые меню по мере обновления. – IDWMaster 12 April 2011 в 05:02

вот более подробное описание процесса. К сожалению текст был так долго.

мой опыт проистекает из Debian, для которых вся упаковка и обновления системы, используемые в Ubuntu была изначально придумана. Ежедневные обновления безопасности ОС Ubuntu соответствуют запущена [Ф1], которые, как правило, не удалить любое программное обеспечение. Большие обновления релиза соответствовать [Ф2], в течение которого пакеты программного обеспечения могут быть полностью заменены.

на самом деле очень низкого уровня, как правило, не размениваясь при обновлении релиза. Сразу после обновления вы должны найти два ядра и initrd изображений в директории /Boot. Это потому, что в отличие от программ компоненты ядра не так хорошо взаимозаменяемыми. Если возникает необходимость загрузки новых драйверов при обновлении, они должны быть совместимы с управлением ядра. После того, как система загрузится с новым ядром, старый можно удалить. Последний раз я проверял это одно должно было быть сделано вручную, я не знаю, как текущего обновления обрабатывает это. Это кстати. главная причина, почему образ ядра носит номер версии в имени файла - так что вы можете иметь различные версии установленного ядра одновременно. Же путь к модулю (/библиотека/модули/...)

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

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

для каждой установленной программы, утилита просто ищет более новую версию. Часто эти программы являются просто Мета-пакеты типа "убунту-десктоп", который не содержит никаких данных, то и просто зависимости. Новые версии зависимых библиотек потянутся, так как они запрашиваются напрямую с обновленными программами (выполнена вручную). Программа обновления всегда будет пытаться установить новейшую полезную версию любого зависимого пакета (при любой upgrdade не просто выпуск обновлений).

программ, которые не могут работать с новой версии библиотеки не может быть запущен в течение времени после библиотеки повышен, и перед самой программы обновления. Если эти программы уже должен быть запущен до обновления библиотек, однако они продолжают работать, потому что старые версии библиотеки остается в памяти, пока это остается в использовании. Же касается программ, которые были запущены прежде чем они обновляются. Те не будут предоставлять новые возможности, пока они не прекращаются и перезапустить.

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

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

этот механизм даже позволяет обмениваться всей программы пользователя. Как, например, переход от Gnome2 к единству. Так как просто автоматическая зависимостей в Ubuntu-Desktop, который один из немногих пакетов, для новых версий требуется представлять в первую очередь.

программы

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

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

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

Вы можете использовать программу командной строки [Ф3], чтобы выяснить, какие пакеты отмечены как установленные вручную и автоматически устанавливается. Вы также можете переключать эти знаки с помощью той же программы. Это напрямую влияет на процесс обновления.

[dиода d17]в более сложной установки программного обеспечения программа обновления иногда попросит вас разрешить зависимости вручную. Т. е. когда установлен вручную, программа обновляется и просит новую версию библиотеки, а другой установлен вручную программы зависит от старой версии той же библиотеке и не может работать с новым. Тогда вам придется сделать свой выбор, либо отказаться от одной из этих программ или воздержаться от обновления. С зависимостями часто комплекс это может стать очень грязным очень быстро (вы, возможно, слышали термин "ад зависимостей").[!dиода d17]

теперь конкретные вопросы:

при низком уровне инфраструктуры изменяется (минимум-уровня ядра, драйверов, библиотек и т. д. все, что пользователь не может напрямую взаимодействовать с), Что происходит с устаревшими серверами? ОК... я уже освещал этот один, что происходит с приложением, которое было полностью устаревшим? Например, единство 2D (или любое другое программное обеспечение заброшенных/нет мейнтейнеров пакета, которого нет в новый РЕПО). Если Приложение после установки вручную, она останется в системе, часто вызывает зависимость, черт возьми, я описал. в Ubuntu-Desktop-это метапакет, который тянет приложения в Ubuntu по умолчанию в качестве зависимостей. Если я удалил Firefox и установленным браузером Chrome, Firefox по-прежнему будет втянут в рамках модернизации? Пока это стандартный браузер новый релиз, да. Хром также будут обновлены. Я не уверен, если вы можете удалить Firefox без удаления убунту-десктоп. Обратите внимание, что помимо строгих зависимостей пакета знает и понятие рекомендации, где программа, как правило, будут установлены как зависимости, но может быть удален позже, не затрагивая ничего, кроме ее собственному зависимостей. Кроме того, что произойдет, если одно приложение используется, чтобы зависеть пакет-х и уже не так в новой версии; пакет-х быть повышен наряду с остальными пакетами, несмотря на то, сирым? Неа.

просто спросите меня если вы все еще есть какие-либо вопросы.

12
ответ дан 25 May 2018 в 22:09
  • 1
    Можете ли вы ссылаться на большее количество документов, связанных с аддитивным ад (напоминает мне термин «аддон»)? Я использую минимальные установки Ubuntu, и я хочу выяснить, как будет работать обновление для меня. – Oxwivi 2 November 2012 в 03:01
  • 2
    Я думаю, что все, что вы найдете в Интернете, о адской зависимости - это жалобы. Прочтите свои подходящие справочные страницы, например man apt-get. Я считаю, что часто полезно использовать синтаксис команды, определяющий выпуск, например apt-get -t intrepid install foo/jaunty bar/oneiric и т. Д., Только примеры. На самом деле это имеет больше смысла в Debian, где вы иногда смешиваете релизы, в Ubuntu это менее привычно. Интересные темы также могут быть apt-pinning и установка пакетов в ожидании. – Paul Hänsch 2 November 2012 в 04:21
  • 3
    Вы выигрываете награду за самый длинный некодовый ответ, который я когда-либо видел в сети Stack Exchange. – pthurmond 20 September 2013 в 22:17

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

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

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

3
ответ дан 25 May 2018 в 22:09

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

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

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

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

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

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

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

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

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

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

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

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

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

вот более подробное описание процесса. К сожалению текст был так долго.

мой опыт проистекает из Debian, для которых вся упаковка и обновления системы, используемые в Ubuntu была изначально придумана. Ежедневные обновления безопасности ОС Ubuntu соответствуют запущена apt-get upgrade, которые, как правило, не удалить любое программное обеспечение. Большие обновления релиза соответствовать apt-get dist-upgrade, в течение которого пакеты программного обеспечения могут быть полностью заменены.

на самом деле очень низкого уровня, как правило, не размениваясь при обновлении релиза. Сразу после обновления вы должны найти два ядра и initrd изображений в директории /Boot. Это потому, что в отличие от программ компоненты ядра не так хорошо взаимозаменяемыми. Если возникает необходимость загрузки новых драйверов при обновлении, они должны быть совместимы с управлением ядра. После того, как система загрузится с новым ядром, старый можно удалить. Последний раз я проверял это одно должно было быть сделано вручную, я не знаю, как текущего обновления обрабатывает это. Это кстати. главная причина, почему образ ядра носит номер версии в имени файла - так что вы можете иметь различные версии установленного ядра одновременно. Же путь к модулю (/библиотека/модули/...)

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

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

для каждой установленной программы, утилита просто ищет более новую версию. Часто эти программы являются просто Мета-пакеты типа "убунту-десктоп", который не содержит никаких данных, то и просто зависимости. Новые версии зависимых библиотек потянутся, так как они запрашиваются напрямую с обновленными программами (выполнена вручную). Программа обновления всегда будет пытаться установить новейшую полезную версию любого зависимого пакета (при любой upgrdade не просто выпуск обновлений).

программ, которые не могут работать с новой версии библиотеки не может быть запущен в течение времени после библиотеки повышен, и перед самой программы обновления. Если эти программы уже должен быть запущен до обновления библиотек, однако они продолжают работать, потому что старые версии библиотеки остается в памяти, пока это остается в использовании. Же касается программ, которые были запущены прежде чем они обновляются. Те не будут предоставлять новые возможности, пока они не прекращаются и перезапустить.

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

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

этот механизм даже позволяет обмениваться всей программы пользователя. Как, например, переход от Gnome2 к единству. Так как просто автоматическая зависимостей в Ubuntu-Desktop, который один из немногих пакетов, для новых версий требуется представлять в первую очередь.

программы

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

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

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

Вы можете использовать программу командной строки apt-mark, чтобы выяснить, какие пакеты отмечены как установленные вручную и автоматически устанавливается. Вы также можете переключать эти знаки с помощью той же программы. Это напрямую влияет на процесс обновления.

[dиода d17]в более сложной установки программного обеспечения программа обновления иногда попросит вас разрешить зависимости вручную. Т. е. когда установлен вручную, программа обновляется и просит новую версию библиотеки, а другой установлен вручную программы зависит от старой версии той же библиотеке и не может работать с новым. Тогда вам придется сделать свой выбор, либо отказаться от одной из этих программ или воздержаться от обновления. С зависимостями часто комплекс это может стать очень грязным очень быстро (вы, возможно, слышали термин "ад зависимостей").[!dиода d17]

теперь конкретные вопросы:

при низком уровне инфраструктуры изменяется (минимум-уровня ядра, драйверов, библиотек и т. д. все, что пользователь не может напрямую взаимодействовать с), Что происходит с устаревшими серверами? ОК... я уже освещал этот один, что происходит с приложением, которое было полностью устаревшим? Например, единство 2D (или любое другое программное обеспечение заброшенных/нет мейнтейнеров пакета, которого нет в новый РЕПО). Если Приложение после установки вручную, она останется в системе, часто вызывает зависимость, черт возьми, я описал. в Ubuntu-Desktop-это метапакет, который тянет приложения в Ubuntu по умолчанию в качестве зависимостей. Если я удалил Firefox и установленным браузером Chrome, Firefox по-прежнему будет втянут в рамках модернизации? Пока это стандартный браузер новый релиз, да. Хром также будут обновлены. Я не уверен, если вы можете удалить Firefox без удаления убунту-десктоп. Обратите внимание, что помимо строгих зависимостей пакета знает и понятие рекомендации, где программа, как правило, будут установлены как зависимости, но может быть удален позже, не затрагивая ничего, кроме ее собственному зависимостей. Кроме того, что произойдет, если одно приложение используется, чтобы зависеть пакет-х и уже не так в новой версии; пакет-х быть повышен наряду с остальными пакетами, несмотря на то, сирым? Неа.

просто спросите меня если вы все еще есть какие-либо вопросы.

12
ответ дан 25 July 2018 в 22:14
  • 1
    Можете ли вы ссылаться на большее количество документов, связанных с аддитивным ад (напоминает мне термин «аддон»)? Я использую минимальные установки Ubuntu, и я хочу выяснить, как будет работать обновление для меня. – Oxwivi 2 November 2012 в 03:01
  • 2
    Я думаю, что все, что вы найдете в Интернете, о адской зависимости - это жалобы. Прочтите свои подходящие справочные страницы, например man apt-get. Я считаю, что часто полезно использовать синтаксис команды, определяющий выпуск, например apt-get -t intrepid install foo/jaunty bar/oneiric и т. Д., Только примеры. На самом деле это имеет больше смысла в Debian, где вы иногда смешиваете релизы, в Ubuntu это менее привычно. Интересные темы также могут быть apt-pinning и установка пакетов в ожидании. – Paul Hänsch 2 November 2012 в 04:21
  • 3
    Вы выигрываете награду за самый длинный некодовый ответ, который я когда-либо видел в сети Stack Exchange. – pthurmond 20 September 2013 в 22:17

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

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

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

3
ответ дан 25 July 2018 в 22:14

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

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

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

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

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

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

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

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

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

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

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

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

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

вот более подробное описание процесса. К сожалению текст был так долго.

мой опыт проистекает из Debian, для которых вся упаковка и обновления системы, используемые в Ubuntu была изначально придумана. Ежедневные обновления безопасности ОС Ubuntu соответствуют запущена apt-get upgrade, которые, как правило, не удалить любое программное обеспечение. Большие обновления релиза соответствовать apt-get dist-upgrade, в течение которого пакеты программного обеспечения могут быть полностью заменены.

на самом деле очень низкого уровня, как правило, не размениваясь при обновлении релиза. Сразу после обновления вы должны найти два ядра и initrd изображений в директории /Boot. Это потому, что в отличие от программ компоненты ядра не так хорошо взаимозаменяемыми. Если возникает необходимость загрузки новых драйверов при обновлении, они должны быть совместимы с управлением ядра. После того, как система загрузится с новым ядром, старый можно удалить. Последний раз я проверял это одно должно было быть сделано вручную, я не знаю, как текущего обновления обрабатывает это. Это кстати. главная причина, почему образ ядра носит номер версии в имени файла - так что вы можете иметь различные версии установленного ядра одновременно. Же путь к модулю (/библиотека/модули/...)

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

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

для каждой установленной программы, утилита просто ищет более новую версию. Часто эти программы являются просто Мета-пакеты типа "убунту-десктоп", который не содержит никаких данных, то и просто зависимости. Новые версии зависимых библиотек потянутся, так как они запрашиваются напрямую с обновленными программами (выполнена вручную). Программа обновления всегда будет пытаться установить новейшую полезную версию любого зависимого пакета (при любой upgrdade не просто выпуск обновлений).

программ, которые не могут работать с новой версии библиотеки не может быть запущен в течение времени после библиотеки повышен, и перед самой программы обновления. Если эти программы уже должен быть запущен до обновления библиотек, однако они продолжают работать, потому что старые версии библиотеки остается в памяти, пока это остается в использовании. Же касается программ, которые были запущены прежде чем они обновляются. Те не будут предоставлять новые возможности, пока они не прекращаются и перезапустить.

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

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

этот механизм даже позволяет обмениваться всей программы пользователя. Как, например, переход от Gnome2 к единству. Так как просто автоматическая зависимостей в Ubuntu-Desktop, который один из немногих пакетов, для новых версий требуется представлять в первую очередь.

программы

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

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

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

Вы можете использовать программу командной строки apt-mark, чтобы выяснить, какие пакеты отмечены как установленные вручную и автоматически устанавливается. Вы также можете переключать эти знаки с помощью той же программы. Это напрямую влияет на процесс обновления.

[dиода d17]в более сложной установки программного обеспечения программа обновления иногда попросит вас разрешить зависимости вручную. Т. е. когда установлен вручную, программа обновляется и просит новую версию библиотеки, а другой установлен вручную программы зависит от старой версии той же библиотеке и не может работать с новым. Тогда вам придется сделать свой выбор, либо отказаться от одной из этих программ или воздержаться от обновления. С зависимостями часто комплекс это может стать очень грязным очень быстро (вы, возможно, слышали термин "ад зависимостей").[!dиода d17]

теперь конкретные вопросы:

при низком уровне инфраструктуры изменяется (минимум-уровня ядра, драйверов, библиотек и т. д. все, что пользователь не может напрямую взаимодействовать с), Что происходит с устаревшими серверами? ОК... я уже освещал этот один, что происходит с приложением, которое было полностью устаревшим? Например, единство 2D (или любое другое программное обеспечение заброшенных/нет мейнтейнеров пакета, которого нет в новый РЕПО). Если Приложение после установки вручную, она останется в системе, часто вызывает зависимость, черт возьми, я описал. в Ubuntu-Desktop-это метапакет, который тянет приложения в Ubuntu по умолчанию в качестве зависимостей. Если я удалил Firefox и установленным браузером Chrome, Firefox по-прежнему будет втянут в рамках модернизации? Пока это стандартный браузер новый релиз, да. Хром также будут обновлены. Я не уверен, если вы можете удалить Firefox без удаления убунту-десктоп. Обратите внимание, что помимо строгих зависимостей пакета знает и понятие рекомендации, где программа, как правило, будут установлены как зависимости, но может быть удален позже, не затрагивая ничего, кроме ее собственному зависимостей. Кроме того, что произойдет, если одно приложение используется, чтобы зависеть пакет-х и уже не так в новой версии; пакет-х быть повышен наряду с остальными пакетами, несмотря на то, сирым? Неа.

просто спросите меня если вы все еще есть какие-либо вопросы.

12
ответ дан 31 July 2018 в 10:59
  • 1
    Можете ли вы ссылаться на большее количество документов, связанных с аддитивным ад (напоминает мне термин «аддон»)? Я использую минимальные установки Ubuntu, и я хочу выяснить, как будет работать обновление для меня. – Oxwivi 2 November 2012 в 03:01
  • 2
    Я думаю, что все, что вы найдете в Интернете, о адской зависимости - это жалобы. Прочтите свои подходящие справочные страницы, например man apt-get. Я считаю, что часто полезно использовать синтаксис команды, определяющий выпуск, например apt-get -t intrepid install foo/jaunty bar/oneiric и т. Д., Только примеры. На самом деле это имеет больше смысла в Debian, где вы иногда смешиваете релизы, в Ubuntu это менее привычно. Интересные темы также могут быть apt-pinning и установка пакетов в ожидании. – Paul Hänsch 2 November 2012 в 04:21
  • 3
    Вы выигрываете награду за самый длинный некодовый ответ, который я когда-либо видел в сети Stack Exchange. – pthurmond 20 September 2013 в 22:17

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

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

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

3
ответ дан 31 July 2018 в 10:59

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

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

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

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

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

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

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

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

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

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

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

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

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

вот более подробное описание процесса. К сожалению текст был так долго.

мой опыт проистекает из Debian, для которых вся упаковка и обновления системы, используемые в Ubuntu была изначально придумана. Ежедневные обновления безопасности ОС Ubuntu соответствуют запущена apt-get upgrade, которые, как правило, не удалить любое программное обеспечение. Большие обновления релиза соответствовать apt-get dist-upgrade, в течение которого пакеты программного обеспечения могут быть полностью заменены.

на самом деле очень низкого уровня, как правило, не размениваясь при обновлении релиза. Сразу после обновления вы должны найти два ядра и initrd изображений в директории /Boot. Это потому, что в отличие от программ компоненты ядра не так хорошо взаимозаменяемыми. Если возникает необходимость загрузки новых драйверов при обновлении, они должны быть совместимы с управлением ядра. После того, как система загрузится с новым ядром, старый можно удалить. Последний раз я проверял это одно должно было быть сделано вручную, я не знаю, как текущего обновления обрабатывает это. Это кстати. главная причина, почему образ ядра носит номер версии в имени файла - так что вы можете иметь различные версии установленного ядра одновременно. Же путь к модулю (/библиотека/модули/...)

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

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

для каждой установленной программы, утилита просто ищет более новую версию. Часто эти программы являются просто Мета-пакеты типа "убунту-десктоп", который не содержит никаких данных, то и просто зависимости. Новые версии зависимых библиотек потянутся, так как они запрашиваются напрямую с обновленными программами (выполнена вручную). Программа обновления всегда будет пытаться установить новейшую полезную версию любого зависимого пакета (при любой upgrdade не просто выпуск обновлений).

программ, которые не могут работать с новой версии библиотеки не может быть запущен в течение времени после библиотеки повышен, и перед самой программы обновления. Если эти программы уже должен быть запущен до обновления библиотек, однако они продолжают работать, потому что старые версии библиотеки остается в памяти, пока это остается в использовании. Же касается программ, которые были запущены прежде чем они обновляются. Те не будут предоставлять новые возможности, пока они не прекращаются и перезапустить.

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

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

этот механизм даже позволяет обмениваться всей программы пользователя. Как, например, переход от Gnome2 к единству. Так как просто автоматическая зависимостей в Ubuntu-Desktop, который один из немногих пакетов, для новых версий требуется представлять в первую очередь.

программы

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

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

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

Вы можете использовать программу командной строки apt-mark, чтобы выяснить, какие пакеты отмечены как установленные вручную и автоматически устанавливается. Вы также можете переключать эти знаки с помощью той же программы. Это напрямую влияет на процесс обновления.

[dиода d17]в более сложной установки программного обеспечения программа обновления иногда попросит вас разрешить зависимости вручную. Т. е. когда установлен вручную, программа обновляется и просит новую версию библиотеки, а другой установлен вручную программы зависит от старой версии той же библиотеке и не может работать с новым. Тогда вам придется сделать свой выбор, либо отказаться от одной из этих программ или воздержаться от обновления. С зависимостями часто комплекс это может стать очень грязным очень быстро (вы, возможно, слышали термин "ад зависимостей").[!dиода d17]

теперь конкретные вопросы:

при низком уровне инфраструктуры изменяется (минимум-уровня ядра, драйверов, библиотек и т. д. все, что пользователь не может напрямую взаимодействовать с), Что происходит с устаревшими серверами? ОК... я уже освещал этот один, что происходит с приложением, которое было полностью устаревшим? Например, единство 2D (или любое другое программное обеспечение заброшенных/нет мейнтейнеров пакета, которого нет в новый РЕПО). Если Приложение после установки вручную, она останется в системе, часто вызывает зависимость, черт возьми, я описал. в Ubuntu-Desktop-это метапакет, который тянет приложения в Ubuntu по умолчанию в качестве зависимостей. Если я удалил Firefox и установленным браузером Chrome, Firefox по-прежнему будет втянут в рамках модернизации? Пока это стандартный браузер новый релиз, да. Хром также будут обновлены. Я не уверен, если вы можете удалить Firefox без удаления убунту-десктоп. Обратите внимание, что помимо строгих зависимостей пакета знает и понятие рекомендации, где программа, как правило, будут установлены как зависимости, но может быть удален позже, не затрагивая ничего, кроме ее собственному зависимостей. Кроме того, что произойдет, если одно приложение используется, чтобы зависеть пакет-х и уже не так в новой версии; пакет-х быть повышен наряду с остальными пакетами, несмотря на то, сирым? Неа.

просто спросите меня если вы все еще есть какие-либо вопросы.

12
ответ дан 2 August 2018 в 03:42
  • 1
    Можете ли вы ссылаться на большее количество документов, связанных с аддитивным ад (напоминает мне термин «аддон»)? Я использую минимальные установки Ubuntu, и я хочу выяснить, как будет работать обновление для меня. – Oxwivi 2 November 2012 в 03:01
  • 2
    Я думаю, что все, что вы найдете в Интернете, о адской зависимости - это жалобы. Прочтите свои подходящие справочные страницы, например man apt-get. Я считаю, что часто полезно использовать синтаксис команды, определяющий выпуск, например apt-get -t intrepid install foo/jaunty bar/oneiric и т. Д., Только примеры. На самом деле это имеет больше смысла в Debian, где вы иногда смешиваете релизы, в Ubuntu это менее привычно. Интересные темы также могут быть apt-pinning и установка пакетов в ожидании. – Paul Hänsch 2 November 2012 в 04:21
  • 3
    Вы выигрываете награду за самый длинный некодовый ответ, который я когда-либо видел в сети Stack Exchange. – pthurmond 20 September 2013 в 22:17

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

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

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

3
ответ дан 2 August 2018 в 03:42

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

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

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

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

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

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

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

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

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

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

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

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

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

вот более подробное описание процесса. К сожалению текст был так долго.

мой опыт проистекает из Debian, для которых вся упаковка и обновления системы, используемые в Ubuntu была изначально придумана. Ежедневные обновления безопасности ОС Ubuntu соответствуют запущена apt-get upgrade, которые, как правило, не удалить любое программное обеспечение. Большие обновления релиза соответствовать apt-get dist-upgrade, в течение которого пакеты программного обеспечения могут быть полностью заменены.

на самом деле очень низкого уровня, как правило, не размениваясь при обновлении релиза. Сразу после обновления вы должны найти два ядра и initrd изображений в директории /Boot. Это потому, что в отличие от программ компоненты ядра не так хорошо взаимозаменяемыми. Если возникает необходимость загрузки новых драйверов при обновлении, они должны быть совместимы с управлением ядра. После того, как система загрузится с новым ядром, старый можно удалить. Последний раз я проверял это одно должно было быть сделано вручную, я не знаю, как текущего обновления обрабатывает это. Это кстати. главная причина, почему образ ядра носит номер версии в имени файла - так что вы можете иметь различные версии установленного ядра одновременно. Же путь к модулю (/библиотека/модули/...)

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

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

для каждой установленной программы, утилита просто ищет более новую версию. Часто эти программы являются просто Мета-пакеты типа "убунту-десктоп", который не содержит никаких данных, то и просто зависимости. Новые версии зависимых библиотек потянутся, так как они запрашиваются напрямую с обновленными программами (выполнена вручную). Программа обновления всегда будет пытаться установить новейшую полезную версию любого зависимого пакета (при любой upgrdade не просто выпуск обновлений).

программ, которые не могут работать с новой версии библиотеки не может быть запущен в течение времени после библиотеки повышен, и перед самой программы обновления. Если эти программы уже должен быть запущен до обновления библиотек, однако они продолжают работать, потому что старые версии библиотеки остается в памяти, пока это остается в использовании. Же касается программ, которые были запущены прежде чем они обновляются. Те не будут предоставлять новые возможности, пока они не прекращаются и перезапустить.

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

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

этот механизм даже позволяет обмениваться всей программы пользователя. Как, например, переход от Gnome2 к единству. Так как просто автоматическая зависимостей в Ubuntu-Desktop, который один из немногих пакетов, для новых версий требуется представлять в первую очередь.

программы

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

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

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

Вы можете использовать программу командной строки apt-mark, чтобы выяснить, какие пакеты отмечены как установленные вручную и автоматически устанавливается. Вы также можете переключать эти знаки с помощью той же программы. Это напрямую влияет на процесс обновления.

[dиода d17]в более сложной установки программного обеспечения программа обновления иногда попросит вас разрешить зависимости вручную. Т. е. когда установлен вручную, программа обновляется и просит новую версию библиотеки, а другой установлен вручную программы зависит от старой версии той же библиотеке и не может работать с новым. Тогда вам придется сделать свой выбор, либо отказаться от одной из этих программ или воздержаться от обновления. С зависимостями часто комплекс это может стать очень грязным очень быстро (вы, возможно, слышали термин "ад зависимостей").[!dиода d17]

теперь конкретные вопросы:

при низком уровне инфраструктуры изменяется (минимум-уровня ядра, драйверов, библиотек и т. д. все, что пользователь не может напрямую взаимодействовать с), Что происходит с устаревшими серверами? ОК... я уже освещал этот один, что происходит с приложением, которое было полностью устаревшим? Например, единство 2D (или любое другое программное обеспечение заброшенных/нет мейнтейнеров пакета, которого нет в новый РЕПО). Если Приложение после установки вручную, она останется в системе, часто вызывает зависимость, черт возьми, я описал. в Ubuntu-Desktop-это метапакет, который тянет приложения в Ubuntu по умолчанию в качестве зависимостей. Если я удалил Firefox и установленным браузером Chrome, Firefox по-прежнему будет втянут в рамках модернизации? Пока это стандартный браузер новый релиз, да. Хром также будут обновлены. Я не уверен, если вы можете удалить Firefox без удаления убунту-десктоп. Обратите внимание, что помимо строгих зависимостей пакета знает и понятие рекомендации, где программа, как правило, будут установлены как зависимости, но может быть удален позже, не затрагивая ничего, кроме ее собственному зависимостей. Кроме того, что произойдет, если одно приложение используется, чтобы зависеть пакет-х и уже не так в новой версии; пакет-х быть повышен наряду с остальными пакетами, несмотря на то, сирым? Неа.

просто спросите меня если вы все еще есть какие-либо вопросы.

12
ответ дан 4 August 2018 в 19:46
  • 1
    Можете ли вы ссылаться на большее количество документов, связанных с аддитивным ад (напоминает мне термин «аддон»)? Я использую минимальные установки Ubuntu, и я хочу выяснить, как будет работать обновление для меня. – Oxwivi 2 November 2012 в 03:01
  • 2
    Я думаю, что все, что вы найдете в Интернете, о адской зависимости - это жалобы. Прочтите свои подходящие справочные страницы, например man apt-get. Я считаю, что часто полезно использовать синтаксис команды, определяющий выпуск, например apt-get -t intrepid install foo/jaunty bar/oneiric и т. Д., Только примеры. На самом деле это имеет больше смысла в Debian, где вы иногда смешиваете релизы, в Ubuntu это менее привычно. Интересные темы также могут быть apt-pinning и установка пакетов в ожидании. – Paul Hänsch 2 November 2012 в 04:21
  • 3
    Вы выигрываете награду за самый длинный некодовый ответ, который я когда-либо видел в сети Stack Exchange. – pthurmond 20 September 2013 в 22:17

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

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

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

3
ответ дан 4 August 2018 в 19:46

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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