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

Apêndice B Requisitos de embalagem SVR4 adicionais (Referência)

Este apêndice é para os administradores de sistema que instalam ou removem pacotes, especialmente pacotes de terceiros. Seguir esses requisitos de empacotagem permite o seguinte:

Este capítulo contém os seguintes tópicos.

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}

Impedindo interação de usuário ao instalar ou atualizar

Os pacotes devem ser adicionados ou removidos sem que o usuário seja solicitado a fornecer informações ao utilizar os utilitários padrão do Solaris a seguir.

Para testar um pacote para assegurar-se de que ele irá instalar, sem interação do usuário, um novo arquivo de administração pode ser configurado com o comando pkgadd opção - a. A opção -a define um arquivo de administração de instalação a ser utilizado no lugar do arquivo de administração padrão. Utilizar o arquivo padrão pode resultar no usuário sendo solicitado a fornecer mais informações. É possivel criar um arquivo de administração, que indica para pkgadd que deveria ignorar essas verificações e instalar o pacote sem a confirmação do usuário. Para obter detalhes, consulte a página do manual admin(4) ou pkgadd(1M).

Os exemplos a seguir mostram como o comando pkgadd utiliza o arquivo de administração.


Exemplo B–3 Arquivo de administração de instalação

A seguir temos um exemplo de um arquivo de administração de instalação que exige uma pequena interação do usuário com o utilitáriopkgadd. A menos que o pacote necessite de mais espaço do que está disponível no sistema, o utilitário pkgadd utiliza esse arquivo e instala o pacote sem solicitar mais informações do usuário.

mail=
instance=overwrite
partial=nocheck
runlevel=nocheck
idepend=nocheck
space=ask
setuid=nocheck
confiict=nocheck
action=nocheck
basedir=default

Definindo parâmetros de pacote para regiões

Pacotes têm parâmetros que controlam como seu conteúdo é distribuído e tornado visível em um sistema com regiões não globais instaladas. Os parâmetros de pacote SUNW_PKG_ALLZONES , SUNW_PKG_HOLLOW e SUNW_PKG_THISZONE definem as características de pacotes em um sistema com regiões instaladas. Estes parâmetros devem ser definidos para que os pacotes possam ser administrados em um sistema com regiões não-globais.

A tabela abaixo lista as quatro combinações válidas para definir parâmetros de pacote. Se escolher definir combinações que não estejam listadas na tabela abaixo, essas configurações serão inválidas e resultará na falha ao instalar o pacote.


Observação –

Assegure-se de ter definido todos os três parâmetros de pacote. Você pode deixar em branco todos os três parâmetros de pacote. As ferramentas de pacote interpretam um parâmetro faltante do pacote de região como se a configuração fosse "falsa", mas não é recomendável não definir os parâmetros. Ao definir todos os três parâmetros de pacote, você especifica o comportamento exato que as ferramentas de pacote devem exibir ao instalar ou remover o pacote.


Tabela B–3 Configurações de parâmetro de pacote válidos para regiões

Configuração SUNW_PKG_ALLZONES

Configuração SUNW_PKG_HOLLOW

Configuração SUNW_PKG_THISZONE

Descrição de pacote 

false 

false 

false 

Esta é a configuração padrão para pacotes que não especificam valores para todos os parâmetros de pacote da região. 

Um pacote com essas configurações pode ser instalado na região global ou em uma região não global.  

  • Se o comando pkgadd for executado na região global, o pacote será instalado na região global e em todas as regiões não globais.

  • Se o comando pkgadd for executado em uma região não global, o pacote será instalado somente na região não global.

Em ambos os casos, o conteúdo inteiro do pacote será visível em todas as regiões em que o pacote estiver instalado. 

false 

false 

true 

Um pacote com essas configurações pode ser instalado na região global ou em uma região não global. Se novas regiões não globais forem criadas após a instalação, o pacote não será propagado para essas novas regiões não globais. 

  • Se o comando pkgadd for executado na região global, o pacote será instalado somente na região global.

  • Se o comando pkgadd for executado em uma região não global, o pacote será instalado somente na região não global.

Em ambos os casos, o conteúdo inteiro do pacote será visível na região em que o pacote estiver instalado. 

true 

false 

false 

Um pacote com estas configurações pode ser instalado somente na região global. Quando o comando pkgadd é executado, o pacote é instalado na região global e em todas as regiões não globais. O conteúdo inteiro do pacote é visível em todas as regiões.


Observação –

Qualquer tentativa de instalar o pacote em uma região não global falha.


true 

true 

false 

Uma pacote com estas configurações pode somente ser instalado na região global, pelo administrador global. Quando o comando pkgadd é executado, o conteúdo do pacote é instalado completamente na região global. Se um pacote tiver os parâmetros de pacote definidos para estes valores, o conteúdo do pacote não será entregue em qualquer região não global. Somente as informações de instalação de pacote necessárias para fazer o pacote parecer estar instalado são instaladas em todas as regiões não globais. Isso permite a instalação de outros pacotes a serem instalados que dependem desse pacote. Para obter mais informações sobre o pacotes "vazios", consulteCapítulo 25, Sobre pacotes e correções em um sistema do Solaris com regiões instaladas (visão geral), no Guia de administração do sistema: gerenciamento de recursos Oracle Solaris Containers e Oracle Solaris Zones.

Para fins de verificação de dependência de pacote, o pacote parece estar instalado em todas as regiões. 

  • Na região global, o conteúdo inteiro do pacote é visível.

  • Em regiões não globais de raiz inteira, o conteúdo inteiro do pacote não é visível.

  • Quando uma região não global herda um sistema de arquivos da região global, um pacote instalado nesse sistema de arquivos é visível em uma região não global. Todos os outros arquivos entregues pelo pacote não são visíveis dentro da região não global.

    Por exemplo, uma região não global de raiz esparsa compartilha determinados diretórios com a região global. Esses diretórios são somente leitura. Regiões não globais de raiz esparsa compartilham o sistema de arquivos /platform entre outros. Outro exemplo são pacotes que entregam arquivos relevantes somente para o hardware de inicialização.


Observação –

Qualquer tentativa de instalar o pacote em uma região não global falha.


Descrição 

Para obter mais informações 

Para obter mais detalhes sobre o pacotes e regiões 

Capítulo 25, Sobre pacotes e correções em um sistema do Solaris com regiões instaladas (visão geral), no Guia de administração do sistema: gerenciamento de recursos Oracle Solaris Containers e Oracle Solaris Zones

Para uma vista geral de regiões escassas e de raiz inteira 

Capítulo 16, Introdução ao Solaris Zones, no Guia de administração do sistema: gerenciamento de recursos Oracle Solaris Containers e Oracle Solaris Zones

Para obter informações sobre as características e os parâmetros do pacote 

pkginfo(4)

Para obter informações sobre como exibir os valores dos parâmetros do pacote 

pkgparam(1)

Para obter informações em segundo plano

As referências a seguir fornecem informações em segundo plano sobre os requisitos de empacotamento e sintaxe de comando específico.

Para obter informações mais específicas sobre os requisitos de empacotamento e definições da terminologia 

Capítulo 6, Técnicas avançadas para a criação de pacotes, no Guia do Desenvolvedor de Empacotamento de Aplicativos

Para obter informações básicas sobre como adicionar e excluir pacotes e o arquivo de administração de instalação 

Capítulo 20, Managing Software (Overview), no System Administration Guide: Basic Administration

Para obter informações detalhadas sobre os comandos específicos que são referenciadas neste apêndice, consulte estas páginas do manual 

dircmp(1), fssnap(1M), ps(1), or truss(1) pkgadd(1M), pkgchk(1M), or pkgrm(1M)

Para uma vista geral do Solaris Live Upgrade 

Capítulo 2Solaris Live Upgrade (visão geral)

Para uma vista geral do JumpStart personalizado 

Capítulo 2, Personalização do JumpStart (visão geral), no Guia de instalação do Oracle Solaris 10 9/10: instalação JumpStart personalizada e instalações avançadas

Para uma vista geral do Solaris Zones 

Capítulo 16, Introdução ao Solaris Zones, no Guia de administração do sistema: gerenciamento de recursos Oracle Solaris Containers e Oracle Solaris Zones