Oracle Guia de instalação do Solaris 10 9/10: Solaris Live Upgrade e planejamento da atualização

Impedir Alteração do sistema operacional atual.

Seguir os requisitos nesta seção mantém inalterado o sistema operacional atualmente em execução.

Utilizando caminhos absolutos

Para a instalação de um sistema operacional ser bem sucedida, os pacotes devem reconhecer e respeitar corretamente os sistemas de arquivos da raiz alternativa (/), tais como o Solaris Live Upgrade um ambiente de inicialização inativo.

Os pacotes podem incluir caminhos absolutos em seus arquivos pkgmap (mapa de pacotes). Se estes arquivos existirem, eles são gravados em relação à opção-Rdo comandopkgadd. Os pacotes que contenham ambos os caminhos absolutos e relativos (relocalizável) também podem ser instalados em uma sistema de arquivos de raiz alternativa (/). $PKG_INSTALL_ROOT é incluído no início de arquivos absolutos e relocalizáveis para que todos os caminhos sejam resolvidos apropriadamente ao estiverem sendo instalados por pkgadd.

Utilizando o comando pkgadd -R

Os pacotes que estão sendo instalados utilizando a opção pkgadd -R ou que estão sendo excluídos utilizando a opção pkgrm -R não devem alterar o atual sistema em execução. Esse recurso é utilizado por JumpStart personalizado, Solaris Live Upgrade, regiões não-globais e um cliente sem disco.

Quaisquer scripts de procedimento que estão incluídos nos pacotes sendo instalados com o comando pkgadd opção -R ou que estão sendo excluídos utilizando o comando pkgrm opção -R não devem alterar o atual sistema em execução. Quaisquer scripts de instalação fornecidos devem fazer referência a qualquer diretório ou arquivo que é prefixado com a variável $PKG_INSTALL_ROOT. O pacote deve gravar todos os diretórios e arquivos com o prefixo $PKG_INSTALL_ROOT. O pacote não deve excluir diretórios sem o prefixo $PKG_INSTALL_ROOT.

Tabela B–1 fornece exemplos de sintaxe de script.

Tabela B–1 Exemplos de sintaxe de script de instalação

Tipo de script 

Sintaxe correta 

Sintaxe incorreta 

Fragmentos de declaração "se" Bourne shell  

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

Excluindo um arquivo 

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

Alterando um arquivo 

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

Diferenças entre $PKG_INSTALL_ROOT e vista geral $BASEDIR

$PKG_INSTALL_ROOT é a localização do sistema de arquivos raiz(/) da máquina à qual o pacote está sendo adicionado. O local é configurado para o argumento -R do comando pkgadd. Por exemplo, se o seguinte comando for invocado, então $PKG_INSTALL_ROOT torna-se /a durante a instalação do pacote.


# pkgadd -R /a SUNWvxvm

$BASEDIR aponta para o diretório base relocalizável no qual os objetos de pacote relocalizáveis estão instalados. Apenas objetos relocalizáveis são instalados aqui. Objetos não-relocalizáveis (aqueles que possuem caminhos absolutos no arquivo pkgmap) são sempre instalados em relação ao ambiente de inicialização inativo, mas não em relação ao $BASEDIR em vigor. Se um pacote não possui objetos relocalizáveis, então diz-se que o pacote é um pacote absoluto (ou não-relocalizável) e $BASEDIR é indefinido e não está disponível para empacotar scripts de procedimento.

Por exemplo, suponha que o arquivo do pacote pkgmap possua duas entradas:


1 f none sbin/ls 0555 root sys 3541 12322 1002918510
1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332

O arquivo pkginfo possui uma especificação para $BASEDIR :


BASEDIR=/opt

Se este pacote está instalado com o seguinte comando, então, ls está instalado em /a/opt/sbin/ls, mas ls2 está instalado como /a/sbin/ls2.


# pkgadd -R /a SUNWtest

Diretrizes para escrever scripts

Seu pacote de scripts de procedimento deve ser independente do sistema operacional atualmente em execução para impedir a modificação do mesmo. Os scripts de procedimento definem as ações que ocorrem em determinados pontos durante a instalação e remoção do pacote. Quatro scripts de procedimento podem ser criados com esses nomes pré-definidos:preinstall, postinstall, preremove, e postremove.

Tabela B–2 Diretrizes para criar scripts

Diretrizes 

Afeta o Solaris Live Upgrade 

Afeta as regiões não-globais 

Scripts devem ser gravados em Bourne shell (/bin/sh). Bourne shell é o intérprete que é utilizado pelo comando pkgadd para executar os scripts de procedimento.

Os scripts não devem iniciar ou parar quaisquer procedimentos ou dependem da saída de comandos tais como ps ou truss, que são sistemas operacionais dependentes e relatam informações sobre o atual sistema em execução.

Scripts são gratuitos para utilizar com outros comandos UNIX padrões tais comoexpr,cpls e outros comandos que facilitam o script do shell.

Todos os comandos que o script invoca devem estar disponíveis em todas as versões com suporte, uma vez que o pacote deve ser executado em todas as versões. Portanto, não é possível utilizar os comandos que foram adicionados ou removidos após a versão Solaris 8.  

Para verificar se um comando específico ou opção é suportado em uma versão do Solaris 8, 9 ou 10, consulte a versão específica do Solaris Reference Manual AnswerBook em http://docs.sun.com .

 

Mantendo a compatibilidade do cliente sem disco

Os pacotes não devem executar comandos emitidos pelo próprio pacote. Isto é para manter a compatibilidade do cliente sem disco e evitar comandos em execução que possam exigir as bibliotecas compartilhadas que ainda não estão instaladas.

Verificando pacotes

Todos os comandos devem passar a validação pkgchk. Após um pacote ser criado e antes de ser instalado, ele deve ser verificado com o seguinte comando.


# pkgchk -d dir_name pkg_name
dir_name

Especifica o nome do diretório onde reside o pacote

pkg_name

Especifica o nome do pacote


Exemplo B–1 Testando um pacote

Depois de um pacote ser criado, ele deve ser testado ao instalá-lo em um local de sistema de arquivos raiz alternativo (/) utilizando a opção - R dir_name para pkgadd. Depois que o pacote for instalado, ele deve ser verificado quanto à correção, utilizando pkgchk, como neste exemplo.


# pkgadd -d . -R /a SUNWvxvm
# pkgchk -R /a SUNWvxvm

Nenhum erro deve ser exibido.



Exemplo B–2 Testando um pacote em /export/SUNWvxvm

Se um pacote existe em /export/SUNWvxvm, então é necessário emitir o seguinte comando.


# pkgchk -d /export SUNWvxvm

Nenhum erro deve ser exibido.


Outros comandos podem verificar o pacote quando você criar, modificar e excluir arquivos. Os comandos a seguir são alguns exemplos.


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