Que fait vraiment «do-release-upgrade»?

30

Nous savons que do-release-upgrade«fait une mise à niveau de version». Mais à un niveau un peu inférieur, que fait-il vraiment?

Je prévois de faire une mise à jour plus manuelle, par exemple la manière Debian: aptitude updateet aptitude full-upgradeaprès avoir configuré les sources. En fait, je prévois de le faire entièrement interactif avec aptitude. Mais cela me laisse curieux de savoir quoi d' autre do-relase-upgrade , sauf arroser ma source.list.

Robert Siemer
la source

Réponses:

32

do-release-upgradefait partie du package «update-manager-core». Le script semble déterminer vers quelle version vous allez mettre à niveau, essayer de savoir s'il est pris en charge ou non et vous plaindre de cette dernière. - S'il est convaincu de fonctionner, il télécharge le UpgradeTool spécifique à la version et l'exécute.

Une partie du package «update-manager-core» est le fichier /etc/update-manager/meta-release, où vous pouvez trouver l'URL http://changelogs.ubuntu.com/meta-release et là vous trouvez l'URL pour le UpgradeTool à télécharger.

L'archive téléchargée UpgradeTool est empaquetée à partir du paquet source "ubuntu-release-upgrader" (avant c'était "update-manager"). La version correspond aux dernières mises à jour de la version cible.

La source a un vieux README des temps de sortie verruqueux et hoary. Il explique ce qui doit être fait lors d'une mise à niveau de version. Il mentionne également un lien vers une proposition UpgradeTool plus détaillée .

Je liste ici les actions mentionnées ici et vérifie si elles sont réellement mises en œuvre:

  • lié au référentiel
    • passer à de nouvelles entrées sources.list
    • supprimer les référentiels tiers inconnus
    • éventuellement échanger le miroir (non implémenté)
  • lié au package
    • vérifiez qu'il n'y a pas de paquets cassés avant la mise à niveau
    • mettre à jour la version actuelle avant la mise à niveau ( apt-get updateuniquement)
    • supprimer et installer des packages spécifiques
    • vérifier si {ubuntu, kubuntu, edubuntu} -desktop est installé
    • se débarrasser des vieux noyaux
    • avoir une liste noire et une liste blanche de suppression
    • supprimer ou remplacer les packages obsolètes qui existaient dans les versions antérieures
  • lié à la configuration (possible dans les bizarreries: voir ci-dessous)
    • ajouter l'utilisateur par défaut à de nouveaux groupes (pas fait pour les versions que j'ai vérifiées)
    • vérifier certains fichiers de configuration

Le UpgradeTool est configuré pour chaque version à l'aide des fichiers suivants (ouvrez-les pour voir!):

  • DistUpgrade.cfg
    • Configuration liée à UpgradeTool
    • configuration liée à la version
    • référentiels (par exemple [Sources] ValidMirrors)
    • modifications personnalisées ([Distro] PostInstallScript)
    • forfaits spéciaux; traité uniquement par DistUpgradeController.py:
      • [Distro] RemoveObsoletes, ForcedObsoletes, BaseMetaPkgs, MetaPkgs
      • [meta_package_name] ForcedObsoletes
    • ... et par DistUpgradeCache.py:
      • [Distro] MetaPkgs, RemovalBlacklist, RemoveEssentialOk, BadVersions, BaseMetaPkgs, PurgeObsoletes, Demotions, KeyDependencies
      • [Distro et meta_package_name] KeepInstalledPkgs, KeepInstalledSection, PostUpgrade *
      • [KernelRemoval] *
  • DistUpgradeQuirks.py
    • exécute (libère) des fonctions spécifiques (même fichier) et des plugins ( pluginsrépertoire)
    • les fonctions doivent avoir des noms spécifiques (par exemple from_nattyPreCacheOpen()) et des conditionattributs spéciaux de plugins (par exemple *ou PostInitialUpdate)
    • une de ces fonctions, StartUpgrade()est un autre sac à main lui-même: entre autres, il appelle _applyPatches(), qui parcourt les fichiers du patchesrépertoire
    • tout cela ne fait pratiquement rien sur mon installation (i386, packages pas plus anciens que natty-updates)
  • plus de DistUpgradeCache.py
    • s'exécute get_kernel_list.sh(pas en fidèle) et s'assure qu'un noyau est installé
    • une certaine manipulation sur les pilotes Nvidia

Versions vérifiées:

  • natty → onirique
  • onirique → précis
  • précis → fidèle (final au 18/04/2014)
  • fidèle → utopique (heures avant la sortie le 2014-10-23)
Robert Siemer
la source
3
Chaque fois que j'utilise do-release-upgrade, je me retrouve avec un système non amorçable :)
user205301
Comme exemples de choses que la mise à niveau de do-release gère: pilotes binaires nvidia, changements multiarchives, ndiswrapper, ajout / suppression d'architectures et de types de noyau (par exemple, dépréciation du noyau du serveur)
NGRhodes
@NGRhodes votre commentaire est trop vague pour moi: ndiswrapper était un cas spécial de retour dans fougueux, pas ces jours-ci. Aucune architecture n'est ajoutée ou supprimée (sauf pour amd64, qui ajoute i386 en tant qu'étranger, que vous recouvrez de «changements multiarchives» je suppose). - Rien n'est «obsolète»: les packages sont supprimés ou non.
Robert Siemer