¿Por qué `do-release-upgrade` se salta una versión?

14

Respondí esta pregunta sobre do-release-upgradeno permitir una actualización de 14.10 a 15.04 solo a 15.10, supuse que se debía a que 15.04 era el final de la vida útil.

Un usuario (@xangua) publicó que no era posible omitir un lanzamiento do-release-upgrade, así que busqué esta información ejecutando el comando en mi casilla 14.04, pero aquí es donde comenzó la confusión.

Mi 14.04 quiere actualizar directamente a 15.04?

Por supuesto, esto invalida mi respuesta ya que 15.04 es el final de la vida, pero ¿por qué este comando parece omitir versiones, si no se basa en el final de la vida?

No hay ninguna indicación de que la actualización haya descargado nada desde 14.10 y software-updaterdice que Ubuntu 15.04 ya está disponible para descargar, alguna aclaración de esto sería genial.

Mark Kirby
fuente
2
No es normal que su sistema 14.04 desee actualizar a 15.04, ya que esto no es compatible. Por ejemplo, las notas de la versión 15.04 solo mencionan la actualización de 14.10. Cuando ejecuto do-release-upgrademi sistema 14.04, dice "no se encontró una nueva versión", como es normal ya que un sistema 14.04 solo podría actualizarse a 14.10, pero 14.10 ahora es EOL.
fkraiem
1
Entonces debe haber algo anormal en su sistema. ¿Cuál es tu versión de ubuntu-release-upgrader-core?
fkraiem
1
Ya no puedo proporcionar esta información, esa instalación se ha ido debido a un error con el comando, la reinstalación fue más fácil que corregir los errores causados ​​por detener la actualización.
Mark Kirby el
1
@fkraiem en realidad, se admite la omisión de versiones ya que los administradores de repositorios pueden "guiar" a su manera.
Braiam

Respuestas:

12

Tu suposición original era correcta. 15.04 es compatible hasta 2016-02-04, por lo que do-release-upgradeestá intentando actualizarlo a la próxima versión compatible en comparación con la que tiene.

Aquí está la descripción del modo de solicitud de actualización normal de /etc/update-manager/release-upgrades:

Verifique si hay una nueva versión disponible. Si se encuentra más de una nueva versión, el actualizador de la versión intentará actualizar a la versión que sucede inmediatamente a la versión actualmente en ejecución.

Entonces, si estoy en 14.04, debería tratar de llevarme a 14.10, pero en este momento do-release-upgradeestá tratando de llevar el OP (y a mí) a 15.04.

Por lo tanto, leerlo /usr/lib/python3/dist-packages/DistUpgrade/MetaRelease.pyparece que omitimos las versiones no compatibles cuando descubrimos a qué versión actualizar (a menos que esté utilizando el indicador de desarrollador):

    # 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

Debo agregar que no recomiendo tratar de solucionar esto do-release-upgrade -d. Cuando lo probé prompt=normal, obtuve 404, ya que 14.10 es EoL. También creo que en mi delirio debí haberlo intentado do-release-upgrade -p, que intentó llevarme directamente a 16.04. Cuando me di cuenta de que me estaba llevando a xenial, todo estaba roto y tuve que restaurar de fábrica. Al final decidí que esperaré hasta que se publique 16.04 y que realice una nueva instalación.

mmaluff
fuente
1
¿Tienes algo que lo respalde, o acabas de adivinar?
Ken Sharp
1
Detalles agregados Me encontraba con el mismo problema que OP.
mmaluff
3
Respuesta sólida a una pregunta que pensé que caería en la oscuridad :)
Mark Kirby
2
El comportamiento descrito en esta excelente respuesta aún se aplica, y también se aplica a las actualizaciones a través del Actualizador de software do-release-upgrade. Actualmente, los sistemas 16.04 LTS ofrecen automáticamente la actualización a 17.04 , y lo harán directamente , omitiendo 16.10 porque es el final de su vida útil . Esas respuestas se beneficiarían de esta corrección, o podría publicarse una nueva respuesta que describa completamente el comportamiento actual. ¿Quieres publicar algo?
Eliah Kagan
5

do-release-upgrade no sabe nada sobre "versiones saltantes". Simplemente descarga el plan de actualización de los mantenedores del repositorio de Ubuntu. Esto se especifica en do-release-upgrade README :

2) La herramienta de actualización debe poder descargar información actualizada sobre cómo realizar la actualización (por ejemplo, pasos adicionales como actualizar ciertas bibliotecas primero)

Además, en la especificación sobre actualizaciones automáticas :

Un archivo de metalanzamiento con información sobre las distribuciones disponibles se almacena en un servidor central y se prueba If-Modified-Since en cada ejecución de update-manager. Si se encuentra una nueva versión, update-manager lo muestra visualmente.

Esto es lo que permite que do-upgrade-release y cualquier otra herramienta se actualicen sin problemas.

Braiam
fuente