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}1 cat>${ADMIN_FILE} <<DONT_ASK2 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} SUNWxyz3 umount ${MNT} rmdir ${MNT} |
Hängt ein Verzeichnis auf einem Server ein, das das zu installierende Package enthält.
Erstellt eine temporäre Package-Administrationsdatei, admin, und bewirkt, dass der Befehl pkgadd( 1M) bei der Installation eines Package 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.
Fügt das Package mit der Option -a zur Angabe der Package-Administrationsdatei und mit der Option -R zur Angabe des Root-Pfades hinzu.
#!/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 2.6 SPARC würde also zu /foo/5.6/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