Ich wuerde Symlinks und Knodes manuell anlegen und den
Rest mit Diff/Patch machen
Alternativ baue Pakete der Zieldistribution, rpm, deb etc, wobei
dir die Handarbeit dort auch nicht abgenommen wird.
#!/bin/bash
### Patcherstellung
cd /tmp
mkdir -p 1.0 1.1 1.2
tar -C 1.0 -xzf 1.0.tgz
tar -C 1.1 -xzf 1.1.tgz
tar -C 1.2 -xzf 1.2.tgz
diff -Naur 1.0 1.1 > patch-1.0-1.1diff
diff -Naur 1.1 1.2 > patch-1.1-1.2.diff
# Deployment
systemversion=$(ermittelesystemversion)
if [ "$systemversion" == "1.0" ]; then
cd /
patch -p0 < patch-1.0-1.1diff
patch -p0 < patch-1.1-1.2.diff
elif [ "$systemversion" == "1.1" ]; then
cd /
patch -p0 < patch-1.1-1.2.diff
fi
HTH
Thomas
Gavin Schenk wrote:
...
Prinzipieller Lösungsansatz am Beispiel:
Im Beispiel gibt es ein System in drei Versionen 1.0, 1.1, 1.2. Entsprechend
gibt es drei tgz-Files 1.0.tgz, 1.1.tgz und 1.2.tgz.
1.) Erstelle diffs für die Übergänge 1.0->1.1 und 1.1->1.2. Packe diese
Änderungen in ein kumulatives Patch zusammen.
2.) Beim Aufspielen des patches wird auf dem laufenden System die installierte
Version ermittelt. Wird z.B. 1.1 vorgefunden, dann werden nur die Änderungen des
Überganges 1.1->1.2 aufgespielt. Dabei gibt es noch einiges zu beachten
(benutzerdefinierte Einstellungen nicht aus versehen platt machen z.B.), aber das
wäre die prinzipielle Vorgehensweise.
Ich habe schon überlegt, ob das mit diff und patch möglich wäre, aber das funktioniert nicht für binäre Dateien, symbolische Links und knodes.
Ausserdem müssten auch Zugriffsrechte beibehalten und ggf. angepasst werden.
Ich würde das mit Bash-Skripten + einiger Hilfstools angehen.....
Gibts hierfür ( oder Teile davon) freie/kommerzielle Lösungen?
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org