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-upgrader” (раніше він був “менеджером оновлень”). Версія відповідає останнім оновленням цільового випуску.
Джерело має стару README з бородавчастих та сирих часів випуску. Тут обговорюється, що слід зробити під час оновлення випуску. Тут також згадується посилання на більш детальну пропозицію UpgradeTool .
Я перелічу тут вказані дії та перевіряю, чи реально вони реалізовані:
- сховище
- перейти до нових записів source.list
- видалити невідомі сторонні сховища
- можливо, дзеркало своп (не реалізовано)
- пов'язаний з пакетом
- перевірте, чи немає пошкоджених пакетів перед оновленням
- оновити поточний випуск перед оновленням (
apt-get update
лише)
- видалити та встановити конкретні пакети
- перевірте, чи встановлено {ubuntu, kubuntu, edubuntu} -desktop
- позбутися від старих ядер
- мати видалення-чорний список та -whitelist
- видалити або замінити застарілі пакети, які існували в попередніх випусках
- пов’язана з конфігурацією (можлива у примірках: див. нижче)
- додавання користувача за замовчуванням до нових груп (не робиться для перевірених версій)
- перевірити деякі конфігураційні файли
UpgradeTool налаштовується для кожного випуску за допомогою наступних файлів (відкрийте їх, щоб побачити!):
- DistUpgrade.cfg
- Конфігурація, пов’язана з UpgradeTool
- конфігурація, що стосується випуску
- сховища (наприклад, [Джерела] ValidMirrors)
- спеціальні зміни ([Distro] PostInstallScript)
- спеціальні пакети; обробляється лише DistUpgradeController.py:
- [Distro] RemoveObsolete, ForcedObsolete, BaseMetaPkgs, MetaPkgs
- [meta_package_name] ForcedObsolete
- ... та DistUpgradeCache.py:
- [Distro] MetaPkgs, RemovalBlacklist, RemoveEssentialOk, BadVersions, BaseMetaPkgs, PurgeObsolete, Демоції, KeyDependitions
- [Distro та meta_package_name] KeepInstalledPkgs, KeepInstalledSection, PostUpgrade *
- [KernelRemoval] *
- DistUpgradeQuirks.py
- запускає (випускає) конкретні функції (той самий файл) та плагіни (
plugins
каталог)
- функції повинні мати конкретні імена (наприклад
from_nattyPreCacheOpen()
) та спеціальні condition
атрибути плагінів (наприклад, *
або PostInitialUpdate
)
- одна з цих функцій,
StartUpgrade()
- це інша граб-мішка сама по собі: серед інших вона викликає _applyPatches()
, яка передає файли в patches
каталозі
- все це майже нічого не робить у моїй установці (i386, пакети не старші від natty-оновлень)
- більше від DistUpgradeCache.py
- пробіжки
get_kernel_list.sh
(не є надійним) і гарантує, що одне ядро встановлено
- кілька поводження з драйверами Nvidia
Перевірені версії:
- natty → oneiric
- онерік → точний
- точний → надійний (остаточний станом на 2014-04-18)
- вірний → утопічний (за години до виходу 2014-10-23)