
Laut dem Debian-PaketBetreuerskriptdokumentation, das Vorinstallationsskript kann entweder mit dem install
oder dem upgrade
ersten Argument aufgerufen werden:
Das
preinst
Skript kann auf folgende Arten aufgerufen werden:
new-preinst
Installierennew-preinst
Installierenalte Version, neue Versionnew-preinst
Aktualisierungalte Version, neue Version
Was ist der Unterschied zwischen install old-version new-version
und upgrade old-version new-version
? Die erste Form (nur install
) scheint klar zu sein, aber ich verstehe den Unterschied zwischen install
und 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
preinst
aufgerufen ;upgrade
- wenn das Paket bereits installiert wurde und noch über die Konfigurationsdateien verfügt (es befindet sich im Status „Config-Files“,dhes wird wie
rc
indpkg -l
der Ausgabe von angezeigt), wird mit und den alten und neuen Versionenpreinst
aufgerufen ;install
- Wenn das Paket neu installiert wird oder zuvor gelöscht wurde, wird es ohne Versionsinformationen
preinst
aufgerufen .install
Da preinst
vor der Entpackphase ausgeführt wird, upgrade
zeigt dies an, dass eine frühere Version des Paketinhalts verfügbar ist, während dies install
bedeutet, 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 upgrade
und install
signifikant ist, aber ein Szenario, das mir in den Sinn kommt, sind Upgrades, bei denen Daten exportiert werden müssen. Im upgrade
Modus beispielsweiseslapd
exportiert preinst
seine Datenbanken; das ist im install
Modus nicht möglich, da die entsprechenden Werkzeuge nicht vorhanden sind.
Antwort2
Halten:
- Sie installieren Paket A, Version x.
- Sie entfernen Paket A, aber ohne es zu bereinigen, sodass Conffiles, Benutzer, Gruppen usw. erhalten bleiben.
- 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“