Guia de instalação do Oracle Solaris 10 9/10: instalação JumpStart personalizada e instalações avançadas

Apêndice B Requisitos do pacote SVR4 adicionais (referência)

Este apêndice é para o administrador de sistema que instala ou remove pacotes, especialmente pacotes terceiros. Cumprir esses requisitos do pacote ativa o seguinte:

Este capítulo contém as seções a seguir:

Prevenindo modificações do sistema operacional atual

Seguir os requisitos desta seção manterá o sistema operacional atual em execução inalterado.

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 root (/) substitutos, como o ambiente de inicialização inativo do Solaris Live Upgrade.

Pacotes podem incluir caminhos absolutos no arquivo pkgmap (mapa do pacote). Se esses arquivos existirem, eles são escritos relacionados à opção -R do comando pkgadd. Pacotes que contêm caminhos absolutos e relacionados (realocáveis) podem ser instalados em um sistema de arquivos raiz ( /), alternativo também. $PKG_INSTALL_ROOT é precedido pelos arquivos absolutos e realocáveis para que todos os caminhos sejam resolvidos apropriadamente ao instalar o pkgadd.

Utilizando o comando pkgadd -R

Pacotes sendo instalados utilizando a opção pkgadd -R ou sendo removidos utilizando a opção pkgrm -R não devem alterar o sistema atual em execução. Esse recurso é utilizando por JumpStart personalizado, Solaris Live Upgrade, regiões não globais e clientes sem disco.

Qualquer script de procedimento que estiver incluído nos pacotes que estão sendo instalados com o comando pkgadd, opção -R ou sendo removido com o comando pkgrm, opção -R não deve alterar o sistema atual em execução. Qualquer script de instalação fornecido deve fazer referência a qualquer arquivo ou diretório que é prefixado com a variável $PKG_INSTALL_ROOT. O pacote deve escrever todos os diretórios e arquivos com o prefixo $PKG_INSTALL_ROOT. O pacote não deve remover diretórios sem um 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 afirmação "if" Bourne shell 

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

Removendo 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 a visão geral $PKG_INSTALL_ROOT e $BASEDIR

$PKG_INSTALL_ROOT é o local do sistema de arquivos raiz (/) da máquina na qual será adicionada o pacote. A localização é configurada para o argumento -R do comando pkgadd. Por exemplo, se o comando a seguir for chamado e, em seguida, $PKG_INSTALL_ROOT torna-se /a durante a instalação do pacote.


# pkgadd -R /a SUNWvxvm

Pontos $BASEDIR para o diretório da base realocável onde objetos de pacote realocáveis são instalados. Apenas objetos realocáveis são instalados aqui. Objetos não realocáveis (aqueles que possuem caminhos absolutos no arquivo pkgmap) são sempre instalados em relação ao ambiente de inicialização, mas não em relação ao $BASEDIR em efeito. Se um pacote não possui objetos realocáveis, então o pacote é chamado de pacote absoluto (ou não realocável) e $BASEDIR é indefinido e não avaliado para scripts de procedimento de pacote.

Por exemplo, suponha que um arquivo de 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 o pacote for instalado com o comando a seguir, então ls é instalado em /a/opt/sbin/ls, mas ls2 é instalado como /a/sbin/ls2.


# pkgadd -R /a SUNWtest

Diretrizes para scripts escritos

O script de procedimento do pacote deve ser independente do sistema operacional atualmente executado para prevenir a modificação do sistema operacional. Scripts de procedimento definem ações que ocorrerem em um momento particular durante a instalação e remoção do pacote. Quatro scripts de procedimento podem ser criados com estes nomes predefinidos: preinstall, postinstall, preremove, e postremove.

Tabela B–2 Diretrizes para a criação de scripts

Diretrizes 

Afeta o Solaris Live Upgrade 

Afeta regiões não globais 

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

Scripts não devem iniciar ou terminar qualquer processo ou depender da saída dos comandos como ps ou truss, que são sistemas operacionais dependentes e reportam informação sobre o sistema atual em execução.

Os scripts são livres para utilizar outros comandos padrão UNIX como expr, cp, ls e outros comandos que facilitam criar os scripts de shell.

Qualquer comando que um script chamar deve estar disponível em todas as versões suportadas, uma vez que o pacote deve executar em todas as versões. Portanto, não é possível utilizar comandos que foram adicionados ou removidos depois da versão Solaris 8.  

Para verificar se uma opção ou um comando específico é suportado na versão do Solaris 8, 9 ou 10, consulte a versão específica do Livro de respostas do manual de referência do Solaris em http://docs.sun.com .

 

Mantendo a compatibilidade de cliente sem disco

Pacotes não devem executar comandos emitidos pelo próprio pacote. Isso é para manter a compatibilidade com cliente sem disco e evitar executar comandos que possam requisitar bibliotecas compartilhadas que ainda não estão instaladas.

Verificando pacotes

Todos os pacotes devem passar na validação pkgchk. Depois da criação e antes da instalação de um pacote, é necessário verificá-lo com o comando a seguir.


# pkgchk -d dir_name pkg_name
dir_name

Especifica o nome do diretório onde o pacote reside

pkg_name

Especifica o nome do pacote


Exemplo B–1 Testando um pacote

Depois da criação de um pacote, é necessário testá-lo na sua instalação em um local de sistema de arquivos raiz alternados (/) ao utilizar a opção - R dir_name para pkgadd. Depois da instalação do pacote, é necessário verificá-lo 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 você deve emitir o comando a seguir.


# pkgchk -d /export SUNWvxvm

Nenhum erro deve ser exibido.


Outros comandos podem verificar o pacote quando você estiver criando, modificando ou excluindo 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}

Prevenindo a interação do usuário ao instalar ou atualizar

Pacotes devem ser adicionados ou removidos sem o usuário receber solicitações para informação ao utilizar as seguintes utilidades padrão do Solaris.

Para testar o pacote a fim de garantir que instalará sem nenhuma 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 para ser utilizado no lugar do arquivo de administração padrão. Utilizar o arquivo padrão pode resultar que o usuário seja solicitado para mais informações. É possível criar um arquivo de administração indicado para pkgadd que deve ignorar essas verificações e instalar o pacote sem a confirmação do usuário. Para 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 requisita pequenas interações do usuário com a utilidade pkgadd. A menos que o pacote precise de mais espaço que o disponível no sistema, a utilidade pkgadd utiliza este arquivo e instala o pacote sem solicitar o usuário para mais informações.

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

Configurando os 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. Esses parâmetros devem ser configurados para que os pacotes possam ser gerenciados 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 configurar combinações que não estão listadas na tabela a seguir, estas configurações são inválidas e resultam na falha da instalação do 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 do pacote interpretam um parâmetro de pacote de região ausente como se a configuração fosse "falsa," mas não configurar os parâmetros é desencorajado com ênfase. 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 válidas do parâmetro de pacote para regiões

Configuração SUNW_PKG_ALLZONES

Configuração SUNW_PKG_HOLLOW

Configuração SUNW_PKG_THISZONE

Descrição de pacote 

falso 

falso 

falso 

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. 

falso 

falso 

verdadeiro 

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. 

verdadeiro 

falso 

falso 

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.


verdadeiro 

verdadeiro 

falso 

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 mais informações sobre pacotes "vazios", consulte 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 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 mais detalhes sobre 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 visão geral de regiões raiz esparsas inteiras 

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 informações sobre parâmetros e características do pacote 

pkginfo(4)

Para informações sobre exibição de valores de parâmetros de pacote 

pkgparam(1)

Para informações detalhadas

As referências a seguir fornecem informações detalhadas sobre requisitos de pacote e sintaxe de comando específica.

Para mais informações específicas sobre requisitos de pacote e definição de terminologia 

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

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

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

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

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

Para uma visão geral do Solaris Live Upgrade 

Capítulo 2, Solaris Live Upgrade (visão geral), no Oracle Guia de instalação do Solaris 10 9/10: Solaris Live Upgrade e planejamento da atualização

Para uma visão geral do JumpStart personalizado 

Capítulo 2Personalização do JumpStart (visão geral)

Para uma visão 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