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

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

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

1 ответ

Решение

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.

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

  • связанный с хранилищем
    • переключиться на новые записи sources.list
    • удалить неизвестные сторонние репозитории
    • возможно, поменять зеркало (не реализовано)
  • связанный пакет
    • проверьте, нет ли сломанных пакетов перед обновлением
    • обновить текущую версию перед обновлением (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)
Другие вопросы по тегам