Questa appendice è destinata agli amministratori di sistema che eseguono procedure di installazione o rimozione di pacchetti, in particolare di pacchetti di terze parti. Seguendo le indicazioni qui fornite sui pacchetti richiesti, è possibile:
Evitare di modificare il sistema attualmente in uso, in modo da poter eseguire un aggiornamento con Solaris Live Upgrade e creare e mantenere zone non globali e client diskless
Evitare che un pacchetto operi in modo interattivo e consentire così l'esecuzione di installazioni automatizzate, ad esempio usando il metodo JumpStart personalizzato
Il capitolo è suddiviso nelle seguenti sezioni:
Le indicazioni fornite in questa sezione permettono di mantenere invariato il sistema operativo attualmente in uso.
Perché l'installazione di un sistema operativo si svolga correttamente, è necessario che i pacchetti riconoscano e rispettino i file system radice (/) alternativi, ad esempio l'ambiente di boot inattivo di Solaris Live Upgrade.
I pacchetti possono includere percorsi assoluti nel file pkgmap (mappa dei pacchetti). Questi file, se presenti, vengono scritti in modo relativo all'opzione -R del comando pkgadd. I pacchetti che contengono sia percorsi assoluti che percorsi relativi possono essere installati anche in un file system radice (/) alternativo. È necessario anteporre $PKG_INSTALL_ROOT sia ai file con percorso assoluto che a quelli con percorso relativo, in modo che tutti i percorsi vengano risolti correttamente durante l'installazione con pkgadd.
I pacchetti installati con l'opzione -R di pkgadd o quelli rimossi con l'opzione -R di pkgrm non devono modificare il sistema attualmente in uso. Questa funzione è disponibile con il metodo JumpStart personalizzato, con Solaris Live Upgrade, con le zone non globali e con i client diskless.
Gli script procedurali eventualmente inclusi nei pacchetti installati con il comando pkgadd e l'opzione -R o in quelli rimossi con il comando pkgrm e l'opzione -R non devono modificare il sistema attualmente in uso. Negli script di installazione eventualmente utilizzati, tutte le directory e i file referenziati devono essere preceduti dalla variabile $PKG_INSTALL_ROOT. Il pacchetto deve scrivere tutte le directory e i file con il prefisso $PKG_INSTALL_ROOT. Il pacchetto non deve rimuovere le directory che non siano precedute dalla variabile $PKG_INSTALL_ROOT.
La Tabella B–1 fornisce alcuni esempi di sintassi degli script.
Tabella B–1 Esempi di sintassi per gli script di installazione
$PKG_INSTALL_ROOT designa la posizione del file system radice (/) del sistema a cui viene aggiunto il pacchetto. La posizione viene impostata dall'argomento -R del comando pkgadd. Ad esempio, se viene eseguito il seguente comando, il valore di $PKG_INSTALL_ROOT diventa /a nell'installazione del pacchetto.
# pkgadd -R /a SUNWvxvm |
$BASEDIR punta alla directory base relativa in cui vengono installati gli oggetti dei pacchetti. In questa posizione vengono installati solo oggetti “riposizionabili”, cioè con percorso relativo. Gli oggetti designati con un percorso assoluto nel file pkgmap vengono sempre installati relativamente all'ambiente di boot inattivo, ma non relativamente alla variabile $BASEDIR impostata. I pacchetti che non contengono oggetti riposizionabili vengono detti assoluti; in questi pacchetti, la variabile $BASEDIR non è definita e non è disponibile per gli script procedurali.
Ad esempio, si supponga che il file pkgmap contenga due righe:
1 f none sbin/ls 0555 root sys 3541 12322 1002918510 1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332 |
E che il file pkginfo contenga una specifica per $BASEDIR:
BASEDIR=/opt |
Se il pacchetto viene installato con il seguente comando, ls viene installato in /a/opt/sbin/ls, ma ls2 viene installato in /a/sbin/ls2.
# pkgadd -R /a SUNWtest |
Gli script contenenti le procedure da eseguire sui pacchetti devono essere indipendenti dal sistema operativo attualmente in uso, per impedire che quest'ultimo venga modificato. Gli script procedurali definiscono le azioni da eseguire in determinati momenti durante l'installazione o la rimozione dei pacchetti. È possibile creare quattro script procedurali con i seguenti nomi predefiniti: preinstall, postinstall, preremove e postremove.
Tabella B–2 Linee guida per la creazione degli script
Linee guida |
Impatto su Solaris Live Upgrade |
Impatto sulle zone non globali |
---|---|---|
Gli script devono essere scritti nella Bourne shell (/bin/sh). La Bourne shell è l'interprete usato dal comando pkgadd per eseguire gli script procedurali. |
X |
X |
Gli script non devono avviare o arrestare processi, né devono dipendere dall'output di comandi come ps o truss, che a loro volta dipendono dal sistema operativo e restituiscono informazioni sul sistema correntemente in uso. |
X |
X |
Gli script possono invece utilizzare liberamente altri comandi UNIX standard, come expr, cp, ls o altri comandi che facilitano la scrittura degli script per le shell. |
X |
X |
Qualsiasi comando richiamato da uno script deve essere disponibile in tutte le versioni supportate, in quanto i pacchetti devono poter essere eseguiti in tutte queste versioni. Non utilizzare comandi che sono stati aggiunti o rimossi dopo Solaris 8. Per verificare che un determinato comando o una determinata opzione siano supportati in Solaris 8, 9 o 10, vedere la versione appropriata del Solaris Reference Manual AnswerBook su http://docs.sun.com. |
X |
I pacchetti non devono eseguire comandi forniti dal pacchetto stesso. Questa condizione ha lo scopo di mantenere la compatibilità dei client diskless e di evitare l'esecuzione di comandi che potrebbero richiedere librerie condivise non ancora installate.
Tutti i pacchetti devono superare la verifica con pkgchk. Prima di installare un pacchetto di nuova creazione, è necessario verificarlo con il comando seguente.
# pkgchk -d dir_name pkg_name |
Specifica il nome della directory in cui si trova il pacchetto
Specifica il nome del pacchetto
I pacchetti di nuova creazione devono essere provati con un'installazione in un file system radice (/) alternativo usando l'opzione -R directory di pkgadd. Dopo l'installazione del pacchetto, è necessario verificarne la correttezza usando pkgchk, come nell'esempio seguente.
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
Il comando non dovrebbe restituire errori.
Se un pacchetto si trova in /export/SUNWvxvm, occorre eseguire il comando seguente.
# pkgchk -d /export SUNWvxvm |
Il comando non dovrebbe restituire errori.
Sono inoltre disponibili altri comandi per verificare il pacchetto durante la creazione, la modifica e l'eliminazione dei file. Qui di seguito sono riportati alcuni esempi di questi comandi.
Ad esempio, è possibile usare i comandi dircmp o fssnap per verificare il comportamento corretto dei pacchetti.
Oppure, è possibile usare il comando ps per provare la conformità dei daemon e verificare che nessun daemon venga arrestato o avviato dal pacchetto.
I comandi truss, pkgadd -v e pkgrm possono verificare la conformità dell'installazione dei pacchetti runtime, ma non funzionano in tutte le situazioni. Nell'esempio seguente, il comando truss non considera gli accessi in sola lettura a directory diverse da $TEMPDIR e restituisce solo gli accessi di altro tipo alle directory che non risiedono nell'ambiente di boot inattivo specificato.
# 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} |
I pacchetti devono poter essere aggiunti o rimossi con le seguenti utility standard di Solaris senza che vengano richieste informazioni all'utente.
Programma JumpStart personalizzato
Solaris Live Upgrade
Programma di installazione di Solaris
Solaris Zones
Per verificare che un pacchetto possa essere installato senza interazioni con l'utente, è possibile configurare un nuovo file di amministrazione con l'opzione -a del comando pkgadd. L'opzione -a definisce un file di amministrazione dell'installazione da usare al posto del file predefinito. Usando il file predefinito, è possibile che all'utente vengano richieste esplicitamente alcune informazioni. Per evitare che questo accada, si può creare un file di amministrazione che indichi a pkgadd di tralasciare questi controlli e di installare il pacchetto senza la conferma dell'utente. Per maggiori informazioni, vedere le pagine man admin(4) o pkgadd(1M).
Gli esempi seguenti mostrano in che modo il comando pkgadd utilizza questo file di amministrazione.
Se non viene specificato alcun file di amministrazione, pkgadd utilizza /var/sadm/install/admin/default. L'uso di questo file non esclude l'interazione con l'utente.
# pkgadd |
Se viene specificato un file di amministrazione relativo, pkgadd cerca il file in /var/sadm/install/admin e lo utilizza. In questo esempio, viene specificato il file di amministrazione relativo nocheck e pkgadd ricerca /var/sadm/install/admin/nocheck.
# pkgadd -a nocheck |
Se viene specificato un file con percorso assoluto, pkgadd usa il percorso specificato. In questo esempio, pkgadd ricerca in /tmp il file di amministrazione nocheck.
# pkgadd -a /tmp/nocheck |
L'esempio seguente mostra un file di amministrazione dell'installazione che richiede una minima interazione dell'utente con l'utility pkgadd. A meno che il pacchetto non richieda più spazio di quello disponibile sul sistema, l'utility pkgadd utilizza questo file e installa il pacchetto senza richiedere all'utente altre informazioni.
mail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck space=ask setuid=nocheck confiict=nocheck action=nocheck basedir=default
I pacchetti dispongono di parametri che controllano il modo in cui il loro contenuto viene distribuito e reso visibile su un sistema in cui sono presenti zone non globali. I parametri SUNW_PKG_ALLZONES , SUNW_PKG_HOLLOW e SUNW_PKG_THISZONE definiscono le caratteristiche dei pacchetti su un sistema in cui sono presenti zone. Per poter amministrare i pacchetti su un sistema in cui sono presenti zone non globali, è necessario impostare questi parametri.
La tabella seguente indica le quattro combinazioni valide per l'impostazione dei parametri dei pacchetti. Se si sceglie di impostare combinazioni diverse da quelle elencate nella tabella seguente, il pacchetto non può essere installato correttamente.
Verificare di aver impostato tutti e tre i parametri dei pacchetti. È possibile lasciare vuoti tutti e tre i parametri dei pacchetti. Lo strumento di gestione dei pacchetti interpreta la mancanza di un parametro relativo alla zona assegnandogli il valore “false”. Si consiglia comunque di impostare sempre questi parametri. Impostando i tre parametri dei pacchetti è possibile specificare il comportamento corretto dello strumento di gestione dei pacchetti durante l'installazione o la rimozione dei pacchetti.
SUNW_PKG_ALLZONES |
SUNW_PKG_HOLLOW |
SUNW_PKG_THISZONE |
Descrizione del pacchetto |
---|---|---|---|
false |
false |
false |
Si tratta dell'impostazione predefinita per i pacchetti in cui non è necessario specificare un valore per nessuno dei parametri relativi alle zone. Un pacchetto con queste caratteristiche può essere installato sia nella zona globale che in una zona non globale.
In entrambi i casi, l'intero contenuto del pacchetto è visibile in tutte le zone in cui è stato installato. |
false |
false |
true |
Un pacchetto con queste caratteristiche può essere installato sia nella zona globale che in una zona non globale. Se dopo l'installazione sono state create zone non globali, il pacchetto non viene propagato in queste zone non globali.
In entrambi i casi, l'intero contenuto del pacchetto è visibile nelle zone in cui è stato installato. |
true |
false |
false |
Un pacchetto con queste impostazioni può essere installato solo nella zona globale. Se viene eseguito il comando pkgadd, il pacchetto viene installato nella zona globale e in tutte le zone non globali. L'intero contenuto del pacchetto è visibile in tutte le zone. Nota – Qualsiasi tentativo di installare il pacchetto in una zona non globale non riesce. |
true |
true |
false |
Un pacchetto con queste caratteristiche può essere installato solo nella zona globale, da parte dell'amministratore globale. Quando viene eseguito il comando pkgadd, il contenuto del pacchetto viene installato completamente nella zona globale. Se i parametri di un pacchetto sono impostati in questo modo, il contenuto del pacchetto non viene installato in nessuna delle zone non globali. Vengono installate solo le informazioni necessarie per far apparire il pacchetto come installato in tutte le zone non globali. Questo consente l'installazione di altri pacchetti la cui installazione dipende dal pacchetto in oggetto. Per maggiori informazioni sui pacchetti “vuoti”, vedere il Capitolo 24, About Packages and Patches on a Solaris System With Zones Installed (Overview) in System Administration Guide: Solaris Containers-Resource Management and Solaris Zones. Ai fini del controllo delle dipendenze, il pacchetto appare come installato in tutte le zone.
Nota – Qualsiasi tentativo di installare il pacchetto in una zona non globale non riesce. |
Descrizione |
Per maggiori informazioni |
---|---|
Per maggiori informazioni sui pacchetti e sulle zone | |
Per informazioni generali sulle zone radice parziali e complete | |
Per informazioni sulle caratteristiche e sui parametri dei pacchetti | |
Per informazioni sulla visualizzazione dei valori dei parametri dei pacchetti |
I riferimenti seguenti forniscono informazioni generali sui pacchetti richiesti e sulla sintassi dei comandi.
Per informazioni più specifiche sui pacchetti richiesti e sulle definizioni dei termini |
Capitolo 6, Advanced Techniques for Creating Packages in Application Packaging Developer’s Guide |
Per informazioni di base sull'aggiunta e sulla rimozione dei pacchetti e sul file di amministrazione per l'installazione |
Capitolo 19, Managing Software (Overview) in System Administration Guide: Basic Administration |
Per informazioni dettagliate sui comandi specifici citati in questa appendice, vedere le seguenti pagine man |
dircmp(1), fssnap(1M), ps(1), o truss(1) pkgadd(1M), pkgchk(1M), o pkgrm(1M) |
Per una descrizione generale di Solaris Live Upgrade | |
Per una descrizione generale del metodo JumpStart personalizzato | |
Per una descrizione generale di Solaris Zones |