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)