Sie können mit einem Finish-Skript nach der Installation der Solaris-Software automatisch Packages oder Patches hinzufügen. Indem Sie Packages mit einem Finish-Skript hinzufügen, sparen Sie Zeit und stellen außerdem sicher, dass Packages und Patches auf unterschiedlichen Systemen gleich installiert werden.
Wenn Sie in Finish-Skripten den Befehl pkgadd(1M) bzw. patchadd(1M) verwenden, geben Sie mit der Option -R den Pfad /a als Root-Pfad an.
Beispiel 24–2 zeigt ein Finish-Skript zum Hinzufügen von Packages.
Beispiel 24–3 zeigt ein Finish-Skript zum Hinzufügen von Patches.
#!/bin/sh BASE=/a MNT=/a/mnt ADMIN_FILE=/a/tmp/admin mkdir ${MNT} mount -f nfs sherlock:/export/package ${MNT} cat>${ADMIN_FILE} <<DONT_ASK mail=root instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck rdepend=nocheck space=ask setuid=nocheck conflict=nocheck action=nocheck basedir=default DONT_ASK /usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz umount ${MNT} rmdir ${MNT} |
Nachfolgend werden einige Befehle dieses Beispiels erläutert.
Der folgende Befehl hängt ein Verzeichnis auf einem Server ein, in dem sich das zu installierende Package befindet.
mount -f nfs sherlock:/export/package ${MNT} |
Der folgende Befehl erzeugt die temporäre Package-Administrationsdatei admin und bewirkt, dass der Befehl pkgadd(1M) bei der Package-Installation keine Prüfung vornimmt und keine Eingabeaufforderungen ausgibt. Verwenden Sie die temporäre Package-Administrationsdatei, damit die Installation beim Hinzufügen von Packages ohne Benutzereingriff abläuft.
cat>${ADMIN_FILE} <<DONT_ASK |
Der nachfolgende pkgadd-Befehl fügt das Package unter Verwendung der Option -a zur Angabe der Package-Administrationsdatei und der Option -R zur Angabe des Root-Pfads hinzu.
/usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz |
#!/bin/sh ######## # # VOM BENUTZER KONFIGURIERBARE OPTIONEN # ######## # Speicherort der Patches, die nach der Installation hinzugefügt werden # sollen. An Root werden die BS-Rev. (5.x) und Architektur (`mach`) # angehängt. /foo auf einem 8 SPARC würde also zu /foo/5.8/sparc LUPATCHHOST=ins3525-svr LUPATCHPATHROOT=/export/solaris/patchdb ######### # # AB HIER NICHTS MEHR ÄNDERN # ######### BASEDIR=/a # BS-Versionen (Quelle/Ziel) bestimmen echo BS-Revisionen bestimmen... SRCREV=`uname -r` echo Quelle $SRCREV LUPATCHPATH=$LUPATCHPATHROOT/$SRCREV/`mach` # # Nötige Patches hinzufügen # echo BS-Patches werden hinzugefügt... mount $LUPATCHHOST:$LUPATCHPATH /mnt>/dev/null 2>&1 if [ $? = 0 ] ; then for patch in `cat /mnt/*Recommended/patch_order` ; do (cd /mnt/*Recommended/$patch ; echo yes | patchadd -u -d -R $BASEDIR .) done cd /tmp umount /mnt else echo "Keine Patches gefunden" if |
Früher wurde der Befehl chroot(1M) zusammen mit dem Befehl pkgadd und patchadd in Finish-Skripten verwendet. In seltenen Fällen kann es vorkommen, dass bei einigen Packages oder Patches die Option -R nicht funktioniert. Sie müssen eine /etc/mnttab-Dummy-Datei im Root-Pfad /a erstellen, bevor Sie den Befehl chroot absetzen.
Zum Erstellen einer /etc/mnttab-Dummy-Datei fügen Sie die folgende Zeile zum Finish-Skript hinzu:
cp /etc/mnttab /a/etc/mnttab