När du använder Solaris Live Upgrade och skapar en ny startmiljö undviker du problem genom att följa de här riktlinjerma.
Paketprocedurskripten måste vara oberoende av den för tillfället aktiva operativmiljön. Procedurskripten definierar åtgärder som inträffar vid vissa punkter under paketinstallation och -borttagning. Det finns fyra procedurskript som kan skapas med de här fördefinierade namnen: preinstall, postinstall, preremove och postremove. Paketprocedurskripten måste vara oberoende av den för tillfället aktiva operativmiljön, eftersom en växling till en inaktiv startmiljö kan ske om Solaris Live Upgrade används.
De här skripten får inte starta eller stoppa några processer eller vara beroende av resultat från kommandon, som exempelvis ps eller truss , som är operativsystemsberoende och rapporterar information om systemet som körs för tillfället.
Procedurskripten får använda andra standardkommandon för UNIX, som exempelvis expr, cp och ls samt andra kommandon som underlättar skalskript. Men den inaktiva startmiljön får inte ändras utanför de regler som beskrivs i avsnittet, Krav för inaktiv startmiljö för anpassad JumpStart och Solaris Live Upgrade.
Alla skript måste skrivas i Bourne-skal (/bin/sh). Bourne-skal är tolken som används av kommandot pkgadd för att köra procedurskript.
Procedurskript för paket får inte anropa kommandon som lades till i version 2.6 eller senare. Paketprocedurskript kan till exempel inte anropa kommandot pgrep. Sedan version 2.6 har många kommandon fått ytterligare funktioner. Paketprocedurskript får inte använda kommandoalternativ som inte fanns i version 2.6. Alternativet -f för umount-kommandot lades till i Solaris 7, till exempel. Information som du kan använda för att verifiera att ett visst kommando eller alternativ stöds i Solaris 2.6 finns i Solaris 2.6 Reference Manual AnswerBook på http://docs.sun.com.
Alla paket måste genomgå en pkgchk-validering. När ett paket har skapats måste det kontrolleras med följande kommando innan det installeras.
# pkgchk -d katalognamn paketnamn |
Anger namnet på den katalog där paketet finns
Anger namnet på paketet
Om ett paket finns i /export/SUNWvxvm, till exempel, utfärdar du följande kommando.
# pkgchk -d /export SUNWvxvm |
Inga fel visas.
När ett paket har skapats måste det testas genom att det installeras till en inaktiv startmiljöplats med alternativet -R katalognamn för pkgadd. När paketet har installerats måste det kontrolleras med pkgchk, som i det här exemplet.
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
Inga fel visas.
Paket får heller inte köra kommandon som levereras av paketet självt. Skälet är att kompatibilitet med skivlöshet eftersträvas och att kommandon som kräver delade bibliotek som ännu inte är installerade förhindras.
De här kraven för att skapa, ändra och ta bort filer kan verifieras med flera olika kommandon. Kommandona dircmp och fssnap till exempel kan användas för att verifiera att paketen fungerar som de ska. Dessutom kan kommandot ps användas för att testa bakgrundsprogramskompatibilitet genom att kontrollera att bakgrundsprogram inte stoppas eller startas av paketet. Kommandona truss,pkgadd,-v och pkgrm kan testa paketinstallation vid körtid, men de fungerar inte alltid i alla situationer. I följande exempel tar kommandot truss bort alla skrivskyddade, icke-$TEMPDIR-åtkomst och visar bara icke-skrivskyddad åtkomst till sökvägar som inte ligger inom den alternativa rot (/) som angetts.
# 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} |
Utförligare information om de kommandon som det refereras till i det här avsnittet finns i direkthjälpen (man pages) för dircmp(1), fssnap(1M), ps(1), truss(1), pkgadd(1M), pkgchk(1M), eller pkgrm(1M).