Vorinstallationsskript des Paketbetreuers „install“ vs. „upgrade“

Vorinstallationsskript des Paketbetreuers „install“ vs. „upgrade“

Laut dem Debian-PaketBetreuerskriptdokumentation, das Vorinstallationsskript kann entweder mit dem installoder dem upgradeersten Argument aufgerufen werden:

Das preinstSkript kann auf folgende Arten aufgerufen werden:

  • new-preinstInstallieren
  • new-preinstInstallierenalte Version, neue Version
  • new-preinstAktualisierungalte Version, neue Version

Was ist der Unterschied zwischen install old-version new-versionund upgrade old-version new-version? Die erste Form (nur install) scheint klar zu sein, aber ich verstehe den Unterschied zwischen installund nicht upgrade, wo auch die alte und die neue Versionsnummer angegeben sind.

Antwort1

Dies wird erklärt inder Abschnitt „Details“:

  • wenn das Paket bereits vollständig installiert ist, wird es mit und der alten und neuen Version preinstaufgerufen ;upgrade
  • wenn das Paket bereits installiert wurde und noch über die Konfigurationsdateien verfügt (es befindet sich im Status „Config-Files“,dhes wird wie rcin dpkg -lder Ausgabe von angezeigt), wird mit und den alten und neuen Versionen preinstaufgerufen ;install
  • Wenn das Paket neu installiert wird oder zuvor gelöscht wurde, wird es ohne Versionsinformationen preinstaufgerufen .install

Da preinstvor der Entpackphase ausgeführt wird, upgradezeigt dies an, dass eine frühere Version des Paketinhalts verfügbar ist, während dies installbedeutet, dass keine Version des Paketinhalts vorhanden ist (außer Konfigurationsdateien). Wenn Versionsinformationen bereitgestellt werden, weist dies darauf hin, dass möglicherweise Konfigurationsdateien verarbeitet werden müssen.

Es gibt nicht viele Szenarien, in denen der Unterschied zwischen upgradeund installsignifikant ist, aber ein Szenario, das mir in den Sinn kommt, sind Upgrades, bei denen Daten exportiert werden müssen. Im upgradeModus beispielsweiseslapdexportiert preinstseine Datenbanken; das ist im installModus nicht möglich, da die entsprechenden Werkzeuge nicht vorhanden sind.

Antwort2

Halten:

  1. Sie installieren Paket A, Version x.
  2. Sie entfernen Paket A, aber ohne es zu bereinigen, sodass Conffiles, Benutzer, Gruppen usw. erhalten bleiben.
  3. Sie installieren Paket A, Version y.

Nun müssen die Maintainer-Skripte diese Conffiles, Benutzer, Gruppen usw. handhaben, obwohl Sie strenggenommen kein Upgrade, sondern nur eine Installation durchführen. Sie können dies im zweiten Flussdiagramm hier sehen:„Installieren eines Pakets, das zuvor entfernt, aber nicht bereinigt wurde“

verwandte Informationen