Dieser Anhang richtet sich an Systemadministratoren, die mit dem benutzerdefinierten JumpStart-Programm oder Solaris Live Upgrade Packages installieren bzw. entfernen müssen, insbesondere Packages von Drittherstellern. Indem Sie diese Packaging-Anforderungen beachten, können Sie sicherstellen, dass die benutzerdefinierte JumpStart-Installation ohne Benutzereingriffe abläuft. Außerdem verhindern Sie, dass das zurzeit laufende System modifiziert wird, so dass Sie ein Upgrade mit Solaris Live Upgrade ausführen können.
Ein alternatives Root-Dateisystem (/) ist eine Kopie der Betriebssystemumgebung, nicht des zurzeit laufenden Systems.
Damit das benutzerdefinierte JumpStart-Programm und Solaris Live Upgrade ordnungsgemäß funktionieren, müssen Packages den SvR4-Packaging-Anforderungen entsprechen. Im Application Packaging Developer's Guide finden Sie weitere spezifische Informationen zu Packaging-Anforderungen sowie Begriffsdefinitionen, insbesondere im folgenden Kapitel: "Advanced Package Creation Techniques" in Application Packaging Developer's Guide
Grundlegende Informationen zum Hinzufügen und Entfernen von Packages und zur Installationsadministrationsdatei finden Sie unter "Managing Software (Overview)" in System Administration Guide: Basic Administration. Schlagen Sie auch in den relevanten Manpages nach.
Detaillierte Informationen zu den im diesem Anhang erwähnten Befehlen finden Sie in den Manpages dircmp(1), fssnap(1M), ps(1) und truss(1).
In Tabelle C-1 sind Informationen aufgeführt, die für Solaris Live Upgrade oder das benutzerdefinierte JumpStart-Programm relevant sind.
Tabelle C-1 Informationen zu Anforderungen
Installationsverfahren |
Dokumentierte Anforderungen |
---|---|
Solaris Live Upgrade |
|
Benutzerdefiniertes JumpStart-Programm |
|
Ein alternatives Root-Dateisystem (/) ist eine Kopie der Betriebssystemumgebung, nicht des laufenden Systems. Ein Package, das von Live Upgrade oder dem benutzerdefinierten JumpStart-Programm verwendet werden soll, muss folgenden Anforderungen entsprechen:
Ermöglichen einer benutzerdefinierten JumpStart-Installation bzw. eines Upgrades ohne Benutzereingriffe
Keine Modifikation des zurzeit laufenden Systems (dies ist für Solaris Live Upgrade erforderlich)
Die folgende Liste erläutert die Anforderungen bezüglich der Konformität alternativer Root-Dateisysteme (/).
Damit eine Betriebssysteminstallation erfolgreich ausgeführt werden kann, müssen Packages alternative Root-Angaben (/) erkennen und korrekt handhaben.
Packages können in der Datei pkgmap (Package-Map) absolute Pfade enthalten. Sind die Dateien vorhanden, werden sie relativ zu dem Verzeichnis geschrieben, das mit der Option -R des Befehls pkgadd angegeben wird. Packages, die absolute und relative (verschiebbare) Pfade enthalten, können ebenfalls in einem alternativen Root-Dateisystem (/) installiert werden. $PKG_INSTALL_ROOT wird absoluten und verschiebbaren Dateien vorangestellt, so dass alle Pfade bei der Installation mit pkgadd korrekt aufgelöst werden.
Packages, die mit dem Befehl pkgadd und der Option - R installiert bzw. mit dem Befehl pkgrm und der Option - R entfernt werden, dürfen das zurzeit laufende System nicht modifizieren.
Prozedurskripte, die zu den Packages gehören, die mit dem Befehl pkgadd und der Option -R installiert bzw. mit dem Befehl pkgrm und der Option -R entfernt werden, dürfen das zurzeit laufende System nicht modifizieren. Von Ihnen zur Verfügung gestellte Installationsskripte müssen alle Verzeichnisse und Dateien mit vorangestellter $PKG_INSTALL_ROOT -Variable referenzieren. Das Package muss alle Verzeichnisse und Dateien mit dem vorangestellten $PKG_INSTALL_ROOT-Präfix schreiben. Das Package darf keine Verzeichnisse ohne $PKG_INSTALL_ROOT-Präfix entfernen. In Tabelle C-2 sehen Sie Beispiele für die korrekte Skriptsyntax.
Tabelle C-2 Beispiele für Installationskriptsyntax
$PKG_INSTALL_ROOT ist der Speicherort des Root-Dateisystems (/) auf dem Rechner, zu dem Sie das Package hinzufügen. Diese Variable wird auf das -R-Argument des Befehls pkgadd gesetzt. Angenommen, der folgende Befehl wird ausgeführt:
# pkgadd -R /a SUNWvxvm |
In diesem Fall wird während der Installation des Package $PKG_INSTALL_ROOT dem Verzeichnis /a vorangestellt.
$BASEDIR verweist auf das verschiebbare Basisverzeichnis, in dem verschiebbare Package-Objekte installiert werden. Hier werden nur verschiebbare Objekte installiert. Nicht verschiebbare Objekte (Objekte mit absoluten Pfaden in der Datei pkgmap) werden immer relativ zum alternativen Root-Dateisystem (/) installiert, nicht jedoch relative zum aktuellen $BASEDIR. Wenn ein Package keine verschiebbaren Objekte aufweist, wird das Package als absolutes bzw. nicht verschiebbares Package bezeichnet. $BASEDIR ist nicht definiert und steht Package-Prozedurskripten nicht zur Verfügung.
Angenommen, die Datei pkgmap eines Package enthält zwei Einträge:
1 f none sbin/ls 0555 root sys 3541 12322 1002918510 1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332 |
Außerdem ist in der Datei pkginfo $BASEDIR definiert:
BASEDIR=/opt |
Angenommen, dieses Package wird mit dem folgenden Befehl installiert:
# pkgadd -R /a SUNWtest |
ls wird in /a/opt/sbin/ls installiert, aber ls2 wird als /a/sbin/ls2 installiert.
Wenn Sie Solaris Live Upgrade verwenden und eine neue Boot-Umgebung erstellen, befolgen Sie die folgenden Richtlinien, um Probleme zu vermeiden.
Package-Prozedurskripte müssen unabhängig von der aktuellen Betriebssystemumgebung sein. Prozedurskripte definieren Aktionen, die an bestimmten Punkten während der Installation bzw. der Deinstallation von Packages auftreten. Es gibt vier Prozedurskripte, die mit diesen vordefinierten Namen erstellt werden können: preinstall, postinstall, preremove und postremove. Package-Prozedurskripte müssen von der zurzeit aktiven Betriebssystemumgebung unabhängig sein, da mit Solaris Live Upgrade zu einer alternative Boot-Umgebung gewechselt werden kann.
Diese Skripte 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. 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 Skripte 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-Prozedurskripte dürfen keine Befehle aufrufen, die in Releases vor Release 2.6 nicht vorhanden sind. So dürfen Package-Prozedurskripte zum Beispiel nicht den Befehl pgrep aufrufen. Seit dem Release 2.6 wurden viele Befehle um weitere Funktionen erweitert. Package-Prozedurskripte 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 Package an. |
Wenn ein Package zum Beispiel in /export/SUNWvxvm gespeichert ist, setzen Sie den folgenden Befehl ab:
# pkgchk -d /export SUNWvxvm |
Es sollten keine Fehler angezeigt werden.
Nachdem Sie ein Package erstellt haben, müssen Sie testen, indem Sie es mit der Option -R Verz_name des Befehls pkgadd in einem alternativen Root-Dateisystem (/) installieren. Danach muss das Package wie im folgenden Beispiel mit dem Befehl pkgchk überprüft werden.
# 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).
Die Konformität mit dem benutzerdefinierten JumpStart-Programm stellt sicher, dass Packages hinzugefügt und entfernt werden können, wenn sie Teil der folgenden herkömmlichen Solaris-Installationsdienstprogramme sind:
Benutzerdefiniertes JumpStart-Programm
Programm Solaris suninstall
Installationsverfahren Solaris Web Start
Die Konformität mit dem benutzerdefinierten JumpStart-Programm stellt außerdem sicher, dass ein Package in Solaris-Upgrades enthalten sein kann. Um mit dem benutzerdefinierten JumpStart-Programm konform zu sein, muss ein Package die Anforderungen bezüglich des alternativen Root-Dateisystems (/) erfüllen, die unter "Anforderungen bezüglich des alternativen Root-Dateisystems (/) für das benutzerdefinierte JumpStart-Programm und Solaris Live Upgrade" erläutert sind.
Damit das benutzerdefinierte JumpStart-Programm effizient eingesetzt werden kann, müssen die Packages hinzugefügt und entfernt werden, ohne dass der Benutzer zur Eingabe von Informationen aufgefordert wird. Um Benutzereingriffe zu vermeiden, richten Sie mit dem Befehl pkgadd und der Option -a eine neue Administrationsdatei ein. Die Option -a definiert eine Installationsadministrationsdatei, die anstelle der Standardadministrationsdatei verwendet wird. Bei Verwendung der Standarddatei wird der Benutzer möglicherweise zur Eingabe weiterer Informationen aufgefordert. Sie können eine Administrationsdatei erstellen, in der pkgadd angewiesen wird, diese Abfragen auszulassen und das Package ohne Bestätigung seitens des Benutzers zu installieren. Das folgende Beispiel zeigt, wie Sie eine pkgadd-Administrationsdatei verwenden können.
Wenn keine Administrationsdatei zur Verfügung gestellt wird, verwendet pkgadd die Datei /var/sadm/install/admin/default. Dabei werden jedoch möglicherweise Benutzereingriffe erforderlich.
# pkgadd |
Wenn Sie über die Befehlszeile eine relative Administrationsdatei angeben, sucht pkgadd in /var/sadm/install/admin nach dem Dateinamen. In diesem Beispiel lautet der Name der relativen Administrationsdatei nocheck und pkgadd sucht nach /var/sadm/install/admin/nocheck.
# pkgadd -a nocheck |
Wenn eine absolute Datei angegeben wird, verwendet pkgadd diese. In diesem Beispiel sucht pkgadd in /tmp/nocheck.
# pkgadd -a /tmp/nocheck |
Im Folgenden sehen Sie ein Beispiel für eine Administrationsdatei, die verhindert, dass pkgadd den Benutzer vor der Installation des Package zur Bestätigung auffordert.
mail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck space=nocheck setuid=nocheck confiict=nocheck action=nocheck basedir=default
Nähere Informationen finden Sie in der Manpage admin(4) oder pkgadd(1M).