PHP basierte Patches

Hallo zusammen

Ich habe bereits ein bisschen gegoogelt, jedoch hab ich nichts passendes gefunden.
Was ich suche ist ein „System“ mit welchem ich meine PHP-Applikationen Patchen (also Updaten) kann.
Ich habe mir das so vorgestellt, dass ich auf meinem lokalen Apachen 2 Verzeichnisse vergleichen lasse, um den Patch erstellen zu lassen und diesen danach (automatisch :smiley: ) zum Patchserver (das nenn ich jetzt mal einfach so…) übertragen zu lassen.
Die Software, die ich (bzw. die Benutzer) updaten wollen, sollen also mit einem Softwareschnipsel versehen werden, der die Patchs (automatisch oder auf anfrage) herunter lädt und installiert (es muss also auch ein „Patch-Interpreter“ dabei sein).

Weil ich nix gefunden habe, habe ich mir auch schon überlegt, dieses „System“ selber zu schreiben. Es ist mir aber etwas zu aufwendig erschinen, also ich dachte, dass ich eh der einzige sein würde, der es braucht :ps:

Vielleicht kennt ihr ja so ein System :slight_smile: ?
(Bitte sagt, dass es sowas schon gibt ^^ )

Liebe Grüsse
cedl

naja wordpress hat nen updater mit eingebaut -> guck dir den doch mal an =)

Naja, das ganze lässt sich eigentlich relativ leicht bewerkstelligen… ich hab sowas minimalistisch in meinem Aurora integriert, und das sind nur ein paar Zeilen Code. Grundvoraussetzung - aktivierte Socketverbindungen beim “Kunden” - sonst regt sich garnichts.

Schritt 0: Optional kann man voran noch zeitlich begrenzen, dass nur alle X Stunden oder Tage nachfolgendes abläuft.

Schritt 1: Versionsabgleich - dabei wird einfach eine Variable des Kunden mit der auf dem Verteiler vergleicht - sind diese gleich ist die Version aktuell und eine entsprechende Meldung wird ausgegeben. Falls nicht…

Schritt 2: … holt sich das Kunden-System eine Dateiliste vom Verteiler und lädt sich die modifizierten Dateien herunter…

Man kann jetzt das ganze natürlich noch erweitern - etwa wenn eine Config-Datei geupdatet werden soll weil bspw. neue Funktionen dort vorkommen, man dem Kunden aber nicht zumuten will alle Daten neu einzutippen. Dann muss das ganze natürlich in einen temporären Ordner, die alte Original-Datei wird ausgelesen und die Werte der neuen Datei entsprechend angepasst. Erst dann werden die neuen Dateien in das eigentliche System übertragen.

Das übliche Unix-Patch-System schaut so aus: en.wikipedia.org/wiki/Diff

Die Patches kannst du mit den Standard-Unix-Kommandos erstellen und am Client relativ leicht anwenden.

ja, das Diff hab ich schon gelesen, aber ich will ja meine anwendungen nicht wegen der updates platformabhängig machen :wink:

danke, kerbi, du hast mir viel arbeit erspart :slight_smile:

ich werd also mal was proggen :ps:

Du kannst es ja hier dann zur Verfügung stellen, falls andere Mitglieder Interesse daran pflegen

Diff müsstest du in PHP ohnehin selbst umsetzen, das Anlegen der Patches würden die Unix-Tools aber für dich übernehmen :wink:

Ich werd sowas wie ne abwandlung von kerbis version schreiben…
allerdings mit channels (so nenn ich die separierung zwischen modulen und dem basispaket, wenn ihr wisst wie ich mein ^^)

Auf dem Server liegt die ganze anwendung (versteckt, dass sie nicht benutzt werden kann).
Der Updater fordert eine liste der Dateien an (welche jeweils einzeln für jeden channel hinterlegt ist, nach dem sie der Server nach jedem update neu gebildet hat) [die liste nenn ich dann i-wie channel.tree.srl (srl => serialized)]
Bei abweichungen fordert der Updater ein zip mit den abweichenden Dateien an
um konfigurationen auszuschliessen gibts sowas wie ne channel.exclude.lst (ne liste mit den auszuschliessenden Dateien, die auch mit dem *.tree.srl angefordert wird)

Das ganze erspart mir den Patch-Generator, jedoch brauch ich trotzdem nen dritten teil, zur administration…(wenn ichs aufm server machen würde => unverschlüsselte kommunikation zur folge, und somit einfacheren passwort-klau ^^)

wie soll ich also diesen admin-teil machen?

  • batch-php (bzw shell-php)
  • gtk-php (lieber nicht xD)
  • aufm server
  • lokale Webapplikation (oO)

wieso brauchts nen adminteil?
=> channels verwalten
=> evtl. dateien eines channel ftp-uploaden
==> anschliessend gleich den ch.tree.srl neu bilden

Reinstellen werd ich es sicher irgendwo :slight_smile:

Liebe grüsse :wink2: