Installationshandbok för Solaris 10 6/06: Solaris Live Upgrade och uppgraderingsplanering

Bilaga B Ytterligare krav för SVR4-paketering (Referens)

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:

Kapitlet innehåller följande avsnitt:

Förhindra ändring av det nuvarande operativsystemet

Om du följer kraven i de här avsnittet ändras inte det operativsystem som körs för närvarande.

Använda absoluta sökvägar

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.

Använda kommandot pkgadd -R

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

Skripttyp 

Korrekt syntax 

Inkorrekt syntax 

Bourne-skalet ?om? instruktionen fragmenterar  

if [ -f ${PKG_INSTALL_ROOT}\
/etc/myproduct.conf ] ; then
if [ -f /etc/myproduct.conf ] ; \
 then

Ta bort en fil  

/bin/rm -f ${PKG_INSTALL_ROOT}\
/etc/myproduct.conf
/bin/rm -f /etc/myproduct.conf

Ändra en fil  

echo "test=no" > ${PKG_INSTALL_ROOT}\
/etc/myproduct.conf
echo "test=no" > \
/etc/myproduct.conf

Skillnader mellan $PKG_INSTALL_ROOT och $BASEDIR, översikt

$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

Riktlinjer för att skriva skript

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.

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.

Skript kan använda andra vanliga UNIX-kommandon som expr, cp och ls, och övriga kommandon som underlättar användande av skalskript.

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 AnswerBookhttp://docs.sun.com.

 

Underhålla kompatibilitet med klienter utan skivminne

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.

Verifiera paket

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
katalognamn

Anger namnet på den katalog där paketet finns

paketnamn

Anger namnet på paketet


Exempel B–1 Testa ett paket

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.



Exempel B–2 Testa ett paket på /export/SUNWvxvm

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.


# 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}

Förhindra användares medverkan vid installation eller uppgradering

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.

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.


Exempel B–3 Installationsadministrationsfil

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

Ställa in paketparametrar för zoner

Paketen har parametrar som styr hur deras innehåll distribueras och blir synliga på ett system med installerade icke-globala zoner. Paketparametrarna SUNW_PKG_ALLZONES , SUNW_PKG_HOLLOW och SUNW_PKG_THISZONE definierar egenskaperna för paket på ett system med installerade zoner. Parametrarna måste ställas in så att paketen kan administreras på ett system med icke-globala zoner.

I följande tabell visas de fyra giltiga kombinationerna för inställning av paketparametrar. Om du väljer kombinationer som inte finns i följande tabell blir inställningarna ogiltiga och paketet kan inte installeras.


Obs! –

Kontrollera så att du har ställt in alla tre paketparametrarna. Det går att lämna alla tre paketparametrarna tomma. Paketverktygen tolkar en tom paketparameter för en zon som ”false”. Vi avråder dock starkt från att inte ställa in parametrarna. Genom att ställa in alla tre paketparametrarna anger du exakt hur paketverktygen ska uppträda när paketet installeras eller tas bort.


Tabell B–3 Giltiga paketparameterinställningar för zoner

Inställningen SUNW_PKG_ALLZONES

Inställningen SUNW_PKG_HOLLOW

Inställningen SUNW_PKG_THISZONE

Paketbeskrivning 

false 

false 

false 

Det är standardinställningen för paket som inte anger värden för alla paketparametrarna för zoner. 

Ett paket med dessa inställningar kan installeras i antingen den globala zonen eller en icke-global zon.  

  • Om kommandot pkgadd körs i den globala zonen installeras paketet i den globala zonen och i alla icke-globala zoner.

  • Om kommandot pkgadd körs i en icke-global zon installeras paketet endast i den icke-globala zonen.

I båda fallen syns paketets hela innehåll i alla zoner där paketet installerats. 

false 

false 

true 

Ett paket med dessa inställningar kan installeras i antingen den globala zonen eller en icke-global zon. Om nya, icke-globala zoner skapas efter installationen sprids inte paketet till dessa zoner. 

  • Om kommandot pkgadd körs i den globala zonen installeras paketet endast i den globala zonen.

  • Om kommandot pkgadd körs i en icke-global zon installeras paketet endast i den icke-globala zonen.

I båda fallen syns hela paketets innehåll i den zon där paketet installerats. 

true 

false 

false 

Ett paket med de här inställningarna måste uppfylla de här kraven: 

  • Det identiska paketet måste finnas i alla zoner

  • Paketversionen måste vara identisk i alla zoner

  • Korrigerinsgfiler för ett paket måste finnas, och vara identiska, i alla zoner

Ett paket med de här inställningarna kan endast installeras genom att köra pkgadd-kommandot i den globala zonen. Försök att köra pkgadd-kommandot i en icke-global zon för att installaera det här paketet kommer att misslyckas.

När pkgadd-kommandot körs i den globala zonen installeras paketet i den globala zonen och sedan i alla icke-globala zoner. Paketets hela innehåll är synligt i alla zoner.

true 

true 

false 

Ett paket med dessa inställningar kan endast installeras i den globala zonen, av global administratör. När kommandot pkgadd körs installeras paketets innehåll fullständigt i den globala zonen. Om ett pakets paketparametrar är inställda på dessa värden levereras inte själva paketinnehållet till någon icke-global zon. Endast den information om paketinstallation som behövs för att paketet ska verka vara installerat installeras i icke-globala zoner. Det gör det möjligt att installera andra paket som är beroende av paketet i fråga. Mer information om ”tomma” paket finns i Kapitel 24, About Packages and Patches on a Solaris System With Zones Installed (Overview) i System Administration Guide: Solaris Containers-Resource Management and Solaris Zones.

På grund av att andra paket kan vara beroende av paketet verkar det vara installerat i alla zoner. 

  • I den globala zonen är paketets hela innehåll synligt.

  • I icke-globala zoner med hel rot syns inte paketets hela innehåll.

  • När en icke-global zon ärver ett filsystem från den globala zonen är paket installerade i detta filsystem synligt i den icke-globala zonen. Alla andra filer som leverats av paketet är inte synliga i den icke-globala zonen.

    En icke-global zon med gles rot delar till exempel vissa kataloger med den globala zonen. Dessa kataloger är skrivskyddade. Icke-globala zoner med gles rot delar bland annat filsystemet /platform. Ett annat exempel är paket som levererar filer som endast är relevanta för startmaskinvara.

Beskrivning 

Mer information finns i 

Mer information om paket och zoner finns i 

Kapitel 24, About Packages and Patches on a Solaris System With Zones Installed (Overview) i System Administration Guide: Solaris Containers-Resource Management and Solaris Zones

En översikt över glesa och hela rotzoner finns i 

Kapitel 16, Introduction to Solaris Zones i System Administration Guide: Solaris Containers-Resource Management and Solaris Zones

Information om paketegenskaper och parametrar finns i 

pkginfo(4)

Information om att visa paketparametervärden finns i 

pkgparam(1)

Bakgrundsinformation

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 

Kapitel 6, Solaris Live Upgrade (Översikt)

En översikt över anpassad JumpStart 

Kapitel 5, Anpassad JumpStart (Översikt) i Installationshandbok för Solaris 10 6/06: Anpassad JumpStart och avancerade installationer

En översikt över Solaris-zoner 

Kapitel 16, Introduction to Solaris Zones i System Administration Guide: Solaris Containers-Resource Management and Solaris Zones