Dlaczego `do-release-upgrade` pomija wersję?

14

Odpowiedziałem na to pytanie, że do-release-upgradenie zezwalam na aktualizację z wersji 14.10 do 15.04 tylko do 15.10, zakładałem, że było to spowodowane wycofaniem 15.04.

Użytkownik (@xangua) napisał, że nie można pominąć wydania do-release-upgrade, więc sprawdziłem te informacje, uruchamiając polecenie na moim polu 14.04, ale tutaj zaczęło się zamieszanie.

Mój 14.04 chce uaktualnić bezpośrednio do 15.04?

Oczywiście to unieważnia moją odpowiedź, ponieważ 15.04 to koniec życia, ale dlaczego to polecenie wydaje się pomijać wersje, jeśli nie oparte na końcu życia?

Nic nie wskazuje na to, że aktualizacja z 14.10 jest pobierana i software-updatermówi, że Ubuntu 15.04 jest już dostępny do pobrania, wyjaśnienie tego byłoby świetne.

Mark Kirby
źródło
2
To nie jest normalne, że twój system 14.04 chce uaktualnić do 15.04, ponieważ nie jest to obsługiwane. Na przykład w informacjach o wersji 15.04 wspomniano tylko o aktualizacji z 14.10. Kiedy do-release-upgradedziałam na moim systemie 14.04, pojawia się komunikat „nie znaleziono nowej wersji”, co jest normalne, ponieważ system 14.04 można kiedykolwiek zaktualizować do wersji 14.10, ale wersja 14.10 jest teraz EOL.
fkraiem
1
Więc musi być coś nienormalnego w twoim systemie. Jaka jest twoja wersja ubuntu-release-upgrader-core?
fkraiem
1
Nie mogę już podawać tych informacji, że instalacja zniknęła z powodu bałaganu w poleceniu, ponowna instalacja była łatwiejsza niż poprawianie błędów spowodowanych przez zatrzymanie aktualizacji.
Mark Kirby
1
@ fkraiem faktycznie, pomijanie wersji jest obsługiwane, ponieważ menedżerowie repozytoriów mogą „skryptować” na swój sposób.
Braiam

Odpowiedzi:

12

Twoje pierwotne przypuszczenie było słuszne. 15.04 jest obsługiwany do 04.02.2016, więc do-release-upgradepróbuje uaktualnić cię do następnej obsługiwanej wersji w porównaniu do tej, którą masz.

Oto opis normalnego trybu monitowania o aktualizację z /etc/update-manager/release-upgrades:

Sprawdź, czy dostępna jest nowa wersja. Jeśli znaleziono więcej niż jedną nową wersję, narzędzie do aktualizacji wersji podejmie próbę uaktualnienia do wersji, która natychmiast zastąpi aktualnie działającą wersję.

Więc jeśli mam 14.04, powinienem zabrać mnie do 14.10, ale teraz do-release-upgradepróbuję przenieść OP (i mnie) do 15.04 zamiast tego.

Czytając /usr/lib/python3/dist-packages/DistUpgrade/MetaRelease.pyto, wygląda na to, że pomijamy nieobsługiwane wersje, zastanawiając się, do której wersji należy zaktualizować (chyba że używasz flagi programisty):

    # then see what we can upgrade to
    upgradable_to = ""
    for dist in dists:
        if dist.date > current_dist.date:
            # Only offer to upgrade to an unsupported release if running
            # with useDevelopmentRelease, this way one can upgrade from an
            # LTS release to the next supported non-LTS release e.g. from
            # 14.04 to 15.04.
            if not dist.supported and not self.useDevelopmentRelease:
                continue
            upgradable_to = dist
            self._debug("new dist: %s" % upgradable_to)
            break

Powinienem dodać, że nie zalecam próbowania obejścia tego do-release-upgrade -d. Kiedy spróbowałem prompt=normal, dostałem 404, ponieważ 14.10 to EoL. Myślę też, że w swoim majaczeniu musiałem spróbować do-release-upgrade -p, co doprowadziło mnie prosto do 16.04. Zanim zdałem sobie sprawę, że zabiera mnie to na xenial, wszystko się zepsuło i musiałem przywrócić z fabryki. W końcu zdecydowałem, że poczekam, aż 16.04 zostanie wydany i zrobię nową instalację.

mmaluff
źródło
1
Czy masz coś na poparcie tego, czy tylko zgadłeś?
Ken Sharp
1
Dodano szczegóły. Napotkałem ten sam problem co OP.
mmaluff
3
Solidna odpowiedź na pytanie, które, jak sądzę, wpadłoby w zapomnienie :)
Mark Kirby
2
Zachowanie opisane w tej doskonałej odpowiedzi nadal obowiązuje i dotyczy aktualizacji za pośrednictwem narzędzia Software Updater do-release-upgrade. Obecnie systemy LTS 16.04 automatycznie oferują aktualizację do wersji 17.04 , i zrobią to bezpośrednio , pomijając 16.10, ponieważ jest to koniec życia . Odpowiedzi te skorzystałyby na tej korekcie - można by opublikować nową odpowiedź opisującą w pełni obecne zachowanie. Chcesz coś opublikować?
Eliah Kagan
5

Do-release-upgrade nie wie nic o „wersjach skokowych”. Po prostu pobiera plan aktualizacji z opiekunów repozytorium Ubuntu. Jest to określone w README do-release-upgrade :

2) Narzędzie do aktualizacji musi być w stanie pobrać zaktualizowane informacje o sposobie przeprowadzenia aktualizacji (np. Dodatkowe kroki, takie jak najpierw aktualizacja niektórych bibliotek)

Ponadto w specyfikacji dotyczącej automatycznych aktualizacji :

Plik meta-wydania z informacjami o dostępnych dystrybucjach jest przechowywany na serwerze centralnym i jest testowany pod kątem modyfikacji w przypadku każdego uruchomienia menedżera aktualizacji. Jeśli zostanie znaleziona nowa wersja, menedżer aktualizacji pokaże to wizualnie.

To pozwala na bezproblemową aktualizację do-upgrade-release i dowolnego innego narzędzia.

Braiam
źródło