Was macht `do-release-upgrade` wirklich?

30

Wir wissen, dass do-release-upgradeein Release-Upgrade durchgeführt wird. Aber was macht es auf einer etwas niedrigeren Ebene wirklich?

Ich plane ein manuelles Upgrade, zum Beispiel auf Debian-Art aptitude updateund aptitude full-upgradenach dem Einrichten der Quellen. Eigentlich habe ich vor, es komplett interaktiv zu machen aptitude. Aber das lässt mich neugierig werden, was ich sonst do-relase-upgrade noch tun kann, außer meine sources.list zu verschleiern.

Robert Siemer
quelle

Antworten:

32

do-release-upgradeist Teil des Pakets "Update-Manager-Core". Das Skript scheint zu bestimmen, auf welches Release Sie ein Upgrade durchführen, zu prüfen, ob es unterstützt wird oder nicht, und sich über letzteres zu beschweren. - Wenn es funktioniert, lädt es das release-spezifische UpgradeTool herunter und führt es aus.

Bestandteil des "Update-Manager-Core" -Pakets ist die Datei /etc/update-manager/meta-release, in der Sie die URL http://changelogs.ubuntu.com/meta-release und die URL für den Download des UpgradeTools finden.

Der heruntergeladene UpgradeTool-Tarball wird aus dem Quellpaket „ubuntu-release-upgrader“ (vor „update-manager“) gepackt. Die Version entspricht den neuesten Updates für die Zielversion.

Die Quelle enthält eine alte README-Datei aus der Warty- und Hoary-Release-Zeit. Es wird erläutert, was während eines Release-Upgrades zu tun ist. Es wird auch ein Link zu einem detaillierteren UpgradeTool-Vorschlag erwähnt .

Ich liste hier die dort genannten Aktionen auf und überprüfe, ob sie tatsächlich ausgeführt werden:

  • Repository bezogen
    • Zu neuen Einträgen in der sources.list wechseln
    • Entfernen Sie unbekannte Repositorys von Drittanbietern
    • evtl. Tauschspiegel (nicht implementiert)
  • paketbezogen
    • Stellen Sie vor dem Upgrade sicher, dass keine Pakete beschädigt sind
    • Aktuelle Version vor dem Upgrade aktualisieren ( apt-get updatenur)
    • Entfernen und Installieren bestimmter Pakete
    • Überprüfen Sie, ob der {ubuntu, kubuntu, edubuntu} -Desktop installiert ist
    • alte kerne loswerden
    • habe eine entfernungs-blacklist und -whitelist
    • Entfernen oder Ersetzen veralteter Pakete, die in früheren Releases vorhanden waren
  • konfigurationsbezogen (möglich bei Macken: siehe unten)
    • Hinzufügen des Standardbenutzers zu neuen Gruppen (nicht für die von mir überprüften Versionen durchgeführt)
    • Überprüfen Sie einige Konfigurationsdateien

Das UpgradeTool wird für jedes Release mit den folgenden Dateien konfiguriert (öffnen Sie diese, um zu sehen!):

  • DistUpgrade.cfg
    • UpgradeTool-bezogene Konfiguration
    • Release-bezogene Konfiguration
    • Repositories (zB [Sources] ValidMirrors)
    • benutzerdefinierte Änderungen ([Distro] PostInstallScript)
    • spezielle Pakete; Nur von DistUpgradeController.py verarbeitet:
      • [Distro] RemoveObsoletes, ForcedObsoletes, BaseMetaPkgs, MetaPkgs
      • [meta_package_name] ForcedObsoletes
    • ... und von DistUpgradeCache.py:
      • [Distro] MetaPkgs, RemovalBlacklist, RemoveEssentialOk, BadVersions, BaseMetaPkgs, PurgeObsoletes, Demotions, KeyDependencies
      • [Name des Distributions- und Metapakets] KeepInstalledPkgs, KeepInstalledSection, PostUpgrade *
      • [KernelRemoval] *
  • DistUpgradeQuirks.py
    • Läuft (Release) spezifische Funktionen (gleiche Datei) und Plugins ( pluginsVerzeichnis)
    • Funktionen müssen bestimmte Namen (zB from_nattyPreCacheOpen()) und Plugins spezielle conditionAttribute (zB *oder PostInitialUpdate) haben
    • eine dieser Funktionen, StartUpgrade()ist eine weitere Greifer-Tasche selbst: unter anderem es nennt _applyPatches(), die in der über die Dateien geht patchesVerzeichnis
    • alle diese machen so ziemlich nichts auf meiner installation (i386, pakete nicht älter als natty-updates)
  • mehr von DistUpgradeCache.py
    • läuft get_kernel_list.sh(nicht vertrauenswürdig) und stellt sicher, dass ein Kernel installiert ist
    • etwas Umgang mit Nvidia-Treibern

Überprüfte Versionen:

  • natty → oneiric
  • oneiric → präzise
  • präzise → vertrauenswürdig (endgültig vom 18.04.2014)
  • vertrauenswürdig → utopisch (Stunden vor Veröffentlichung am 23.10.2014)
Robert Siemer
quelle
3
Jedes Mal, wenn ich ein Do-Release-Upgrade verwendet habe, bin ich auf ein nicht bootfähiges System
gestoßen
Als Beispiele für Dinge behandelt das Do-Release-Upgrade: nvidia-Binärtreiber, Multiarch-Änderungen, ndiswrapper, Hinzufügen / Entfernen von Architekturen und Kerneltypen (z. B.
Veralten
@NGRhodes dein Kommentar ist zu vage für mich: ndiswrapper war ein Sonderfall in feisty, nicht in diesen Tagen. Es werden keine Architekturen hinzugefügt oder entfernt (mit Ausnahme von amd64, das i386 als fremd hinzufügt und das Sie vermutlich mit "Multiarch-Änderungen" abdecken). - Nichts ist "veraltet": Pakete werden entfernt oder nicht.
Robert Siemer