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

Antwort per Email an