Pourquoi «do-release-upgrade» ignore-t-il une version?

14

J'ai répondu à cette question sur le fait de do-release-upgradene pas autoriser une mise à niveau de 14.10 à 15.04 uniquement vers 15.10, j'ai supposé que c'était dû à la fin de la vie du 15.04.

Un utilisateur (@xangua) a posté qu'il n'était pas possible de sauter une version avec do-release-upgrade, j'ai donc regardé ces informations en exécutant la commande sur ma boîte 14.04, mais c'est là que la confusion a commencé.

Mon 14.04 veut passer directement au 15.04?

Bien sûr, cela invalide ma réponse car 15.04 est en fin de vie, mais pourquoi cette commande semble-t-elle ignorer les versions, si elle n'est pas basée sur la fin de vie?

Rien n'indique que quoi que ce soit à partir de 14.10 soit téléchargé par la mise à niveau et software-updaterdit qu'Ubuntu 15.04 est maintenant disponible pour téléchargement, quelques clarifications à ce sujet seraient formidables.

Mark Kirby
la source
2
Il n'est pas normal que votre système 14.04 veuille passer à la version 15.04, car cela n'est pas pris en charge. Par exemple, les notes de publication de 15.04 ne mentionnent que la mise à niveau à partir de 14.10. Lorsque je lance do-release-upgradesur mon système 14.04, il est dit "aucune nouvelle version trouvée", comme c'est normal puisqu'un système 14.04 ne peut être mis à niveau que vers 14.10, mais 14.10 est maintenant en fin de vie.
fkraiem
1
Il doit donc y avoir quelque chose d'anormal sur votre système. Quelle est votre version de ubuntu-release-upgrader-core?
fkraiem
1
Je ne peux plus fournir ces informations, cette installation a disparu en raison d'un problème avec la commande, la réinstallation a été plus facile que de corriger les erreurs causées par l'arrêt de la mise à niveau.
Mark Kirby
1
@fkraiem en fait, ignorer les versions est pris en charge car les gestionnaires de référentiels peuvent "scripter" leur chemin.
Braiam

Réponses:

12

Votre supposition d'origine avait raison. 15.04 est pris en charge jusqu'au 2016-02-04, donc do-release-upgradeessaie de vous mettre à niveau vers la prochaine version prise en charge par rapport à celle que vous avez.

Voici la description du mode d'invite de mise à niveau normal à partir de /etc/update-manager/release-upgrades:

Vérifiez si une nouvelle version est disponible. Si plusieurs nouvelles versions sont trouvées, le programme de mise à niveau des versions tentera de passer à la version qui succède immédiatement à la version en cours d'exécution.

Donc, si je suis sur 14.04, il devrait essayer de m'amener à 14.10, mais do-release-upgradeessaie actuellement de prendre l'OP (et moi) à 15.04 à la place.

Donc, en le lisant, /usr/lib/python3/dist-packages/DistUpgrade/MetaRelease.pynous semblons ignorer les versions non prises en charge lors de la détermination de la version à mettre à niveau (sauf si vous utilisez l'indicateur de développeur):

    # 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

Je dois ajouter que je ne recommande pas d'essayer de contourner ce problème do-release-upgrade -d. Quand je l'ai essayé avec prompt=normal, j'ai eu 404, puisque 14.10 est EoL. Je pense aussi que dans mon délire j'ai dû essayer do-release-upgrade -p, ce qui a tenté de me porter directement à 16.04. Au moment où j'ai réalisé que cela m'emmenait au xénial, tout était cassé et j'ai dû restaurer de l'usine. Finalement, j'ai décidé d'attendre la sortie de 16.04 et de faire une nouvelle installation.

mmaluff
la source
1
Avez-vous quelque chose à l'appui de cela, ou avez-vous simplement deviné?
Ken Sharp
1
Détails ajoutés. Je rencontrais le même problème que OP.
mmaluff
3
Réponse solide à une question que je pensais tomber dans l'obscurité :)
Mark Kirby
2
Le comportement décrit dans cette excellente réponse s'applique toujours, et il s'applique aussi bien aux mises à niveau via le Software Updater do-release-upgrade. Actuellement, les systèmes LTS 16.04 proposent automatiquement une mise à niveau vers 17.04 , et ils le feront directement , en sautant 16.10 car il est en fin de vie . Ces réponses bénéficieraient de cette correction - ou une nouvelle réponse décrivant entièrement le comportement actuel pourrait être publiée. Voulez-vous publier quelque chose?
Eliah Kagan
5

do-release-upgrade ne sait rien des "versions sautantes". Il télécharge simplement le plan de mise à niveau à partir des responsables du référentiel Ubuntu. Ceci est spécifié dans le fichier README de do-release-upgrade :

2) L'outil de mise à niveau doit pouvoir télécharger des informations mises à jour sur la façon d'effectuer la mise à niveau (par exemple, des étapes supplémentaires comme la mise à niveau de certaines bibliothèques en premier)

En outre, dans la spécification des mises à niveau automatiques :

Un fichier de méta-version contenant des informations sur les distributions disponibles est stocké sur un serveur central et il est If-Modified-Since testé sur chaque exécution de update-manager. Si une nouvelle version est trouvée, update-manager le montre visuellement.

C'est ce qui permet à do-upgrade-release et à tout autre outil de se mettre à niveau de manière transparente.

Braiam
la source