Wenn Sie Solaris Live Upgrade verwenden und eine neue Boot-Umgebung erstellen, befolgen Sie die folgenden Richtlinien, um Probleme zu vermeiden.
Package-Prozedurskripten müssen vom aktuellen Betriebssystem unabhängig sein. Prozedurskripten definieren Aktionen, die an bestimmten Punkten während der Installation bzw. der Deinstallation von Packages auftreten. Mit diesen vordefinierten Namen können vier Prozedurskripten erstellt werden: preinstall, postinstall, preremove und postremove. Package-Prozedurskripten müssen vom derzeit aktiven Betriebssystem unabhängig sein, da mit Solaris Live Upgrade zu einer inaktiven Boot-Umgebung gewechselt werden kann.
Diese Skripten dürfen keine Prozesse starten oder stoppen und dürfen nicht von der Ausgabe von Befehlen wie ps oder truss abhängig sein, die vom Betriebssystem abhängen und Informationen über das zurzeit laufende System zurückgeben.
In Prozedurskripten können andere Standard-UNIX-Befehle wie expr, cp und ls sowie weitere Befehle verwendet werden, die das Schreiben von Skripten erleichtern. Allerdings darf die inaktive Boot-Umgebung ausschließlich im Rahmen der unter Anforderungen bezüglich der inaktiven Boot-Umgebung für das benutzerdefinierte JumpStart-Programm und Solaris Live Upgrade aufgeführten Regeln geändert werden.
Alle Skripten müssen in der Bourne-Shell (/bin/sh ) geschrieben werden. Die Bourne-Shell wird beim Ausführen von Prozedurskripten vom Befehl pkgadd als Interpreter verwendet.
Prozedurskripten für Packages dürfen Befehle, die ab dem Release 2.6 eingeführt wurden, nicht aufrufen. So dürfen Package-Prozedurskripten zum Beispiel nicht den Befehl pgrep aufrufen. Seit dem Release 2.6 wurden viele Befehle um weitere Funktionen erweitert. Package-Prozedurskripten dürfen keine Befehlsoptionen verwenden, die im Release 2.6 nicht vorhanden sind. Beispielsweise wurde die Option -f des Befehls umount im Solaris 7-Release eingeführt. Wie Sie feststellen können, ob ein bestimmter Befehl oder eine Option im Release 2.6 unterstützt wird, entnehmen Sie bitte dem Dokument Solaris 2.6 Reference Manual AnswerBook unter http://docs.sun.com.
Alle Packages müssen mit pkgchk validiert werden. Nachdem Sie ein Package erstellt haben, müssen Sie es vor der Installation mit dem folgenden Befehl überprüfen:
# pkgchk -d Verz_name Pkg-Name |
Verz_name |
Gibt den Namen des Verzeichnisses an, in dem sich das Package befindet |
Pkg-Name |
Gibt den Namen des Packages an |
Wenn ein Package zum Beispiel in /export/SUNWvxvm gespeichert ist, führen Sie den folgenden Befehl aus:
# pkgchk -d /export SUNWvxvm |
Es sollten keine Fehler angezeigt werden.
Nachdem Sie ein Package erstellt haben, müssen Sie es testen, indem Sie es mit der Option -R Verz_name des Befehls pkgadd in einer inaktiven Boot-Umgebung installieren. Nach der Installation des Packages ist es wie in diesem Beispiel mit dem Befehl pkgchk auf Fehler zu überprüfen.
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
Es sollten keine Fehler angezeigt werden.
Außerdem dürfen Packages keine Befehle ausführen, die vom Package selbst geliefert werden. Dadurch wird die Kompatibilität gewährleistet und sichergestellt, dass keine Befehle ausgeführt werden, für die gemeinsam genutzte Bibliotheken benötigt werden, die noch nicht installiert sind.
Ob die Anforderungen bezüglich des Erstellens, Modifizierens und Löschens von Dateien erfüllt sind, können Sie mit einer Vielzahl von Befehlen prüfen. Mit dem Befehl dircmp und fssnap können Sie zum Beispiel verifizieren, ob sich Packages wie gewünscht verhalten. Mit dem Befehl ps können Sie außerdem die Konformität von Dämonen testen, indem Sie sicherstellen, dass das Package keine Dämonen stoppt oder startet. Mit den Befehlen truss, pkgadd -v und pkgrm können Sie testen, ob die Konformität der Package-Installation zur Laufzeit gegeben ist, doch dies funktioniert möglicherweise nicht in allen Situationen. Im folgenden Beispiel entfernt der Befehl truss alle schreibgeschützten Nicht-$TEMPDIR-Zugriffe und zeigt nur die nicht schreibgeschützten Zugriffe auf Pfade an, die nicht in der angegebenen inaktiven Boot-Umgebung liegen.
# TEMPDIR=/a; export TEMPDIR # truss -t open /usr/sbin/pkgadd -R ${TEMPDIR} SUNWvxvm \ 2>&1> /dev/null | grep -v O_RDONLY | grep -v \ 'open("'${TEMPDIR} |
Ausführliche Informationen über die hier genannten Befehle finden Sie in den Manpages dircmp(1), fssnap(1M), ps(1), truss(1), pkgadd(1M), pkgchk(1M) und pkgrm(1M).