Seguir os requisitos nesta seção mantém inalterado o sistema operacional atualmente em execução.
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.
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
$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 |
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. |
X |
X |
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. |
X |
X |
Scripts são gratuitos para utilizar com outros comandos UNIX padrões tais comoexpr,cpls e outros comandos que facilitam o script do shell. |
X |
X |
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 . |
X |
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.
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 |
Especifica o nome do diretório onde reside o pacote
Especifica o nome do 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.
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.
Por exemplo, os comandos dircmp ou fssnap podem ser utilizados para verificar se os pacotes se comportam corretamente.
Além disso, o comando ps pode ser utilizado para testar a conformidade daemon, assegurando-se daemons não são interrompidos ou iniciados pelo pacote.
Os comandos truss, pkgadd -v epkgrm podem testar a conformidade da instalação do pacote em tempo de execução, mas pode não funcionar em todas as situações. No exemplo a seguir, o comando truss retira todos os acessos de somente leitura, não-$TEMPDIR e mostra apenas acessos que não são somente leitura a caminhos que não estão situados dentro do ambiente de inicialização inativo especificado.
# 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} |