Seite 1 von 1

Das Prinzip von Paketaktualisierungen?

Veröffentlicht: 18. Juli 2018 – 14:19 Uhr
von Tsunyan
Guten Morgen,

Ich nutze seit Kurzem WAPT Community Version 1.5.1.26 und habe eine Frage, die mich beschäftigt. Ich verstehe nicht ganz, wie die Software-Updates funktionieren.

Wenn ich ein Paket aus dem WAPT-Store importiere https://store.wapt.fr/ Über die Schaltfläche „Aus dem Internet importieren“ erhalte ich dieses Paket in meinem privaten Repository. Soweit so gut. Wenn jedoch eine neue Version der Software auf der offiziellen Website verfügbar ist, wird das Paket nicht automatisch aktualisiert.

Werden durch den Import des Pakets aus dem WAPT-Store die Pakete in meinem privaten Repository aktualisiert? Falls ja, sind wir von der Person abhängig, die das Paket im Store verwaltet? Falls nein, müssen wir auf eine neue Version im Store warten, bevor wir es erneut in unser privates Repository importieren können?

Eine weitere Frage zu Paketaktualisierungen

Mir ist aufgefallen, dass die OwnCloud-Version im Store veraltet ist. Deshalb habe ich ein Paket erstellt und eine `update_package()`-Funktion hinzugefügt, die den Quellcode aktualisiert, falls dieser im Paket noch nicht auf dem neuesten Stand ist. Für alle OwnCloud-Nutzer: Hier ist die Funktion, mit der ihr die aktuellste Softwareversion von der offiziellen Website abrufen könnt https://owncloud.org/download/ :

Code: Alle auswählen

from setuphelpers import *
import glob
import re

def update_package():
    htmlSource = wgets("https://owncloud.org/download/").splitlines()
    filename = ''
    realVersion = ''

    for line in htmlSource:

        match = re.search("https://download.owncloud.com/desktop/stable/ownCloud-.*-setup\.exe", line)
        if match:
            realVersion = line[line.find("ownCloud-")+9:line.find("-setup.exe")]
            print("Last version : ", realVersion)
            filename = 'ownCloud-%s-setup.exe' % realVersion
            print("File name : ", filename)

    exe = glob.glob('*.exe')
    for fn in exe:
        if fn != filename :
            print 'remove' + fn
            remove_file(fn)

    if not isfile(filename):
        print('Download' + filename)
        wget('https://download.owncloud.com/desktop/stable/ownCloud-%s-setup.exe' % (realVersion), filename)

    print ('Write ' + realVersion + '-0 in WAPT\\control')
    from waptpackage import PackageEntry
    pe = PackageEntry()
    pe.load_control_from_wapt(os.getcwd())
    pe.version = realVersion +'-0'
    pe.save_control_to_wapt(os.getcwd())

    print('The update is complete, you can now test and then launch a build upload.')
    
if __name__ == '__main__':
    update_package()
Das funktioniert in PyScripter einwandfrei. Ein Rechtsklick auf `update-package-source` und die Auswahl von „Ausführen“ aktualisiert die Software im Ordner und die Version in der `control`-Datei. Anschließend muss nur noch `build-upload` ausgeführt werden, und das war's. Das Problem ist, dass dies nicht direkt über die Konsole möglich ist. Vielleicht habe ich die Lösung noch nicht gefunden; korrigieren Sie mich bitte, falls ich falsch liege.

Als etwas „unsaubere“ Alternative könnte ich die Paketaktualisierung an den Anfang der install()-Funktion einfügen, nachdem ich geprüft habe, ob die Version im Internet höher ist als die meines Pakets; ich habe es noch nicht ausprobiert, aber es scheint nicht sehr geeignet zu sein.

Vielen Dank für Ihr Feedback

Betreff: Das Prinzip von Paketaktualisierungen?

Veröffentlicht: 18. Juli 2018 - 21:58 Uhr
von kguerineau
Guten Abend,
Wenn ich ein Paket aus dem WAPT-Store (https://store.wapt.fr/) über den Button „Aus dem Internet importieren“ importiere, erhalte ich es in meinem privaten Repository. Soweit so gut. Wenn jedoch eine neue Version der Software auf der offiziellen Website verfügbar ist, wird das Paket nicht automatisch aktualisiert.

Werden die Pakete in meinem privaten Repository aktualisiert, wenn ich das Paket aus dem WAPT-Store importiere? Falls ja, sind wir dann von der Person abhängig, die das Paket im Store verwaltet? Falls nein, müssen wir auf eine neue Version im Store warten, bevor wir sie erneut in unser privates Repository importieren können?
Wenn wir Software aktualisieren, müssen Sie diese tatsächlich auf Ihren WAPT-Server importieren. Sie können ein Skript erstellen, das die Aktualität Ihrer Pakete durch Vergleich der beiden Repositories überprüft. Genau so gehen wir für unsere Managed-Services-Kunden vor.


Noch eine Frage zu Paketaktualisierungen:

Mir ist aufgefallen, dass die OwnCloud-Version im Store nicht aktuell ist. Deshalb habe ich ein Paket erstellt und eine `update_package()`-Funktion hinzugefügt, die den Quellcode aktualisiert, falls dieser im Paket noch nicht aktualisiert ist. Für OwnCloud-Nutzer: Hier ist die Funktion, die die neueste Softwareversion von der offiziellen Website abruft: https://owncloud.org/download/ :
[...]

Das funktioniert einwandfrei in PyScripter. Ein Rechtsklick auf `update-package-source` und die Auswahl von „Ausführen“ aktualisiert die Software im Ordner sowie die Version in der `control`-Datei. Anschließend muss nur noch `build-upload` ausgeführt werden. Das Problem ist, dass dies nicht direkt über die Konsole möglich ist. Vielleicht habe ich die Lösung noch nicht gefunden; korrigieren Sie mich bitte, falls ich falsch liege.
Tatsächlich werden die Pakete in der Konsole nicht aktualisiert.

Als etwas „unsaubere“ Alternative könnte ich die Paketaktualisierung an den Anfang der install()-Funktion einfügen, nachdem ich geprüft habe, ob die Version im Internet höher ist als die meines Pakets; ich habe es noch nicht ausprobiert, aber es scheint nicht sehr geeignet zu sein.
Dies ist vor allem eine Alternative, die keinesfalls empfehlenswert ist und der Funktionsweise von WAPT widerspricht.
Wenn Sie das Paket mithilfe der Funktion „update-package“ im Installationsprogramm bereitstellen, bedeutet dies, dass jeder Rechner die ausführbare Datei aus dem Internet herunterlädt. Dies birgt zwei Probleme:
  • 1. Die Bandbreite, die stark ausgelastet sein wird
  • 2. Fehlende Kontrolle über die auf dem Computer installierten Programme. Stellen Sie sich ein Problem mit der Integrität der heruntergeladenen Datei vor (beschädigt oder mit einem Virus infiziert).
Außerdem kann es in diesem Fall zwischen dem Import des Pakets in Ihr privates Repository und dem Herunterladen der ausführbaren Datei zu Versionsunterschieden kommen... Die Paketinventarisierung ist dann ungenau!

Die Funktion „update-package“ spart Zeit beim Aktualisieren des Pakets.

Guten Abend

Betreff: Das Prinzip von Paketaktualisierungen?

Veröffentlicht: 19. Juli 2018 – 16:48 Uhr
von Tsunyan
Wenn wir Software aktualisieren, müssen Sie diese tatsächlich auf Ihren WAPT-Server importieren. Sie können ein Skript erstellen, das die Aktualität Ihrer Pakete durch Vergleich der beiden Repositories überprüft. Genau so gehen wir für unsere Managed-Services-Kunden vor.
Ja, ich verstehe, um zu erfahren, ob wir uns bezüglich der öffentlichen Einlage auf den neuesten Stand bringen müssen.

Tatsächlich werden die Pakete in der Konsole nicht aktualisiert.
Ist dies eine Funktion, die in Zukunft implementiert wird?

Dies ist eine Alternative, von der dringend abgeraten wird, da sie der Funktionsweise von WAPT widerspricht.
Wenn Sie das Paket mit der Funktion „update-package“ im Installationsprogramm bereitstellen, lädt jeder Rechner die ausführbare Datei aus dem Internet herunter. Dies birgt zwei Probleme:
1. Die Bandbreite wird stark beansprucht.
2. Sie haben keine Kontrolle darüber, was auf dem Rechner installiert wird. Stellen Sie sich ein Problem mit der Integrität der heruntergeladenen Datei vor (Beschädigung oder Virus).
Darüber hinaus kann es in diesem Fall zu Versionsunterschieden zwischen dem Zeitpunkt des Imports des Pakets in Ihr privates Repository und dem Zeitpunkt des Downloads der ausführbaren Datei kommen. Ihr Paketbestand ist dann ungenau!

Die Funktion „update-package“ spart Zeit beim Aktualisieren des Pakets.
Das dachte ich mir schon, es war keine gute Idee. Ich nehme an, ich kann die Aktualisierung aller Pakete dann mit einem Batch-Skript oder PowerShell automatisieren.

Vielen Dank für diese Erklärungen.

Betreff: Das Prinzip von Paketaktualisierungen?

Veröffentlicht: 19. Juli 2018 - 21:59 Uhr
von vcardon
tsunyan schrieb: 19. Juli 2018 - 16:48 UhrIst dies eine Funktion, die in Zukunft implementiert wird?
Eine solche Funktion ist höchst unerwünscht, da der Parkverwalter dafür verantwortlich ist, was er aus dem Internet abruft und was er in seinem Park einsetzt.

Er muss sich vergewissern, dass das, was er einsetzt, sicher ist.

Ich überlasse es Ihnen, Ihre eigene Parallele zu diesem Artikel zu ziehen, der eine kürzlich stattgefundene Tragödie beschreibt:

http://www.lefigaro.fr/international/20 ... parfum.php

Aufrichtig.

Vincent

Betreff: Das Prinzip von Paketaktualisierungen?

Veröffentlicht: 19. Juli 2018 - 22:35 Uhr
von Sfonteneau
tsunyan schrieb: 19. Juli 2018 - 16:48 Uhr Das dachte ich mir schon, es war keine gute Idee. Ich nehme an, ich kann das Update-Paket für alle Pakete dann mit einem Batch-Skript oder PowerShell automatisieren.
Warum nicht jede Nacht ein Update-Paket ausführen? Wie Vincent jedoch betont, ist dies aus offensichtlichen Sicherheitsgründen nicht empfehlenswert. Die Software muss von einem Menschen überprüft werden, bevor sie im gesamten Netzwerk installiert wird.

Ein Verlag kann durchaus kompromittiert werden, zum Beispiel:

CCleaner: https://www.generation-nt.com/ccleaner-...51839.html

Oder beispielsweise kürzlich im Fall von PDF Creator: https://landingpage.pdfforge.org/domain/en

In einer solchen Situation pflanzt man automatisch einen ganzen Park an... :rollen: Schaden ...

Eine gute Lösung wäre im schlimmsten Fall, jede Nacht ein Update-Paket auszuführen und das neue Paket dann in den Reifezustand zu versetzen: VALIDATION-WAIT

Jetzt müssen Sie nur noch die Software testen

Betreff: Das Prinzip von Paketaktualisierungen?

Veröffentlicht: 20. Juli 2018 – 13:10 Uhr
von Tsunyan
Vielen Dank für diese Empfehlungen und die schnellen Antworten @vcardon @sfonteneau.