Есть у меня комп с установленной на него debian wheezy (7), ядром от jessie (8). Решил его обновить и перейти заодно на devuan т.к. вспомнил что обновление до нового дебиана установит туда гадостный systemd.
Начал с того что поставил туда apt от stretch (9) с локальных проверенных .deb-пакетов т.к. в более ранних была уязвимость https://lists.debian.org/debian-security-announce/2019/msg00010.html позволяющая RCE через mitm незащищённого соединения к репе. Для того чтобы apt от stretch поставился в wheezy и не ругался, пришлось немного покостылить libstdc++6, убрав из него строчки Breaks: и Depends: (чтобы он просто молча установился и не пытался мне снести пол-системы). Также, чтобы пакеты из новых релизов нормально конфигурировались, (об этом узнал позже, см ниже! ***) пришлось сделать фикс к пакету init-system-helpers-1.48 (от stretch), убрав из него всё что конфликтовало с wheezy, оставив скрипты deb-systemd-helper и deb-systemd-invoke (они нужны в preinst/postinst хуках новых пакетов в т.ч. в devuan), почистив метаданные от конфликтов и зависимостей и заменив версию на 1.47.999 чтобы потом он сам мог дальше обновиться. Получившийся дебиан (wheezy с добавками jessie/stretch) работал нормально.
После этого я установил вручную скаченный и проверенный devuan-keyring, заменил репы на «devuan ascii» (это аналог stretch-а из дебиановских версий, прыгать через 3 версии сразу до beowulf или тем более через 4 до chimaera не хотелось) и начал плавно обновляться. Начал с apt-get update / upgrade.
Вот тут случилась сомнительная ситуация. apt-get upgrade упал в середине настройки из-за отсутствующего deb-systemd-helper. Я этот файл ему организовал (см. выше про хак с init-system-helpers ***), запустил заново apt-get upgrade и вроде оно продолжилось. [!] Первый вопрос - он ничего при таком падении в середине не мог потерять? По виду было всё норм.
Дальше - почистил ненужные остатки вручную, делаю apt-get install eudev, он хочет снести пол-системы, потыкался как сделать эту операцию более щадящими способами, особо не нашёл, единственное заметил что его «план установки» выглядит менее варварским если сделать apt-get install eudev apt-file. Делаю (список удалённых/установленных пакетов запомнил в файл чтобы потом их перепроверить на предмет нужности). И он в середине опять падает :( На настройке какого-то perlmagick. Что именно в нём сломалось выяснить не удалось - потому что повторно уже даже не запускается, пишет что не может составить план установки из-за битых зависимостей. [!] Как так?! Он же уже начал исполнять этот запрос, раньше знал как его выполнить а теперь забыл? Вобщем, apt-get стал нерабочим, т.к. на любые команды он теперь ругается на нерезолвленные зависимости, половину пакетов, которые он собирался удалить, он удалил, какие-то не удалил, может быть что-то поставил. Советует apt-get install -f но тот так же не работает. Ну, я среди его ругани обнаружил остатки ненужного мне гнома, разбираться с конфликтами ненужных пакетов не хочу - поэтому просто вручную потёр их через dpkg --purge (это apt сломался а dpkg работает норм, правда пришлось вручную список к удалению составлять т.к. рекурсивно удалять он не умеет). И ещё несколько пакетов пришлось так удалить (потом поставлю заново), после чего apt-get install -f наконец соизволил придумать что он может сделать. Запускаю, он что-то удаляет/ставит. [!] Третий вопрос: после такого (упавший в неконсистентном состоянии apt, ручная чистка мусора через dpkg, опять запуск apt) apt тоже ничего не «потеряет»? Не мог он какие-то хуки в итоге забыть запустить от пакетов которые он в первый раз недоустановил?
apt-get опять падает, на этот раз на настройке lintian, с странным сообщением об ошибке, дословно не вспомню, но что-то типа «apt ожидал от dpkg 4 действия а тот сделал 0». Исправилось после запуска «dpkg-reconfigure lintian» (который кажется ничего не сделал), после чего apt-get install -f тоже стал ничего не делать и не ругаться. [!] Четвёртый вопрос: тут он тоже ничего не потерял? Судя по его логу до падения от lintian, он только начал этап настроек, а пакетов та было много, но после фикса lintian'а почему-то он ничего делать не продолжил. Впрочем, запущеный после этого ещё раз apt-get upgrade отработал уже нормально, ещё кучу всего обновил и ни разу неупал. Ребут компа тоже прошёл норм, правда иксы не запускаются, но это другая тема, ведь обновление ещё не закончено (ну, я надеюсь что это не связано с вопросами выше и не придётся вручную их чинить).
Если что, на сайте devuan нет гайда ни по обновлению с debian wheezy до чего угодно (минимум jessie), ни по обновлению с чего угодно до devuan ascii (к нему только чистая установка описана, а обновления до beowulf и chimaera - то более поздние релизы). Надеюсь это не потому что там возникают неразрешимые проблемы.
----
Вопросы (всего 4) помечены знаками «[!]» чтобы их было лучше видно в этой простыне.