¿Qué hace realmente `do-release-upgrade`?

30

Sabemos que do-release-upgrade"hace una actualización de lanzamiento". Pero en un nivel un poco más bajo, ¿qué hace realmente?

Planeo hacer una actualización más manual, por ejemplo a la manera de Debian: aptitude updatey aptitude full-upgradedespués de configurar las fuentes. En realidad, planeo hacerlo completamente interactivo con aptitude. Pero eso me deja con curiosidad por saber qué más do-relase-upgrade hace, excepto limpiar mis fuentes.

Robert Siemer
fuente

Respuestas:

32

do-release-upgradees parte del paquete "update-manager-core". El script parece determinar a qué versión se va a actualizar, intente averiguar si es compatible o no y se queje de esto último. - Si está convencido de que funciona, descarga el UpgradeTool específico de la versión y lo ejecuta.

Parte del paquete "update-manager-core" es el archivo /etc/update-manager/meta-release, donde puede encontrar la URL http://changelogs.ubuntu.com/meta-release y allí encontrará la URL para que se descargue el UpgradeTool.

El tarball de UpgradeTool descargado está empaquetado desde el paquete fuente "ubuntu-release-Updader" (antes era "update-manager"). La versión corresponde a las últimas actualizaciones para la versión de destino.

La fuente tiene un antiguo archivo README de tiempos de lanzamiento verrugosos y canosos. Discute lo que se debe hacer durante una actualización de lanzamiento. También menciona un enlace a una propuesta UpgradeTool más detallada .

Enumero aquí las acciones mencionadas allí y compruebo si realmente se implementan:

  • repositorio relacionado
    • cambiar a nuevas entradas de sources.list
    • eliminar repositorios desconocidos de terceros
    • posiblemente intercambiar espejo (no implementado)
  • paquete relacionado
    • compruebe que no hay paquetes rotos antes de actualizar
    • actualizar la versión actual antes de actualizar ( apt-get updatesolo)
    • eliminar e instalar paquetes específicos
    • compruebe si {ubuntu, kubuntu, edubuntu} -desktop está instalado
    • deshacerse de los granos viejos
    • tener una lista negra de eliminación y una lista blanca
    • eliminar o reemplazar paquetes obsoletos que existían en versiones anteriores
  • relacionado con la configuración (posible en peculiaridades: ver más abajo)
    • Agregar el usuario predeterminado a nuevos grupos (no hecho para las versiones que verifiqué)
    • verifique algunos archivos de configuración

UpgradeTool se configura para cada versión utilizando los siguientes archivos (¡ ábralos para verlos!):

  • DistUpgrade.cfg
    • Configuración relacionada con UpgradeTool
    • configuración relacionada con la versión
    • repositorios (p. ej. [Fuentes] ValidMirrors)
    • cambios personalizados ([Distro] PostInstallScript)
    • paquetes especiales; procesado solo por DistUpgradeController.py:
      • [Distro] RemoveObsoletes, ForcedObsoletes, BaseMetaPkgs, MetaPkgs
      • [meta_package_name] ForcedObsoletes
    • ... y por DistUpgradeCache.py:
      • [Distro] MetaPkgs, RemovalBlacklist, RemoveEssentialOk, BadVersions, BaseMetaPkgs, PurgeObsoletes, Demotions, KeyDependencies
      • [Distro y meta_package_name] KeepInstalledPkgs, KeepInstalledSection, PostUpgrade *
      • [KernelRemoval] *
  • DistUpgradeQuirks.py
    • ejecuta (libera) funciones específicas (mismo archivo) y complementos ( pluginsdirectorio)
    • las funciones deben tener nombres específicos (p from_nattyPreCacheOpen(). ej. ) y complementos de conditionatributos especiales (p. ej. *o PostInitialUpdate)
    • una de esas funciones, StartUpgrade()es otra bolsa de sorpresas en sí misma: entre otras llamadas _applyPatches(), que revisa los archivos en el patchesdirectorio
    • todo esto no hace prácticamente nada en mi instalación (i386, paquetes no anteriores a natty-updates)
  • más de DistUpgradeCache.py
    • se ejecuta get_kernel_list.sh(no es de confianza) y se asegura de que esté instalado un núcleo
    • algo de manejo sobre los controladores de Nvidia

Versiones marcadas:

  • natty → onírico
  • onírico → preciso
  • preciso → confiable (final a partir del 18/04/2014)
  • confiable → utópico (horas antes del lanzamiento el 23/10/2014)
Robert Siemer
fuente
3
Cada vez que utilicé do-release-upgrade terminé con un sistema que no se puede arrancar :)
user205301
Como ejemplos de las cosas que maneja do-release-upgrade: controladores binarios nvidia, cambios multiarch, ndiswrapper, agregar / eliminar arquitecturas y tipos de kernel (por ejemplo, despreciar el kernel del servidor)
NGRhodes
@NGRhodes tu comentario es demasiado vago para mí: ndiswrapper fue un caso especial en el pasado, no en estos días. No se agregan ni eliminan arquitecturas (excepto amd64, que agrega i386 como foráneo, lo que cubre con "cambios multiarch", supongo). - Nada está "en desuso": los paquetes se eliminan o no.
Robert Siemer