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 alternative 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 derzeit 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. Das aktuelle alternative Root-Dateisystem (/) darf nur insoweit modifiziert werden, als dies gemäß der im Abschnitt "Anforderungen bezüglich des alternativen Root-Dateisystems (/) für das benutzerdefinierte JumpStart-Programm und Solaris Live Upgrade" erläuterten Regeln zulässig ist.
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.
Package-Prozedurskripten dürfen keine Befehle aufrufen, die in Releases vor Release 2.6 nicht vorhanden sind. 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. Die Option -f ist zum Beispiel eine neue Option für den Befehl umount.
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 einem alternativen Root-Dateisystem (/) 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 dem Befehl truss und pkgadd 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-$BASEDIR-Zugriffe und zeigt nur die nicht schreibgeschützten Zugriffe auf Pfade an, die nicht im angegebenen alternativen Root-Dateisystem (/) liegen.
# BASEDIR=/a; export BASEDIR # truss -t open /usr/sbin/pkgadd -R ${BASEDIR} SUNWvxvm \ 2>&1> /dev/null | grep -v O_RDONLY | grep -v \ 'open("'${BASEDIR} |
Detaillierte Informationen zu den im diesem Abschnitt erwähnten Befehlen finden Sie in den Manpages dircmp(1), fssnap(1M), ps(1) und truss(1).