Что на самом деле делает `do-release-upgrade`?

30

Мы знаем, что do-release-upgrade«делает обновление релиза». Но на немного более низком уровне, что это действительно делает?

Я планирую сделать более ручное обновление, например, путем Debian: aptitude updateи aptitude full-upgradeпосле настройки источников. На самом деле, я планирую сделать это полностью интерактивно aptitude. Но это оставляет меня любопытным на предмет того, что еще do-relase-upgrade делает, кроме как потерять мой список sources.list.

Роберт Симер
источник

Ответы:

32

do-release-upgradeявляется частью пакета «update-manager-core». Сценарий, кажется, определяет, к какому выпуску вы собираетесь перейти, попытайтесь выяснить, поддерживается ли он или нет, и жаловаться на последний. - Если он убежден, что работает, он загружает специфичный для релиза UpgradeTool и запускает его.

Частью пакета «update-manager-core» является файл /etc/update-manager/meta-release, в котором вы можете найти URL-адрес http://changelogs.ubuntu.com/meta-release и там вы найдете URL-адрес для загрузки UpgradeTool.

Загруженный архив UpgradeTool упакован из исходного пакета «ubuntu-release-upgradeder» (до того, как он стал «update-manager»). Версия соответствует последним обновлениям для целевой версии.

У источника есть старый README из времен бородавок и седых релизов. В нем обсуждается, что следует делать во время обновления релиза. Также упоминается ссылка на более подробное предложение UpgradeTool .

Я перечислю здесь действия, упомянутые там, и проверил, действительно ли они реализованы

  • связанный с хранилищем
    • переключиться на новые источники
    • удалить неизвестные сторонние репозитории
    • возможно, поменять зеркало (не реализовано)
  • связанный пакет
    • проверьте, нет ли сломанных пакетов перед обновлением
    • обновить текущую версию перед обновлением ( apt-get updateтолько)
    • удалить и установить определенные пакеты
    • проверьте, установлен ли {ubuntu, kubuntu, edubuntu} -desktop
    • избавиться от старых ядер
    • есть черный список удаления и белый список
    • удалить или заменить устаревшие пакеты, которые существовали в более ранних выпусках
  • связанные с конфигурацией (возможно в причудах: см. ниже)
    • добавление пользователя по умолчанию в новые группы (не сделано для версий, которые я проверял)
    • проверьте некоторые файлы конфигурации

UpgradeTool настраивается для каждого выпуска с использованием следующих файлов (откройте их, чтобы увидеть!):

  • DistUpgrade.cfg
    • UpgradeTool-связанная конфигурация
    • связанная с выпуском конфигурация
    • репозитории (например, [Sources] ValidMirrors)
    • пользовательские изменения ([Distro] PostInstallScript)
    • специальные пакеты; обрабатывается только DistUpgradeController.py:
      • [Distro] RemoveObsoletes, ForcedObsoletes, BaseMetaPkgs, MetaPkgs
      • [meta_package_name] ForcedObsoletes
    • ... и DistUpgradeCache.py:
      • [Distro] MetaPkgs, удаление черного списка, RemoveEssentialOk, BadVersions, BaseMetaPkgs, PurgeObsoletes, понижения, ключевые зависимости
      • [Distro и meta_package_name] KeepInstalledPkgs, KeepInstalledSection, PostUpgrade *
      • [KernelRemoval] *
  • DistUpgradeQuirks.py
    • запускает (выпускает) определенные функции (тот же файл) и плагины ( pluginsкаталог)
    • функции должны иметь конкретные имена (например from_nattyPreCacheOpen()) и плагины специальные conditionатрибуты (например, *или PostInitialUpdate)
    • одна из этих функций, StartUpgrade()сама по себе другая сумка-захват: среди прочего она вызывает _applyPatches(), которая просматривает файлы в patchesкаталоге
    • все они практически ничего не делают в моей установке (i386, пакеты не старше natty-updates)
  • больше от DistUpgradeCache.py
    • работает get_kernel_list.sh(не в верном) и проверяет, установлено ли одно ядро
    • немного о драйверах Nvidia

Проверенные версии:

  • natty → oneiric
  • oneiric → точный
  • точный → верный (окончательный по состоянию на 2014-04-18)
  • верный → утопический (часы до релиза 2014-10-23)
Роберт Симер
источник
3
Каждый раз, когда я использовал do-release-upgrade, я получал не загружаемую систему :)
user205301 10.03.14
В качестве примеров вещей, которые обрабатывает do-release-upgrade: двоичные драйверы nvidia, изменения в нескольких архивах, ndiswrapper, добавление / удаление архитектур и типов ядра (например, устаревшее ядро ​​сервера)
NGRhodes
@NGRhodes ваш комментарий слишком расплывчатый для меня: ndiswrapper был особым случаем еще в бешенстве, а не в наши дни. Архитектуры не добавляются и не удаляются (за исключением amd64, который добавляет i386 как чужой, который, как я полагаю, покрывается «изменениями в многоархивном режиме»). - Ничто не считается «устаревшим»: пакеты удалены или нет.
Роберт Симер