Gavin Schenk schrieb:
Hallo,
ich hab gerade folgende Aufgabenstellung:
Es liegen zwei verschiedene tgz-Dateien von relativ großem Umfang vor
(30MB). Beide Dateien enthalten das Root-Filesystem eines embedded
Targets, nur in verschiedenen Versionsständen. Enthalten sind also
verschiedenste Dateitypen (links, ggf. hardlinks, files(text und
binary), directories, nods).
Ich würde nun gern ein patch zur Verfügung stellen, dass es ermöglicht
ein entpacktes Rootfilesystem auf einem Target auf den Stand des neuen
TGZ zu bringen. Dazu müssten neue Dateien kopiert, veränderte Dateien
überschrieben und überflüssige Dateien gelöscht werden. Da der
Flashspeicher auf dem Target begrenzt ist, brauche ich ein neues
tgz-File, dass nur die notwendigen Dateien für den patch enthält plus
Skripte etc.
Das Patch wollte ich mit mkself erzeugen. Mit meinem bisherigen
Wissensstand würde ich versuchen das Problem mit diff und einer
eigenen Software zu Lösen. Dazu würde ich die beiden tgz temporär
entpacken, mit diff eine Liste der Unterschiede erzeugen und dann eine
Software schreiben, welche für jeden gefunden Unterschied eine Lösung
erzeugt. Als Resultat käme ein Verzeichnis heraus das alle Neueren
Dateien enthält plus eine Datei die alle Regeln für das Update
enthält. Zusammen mit einem Skript packe ich das Ganze mit mkself zu
einem selbstausführenden Patch.
Da ich wahrscheinlich viel zu kompliziert denke und es dafür
vielleicht eine tolle Lösung bereits gibt wollte ich gern nachfragen.
Kennt von Euch jemand vielleicht eine vorhandene Lösung und oder hat
eine zündende Idee zu dem Thema, die mir die Arbeit erleichtert?
Gavin,
statt eine Software zu schreiben, man patch: "patch takes a patch file
patchfile containing a difference listing produced by the diff program
and applies those differences to one or more original files, producing
patched versions."
Gruß
Silvério
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org