Neuladen eines Paket Updates zur Laufzeit

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
piwi83
User
Beiträge: 2
Registriert: Donnerstag 10. August 2023, 15:16

Hallo,

ich habe folgende Challenge. Ich habe in Python einen Installer geschrieben, der Python Pakete und andere Linux Software installiert.
Der Installer wird als Wheels Datei generiert.
Folgende Challenge habe ich:
  • ich generiere ein "Installer Update Package", in dem neben Linux Software auch der Installer von v1.0 auf v1.1 upgedatet werden soll
  • der Installer wird auf dem Linux Zielsystem gestartet: ./installer inst -f update.tar
  • zuerst führt der Installer ein Update des eingenen Wheels Pakets durch: "pip3 install installer_v1.1"
  • um nun die neusten Installer v1.1 Features zu nutzen, müsste der Installer zur Laufzeit im aktuell ausgeführten Installer Task seine eingen v1.1 Quellen neuladen und anschließend mit der Linux Paket Installation fortfahren
Ist sowas in einem Schritt in Python möglich?
Danke für euer Feedback!
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein. Nicht zur Laufzeit des Interpreters selbst. Man kann natuerlich via subprocess einen neuen Interpreter starten, der dann neue Versionen von Paketen enthaelt. Das wird aber ggf sehr kompliziert, bzw. eigentlich ist das dann ein anderes Szenario: es gibt einen Kern-Installer, der bleibt gleich. Und der delegiert an eine installierte Komponente.

Aber als jemand, der diverse Update-Mechanismen ueber die Jahrzehnte gebaut hat: das uebliche Vorgehen besteht darin, einen Zwischenschritt zu erzwingen, wenn es sich denn nicht vermeiden laesst, den (Kern)Installer selbst zu updaten. Damit bringst du also von Version 1.0 des Installers auf 1.1, ohne das dabei neue Features gebracht werden. Der Rest bleibt dann ggf gleich, oder enthaelt nur Dinge, die keinen neue Features brauchen. Und erst das Update auf 1.2 bedarf dann der neuen Features. Ein direktes Update auf 1.0-1.2 ist dann aber eben nicht vorgesehen.
piwi83
User
Beiträge: 2
Registriert: Donnerstag 10. August 2023, 15:16

Wow... Danke für das schnelle Feedback!
OK. Dann generiere ich ein Update für den reinen Installer und ein Weiteres mit neuen Features wie z.b. Linux Software und Co.
Werde dann in meine Update Packages eine minimum Version vom Installer hinzufügen, die installiert sein muss. Wenn das nicht der Fall ist, gibt es eine Message, dass der neue Installer mit Version x.y installiert werden muss.
Antworten