Den här bilagan riktar sig till systemadministratörer som installerar eller tar bort paket, särskilt paket från andra företag. Genom att följa paketkraven kan du:
undvika att det system som körs för närvarande ändras, så att du kan uppgradera med Solaris Live Upgrade och skapa och underhålla icke-globala zoner och klienter utan skivminne.
förhindra ett paket från att vara interaktivt till att automatisera installationer när du använder installationsprogram, t.ex. anpassad JumpStart.
Kapitlet innehåller följande avsnitt:
Om du följer kraven i de här avsnittet ändras inte det operativsystem som körs för närvarande.
Om en installation i ett operativsystem ska lyckas, måste paketen känna igen och ta hänsyn till alternativa rotfilsystem (/), t.ex. en inaktiv startmiljö i Solaris Live Upgrade.
Paketen kan inkludera absoluta sökvägar i deras pkgmap-fil (paketavbildning). Om de här filerna finns är de skrivna relativt till pkgadd-kommandots -R-alternativ. Paket som innehåller både absoluta och relativa (relokerbara) sökvägar kan också installeras till en alternativ rot (/). $PKG_INSTALL_ROOT läggs till före både absoluta och relokerbara filer så att alla sökvägar löses korrekt när de installeras med pkgadd.
Paket som installeras med alternativet -R för pkgadd eller som tas bort med alternativet -R för pkgrm får inte ändra det system som körs för tillfället. Den här funktionen används i anpassad JumpStart, Solaris Live Upgrade, icke-globala zoner och klienter utan skivminne.
Procedurskript som följer med de paket som installeras med kommandot pkgadd och alternativet -R, eller som tas bort med kommandot pkgrm och alternativet -R, får inte ändra det system som körs för tillfället. Alla installationsskript som du använder måste referera till en katalog eller fil med variabeln $PKG_INSTALL_ROOT som prefix. Paketet måste skriva alla kataloger och filer med prefixet $PKG_INSTALL_ROOT. Paketet får inte ta bort kataloger och filer utan prefixet $PKG_INSTALL_ROOT.
Tabell B–1 visar exempel på skriptsyntax.
Tabell B–1 Exempel på installationskriptsyntax
$PKG_INSTALL_ROOT är platsen där rotfilssystemet (/) för datorn som du lägger till paketen på finns. Platsen anges till -R-argumentet för kommandot pkgadd. Om t.ex. följande kommando anropas innebär det att $PKG_INSTALL_ROOT blir /a under installationen av paketet.
# pkgadd -R /a SUNWvxvm |
$BASEDIR pekar på den relokerbara baskatalog som relokerbara paketobjekt installeras till. Endast relokerbara objekt installeras här. Icke-relokerbara objekt (de som har absoluta sökvägar i pkgmap-filen) installeras alltid relativt till den inaktiva startmijön, men inte relativt till $BASEDIR. Om ett paket inte har några relokerbara objekt, anses paketet vara ett absolut paket (eller icke-relokerbart). $BASEDIR är då odefinierad och inte tillgänglig för paketprocedurskript.
Anta exempelvis att paketets pkgmap-fil har två poster:
1 f none sbin/ls 0555 root sys 3541 12322 1002918510 1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332 |
Filen pkginfo har en specifikation för $BASEDIR:
BASEDIR=/opt |
Om det här paketet installeras med följande kommando installeras ls i /a/opt/sbin/ls, men ls2 installeras som /a/sbin/ls2.
# pkgadd -R /a SUNWtest |
Procedurskripten för paketen måste vara oberoende av det operativsystem som körs för närvarande, så att det inte ändras. 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.
Tabell B–2 Riktlinjer för att skapa skript
Riktlinjer |
Påverkar Solaris Live Upgrade |
Påverkar icke-globala zoner |
---|---|---|
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. |
X |
X |
De här skripten får inte starta eller stoppa några processer eller vara beroende av resultat från kommandon, som ps eller truss, som är operativsystemsberoende och rapporterar information om systemet som körs för tillfället. |
X |
X |
Skript kan använda andra vanliga UNIX-kommandon som expr, cp och ls, och övriga kommandon som underlättar användande av skalskript. |
X |
X |
Alla kommandon som anropas av ett skript måste vara tillgängliga i alla versioner, eftersom ett paket måste kunna köras på alla de här versionerna. Därför kan du inte använda kommandon som har lagts till eller tagits bort efter Solaris 8. Du kan kontrollera att ett visst kommando eller alternativ stöds av Solaris 8, 9 eller 10 genom att läsa motsvarande version av Solaris Reference Manual AnswerBook på http://docs.sun.com. |
X |
Paketen får inte köra kommandon som levereras av paketet självt. Skälet är att kompatibilitet med klienter utan skivminne eftersträvas och att kommandon som kräver delade bibliotek som ännu inte är installerade förhindras.
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
När ett paket har skapats måste det testas genom att installeras i en alternativ rotkatalog (/) med hjälp av alternativet -R dir_name i 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.
Om ett paket finns i /export/SUNWvxvm utfärdar du följande kommando.
# pkgchk -d /export SUNWvxvm |
Inga fel visas.
Andra kommandon kan kontrollera paketet när du skapar, ändrar eller tar bort filer. Följande kommandon är några exempel.
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 all skrivskyddad, icke-$TEMPDIR-åtkomst och visar bara icke-skrivskyddad åtkomst till sökvägar som inte ligger inom den angivna, inaktiva startmiljön.
# 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} |
Paketen måste läggas till eller tas bort utan att användaren uppmanas att ange information när följande standardverktyg för Solaris används.
Anpassad JumpStart
Solaris Live Upgrade
Solaris-installation-programmet
Solaris-zoner
Du kan kontrollera att ett paket installeras utan användarens medverkan genom att konfigurera en ny administrationsfil med kommandot pkgadd och alternativet -a. Alternativet -a definierar en installationsadministrationsfil som ska användas i stället för standardadministrationsfilen. Om du använder standardfilen kan det hända att användaren ombeds lämna mera information. Du kan skapa en administrationsfil som anger att pkgadd ska hoppa över kontrollerna och installera paket utan användarbekräftelse. Mer information finns i direkthjälpen admin(4) eller pkgadd(1M).
Följande exempel visar hur kommandot pkgadd använder administrationsfilen.
Om ingen administrationsfil finns använder pkgadd /var/sadm/install/admin/default. Om du använder den här filen kan det orsaka användarinteraktion.
# pkgadd |
Om en relativ administrationsfil finns på kommandoraden, letar pkgadd i /var/sadm/install/admin efter filnamnet och använder det. I det här exemplet heter den relativa administrationsfilen nocheck och pkgadd letar efter /var/sadm/install/admin/nocheck.
# pkgadd -a nocheck |
Om en absolut fil finns använder pkgadd den. I det här exemplet letar pkgadd efter administrationsfilen nocheck i /tmp.
# pkgadd -a /tmp/nocheck |
Följande är ett exempel på en installationsadministrationsfil som kräver mycket lite användarinteraktion med verktyget pkgadd. Om inte paketet kräver mer utrymme än vad som finns tillgängligt på systemet, använder verktyget pkgadd den här filen och installerar paketet utan att be användaren om information.
mail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck space=ask setuid=nocheck confiict=nocheck action=nocheck basedir=default
Följande referenser ger bakgrundsinformation om paketeringskrav och specifik kommandosyntax.
Mer specifik information om paketeringskrav och termdefinitioner finns i |
Kapitel 6, Advanced Techniques for Creating Packages i Application Packaging Developer’s Guide |
Grundläggande information om att lägga till och ta bort paket och installationsadministrationsfilen |
Kapitel 16, Managing Software(Overview) i System Administration Guide: Basic Administration |
Detaljerad information om specifika kommandon som refereras till i den här bilagan finns i följande direkthjälpsavsnitt |
dircmp(1), fssnap(1M), ps(1) eller truss(1) pkgadd(1M), pkgchk(1M) eller pkgrm(1M) |
En översikt över Solaris Live Upgrade | |
En översikt över anpassad JumpStart | |
En översikt över Solaris-zoner |