JavaScript is required to for searching.
Ignorar Links de Navegao
Sair do Modo de Exibio de Impresso
Guia do desenvolvedor de empacotamento de aplicativos     Oracle Solaris 10 1/13 Information Library (Português (Brasil))
search filter icon
search icon

Informação sobre o documento

Prefácio

1.  Criando um Pacote

2.  Construindo um Pacote

3.  Melhorando a funcionalidade de um pacote (Tarefas)

4.  Verificando e transferindo um pacote

5.  Estudos de caso de criação de pacote

6.  Técnicas avançadas para a criação de pacotes

Especificando o diretório base

O arquivo de padrões administrativos

Conformando-se com a incerteza

Usando o parâmetro BASEDIR

Usando diretórios base paramétricos

Exemplos -- Usando diretórios base paramétricos

O arquivo pkginfo

O arquivo pkgmap

Gerenciando o diretório base

Acomodando a relocação

Deslocando diretórios base

Usando o parâmetro BASEDIR

O arquivo pkginfo

O arquivo pkgmap

Exemplo -- Scripts de análise que deslocam um BASEDIR

O script request

O script checkinstall

Usando caminhos paramétricos relativos

O arquivo pkginfo

O arquivo pkgmap

Exemplo -- Um script request que desloca um caminho paramétrico relativo

Oferecendo suporte a relocação em um ambiente heterogêneo

Abordagem tradicional

Pacotes relocáveis

Exemplo - Um pacote relocável tradicional

O arquivo pkginfo

O arquivo pkgmap

Pacotes absolutos

Exemplo - Um pacote absoluto tradicional

O arquivo pkgmap

Pacotes compostos

Exemplo - Uma solução tradicional

O arquivo pkginfo

O arquivo pkgmap

Não tradicional

Outra consideração sobre os pacotes compostos

Fazendo nomes de caminho absolutos parecer relocáveis

Exemplo -- Modificando um arquivo

Descrição

Implementação

Exemplo

Exemplo -- Criando um novo arquivo

Descrição

Implementação

Exemplo

Exemplo -- Um pacote composto

O arquivo pkginfo

O arquivo pkgmap

Tornando os pacotes instaláveis remotamente

Exemplo - Instalando em um sistema cliente

Exemplo - Instalando em um sistema servidor ou independente

Exemplo - Montando sistemas de arquivos compartilhados

Atualizando com patches os pacotes

O script checkinstall

O script preinstall

O script de ação de classe

O script postinstall

O script patch_checkinstall

O script patch_postinstall

Atualizando pacotes

O script request

O script postinstall

Criando pacotes de arquivo de classe

Estrutura do diretório do pacote de arquivo

Palavras-chave para oferecer suporte aos pacotes de arquivo de classe

O utilitário faspac

Glossário

Índice

Atualizando pacotes

O processo de atualização de um pacote é muito diferente do processo de substituição de um pacote. Ao mesmo tempo em que há ferramentas especiais que oferecem suporte à atualização de pacotes padrão entregues como parte do sistema operacional do Oracle Solaris, um pacote não incorporado pode estar destinado a oferecer suporte a sua própria atualização — vários exemplos anteriores descreveram os pacotes pensados para o futuro e que controlam o método exato de instalação sob a direção do administrador. Você também pode criar um script request para oferecer suporte à atualização direta de um pacote. Se o administrador optar por instalar um pacote de modo a substituir completamente o outro, sem deixar rastro de arquivos obsoletos, os scripts de pacote podem fazê-lo.

O script request e o script postinstalldeste exemplo oferecem um pacote atualizável simples. O script request se comunica com o administrador e configura um arquivo simples no diretório /tmp para remover a instância de pacote antiga. (Embora o script request crie um arquivo (que é proibido), não há problema porque todos têm acesso ao /tmp).

O script postinstall executa, então, o script shell em /tmp, que executa o comando pkgrm necessário contra o pacote antigo e, em seguida, se auto-exclui.

Este exemplo ilustra uma atualização básica. Tem menos de cinqüenta linhas de código incluindo algumas mensagens bastante longas. Pode ser estendido para que devolva a atualização ou realize outras transformações principais no pacote conforme requerido pelo criador.

O design de uma opção de atualização da interface de usuário deve estar absolutamente segura de que o administrador está totalmente ciente do processo e solicitou ativamente a atualização em vez da instalação paralela. Não há nada de errado em realizar uma operação complexa como a atualização contanto que a interface de usuário permita que a operação seja realizada com clareza.

O script request

# request script
control an upgrade installation
 
PATH=/usr/sadm/bin:$PATH
UPGR_SCRIPT=/tmp/upgr.$PKGINST
 
UPGRADE_MSG="Do you want to upgrade the installed version ?"
 
UPGRADE_HLP="If upgrade is desired, the existing version of the \
    package will be replaced by this version. If it is not \
    desired, this new version will be installed into a different \
    base directory and both versions will be usable."
 
UPGRADE_NOTICE="Conflict approval questions may be displayed. The \
    listed files are the ones that will be upgraded. Please \
    answer \"y\" to these questions if they are presented."
 
pkginfo -v 1.0 -q SUNWstuf.\*
 
if [ $? -eq 0 ]; then
      # See if upgrade is desired here
      response=`ckyorn -p "$UPGRADE_MSG" -h "$UPGRADE_HLP"`
      if [ $response = "y" ]; then
            OldPkg=`pkginfo -v 1.0 -x SUNWstuf.\* | nawk ' \
            /SUNW/{print $1} '`
            # Initiate upgrade
            echo "PATH=/usr/sadm/bin:$PATH" > $UPGR_SCRIPT
            echo "sleep 3" >> $UPGR_SCRIPT
            echo "echo Now removing old instance of $PKG" >> \
            $UPGR_SCRIPT
            if [ ${PKG_INSTALL_ROOT} ]; then
                  echo "pkgrm -n -R $PKG_INSTALL_ROOT $OldPkg" >> \
                  $UPGR_SCRIPT
            else
                  echo "pkgrm -n $OldPkg" >> $UPGR_SCRIPT
            fi
            echo "rm $UPGR_SCRIPT" >> $UPGR_SCRIPT
            echo "exit $?" >> $UPGR_SCRIPT
 
            # Get the original package's base directory
            OldBD=`pkgparam $OldPkg BASEDIR`
            echo "BASEDIR=$OldBD" > $1
            puttext -l 5 "$UPGRADE_NOTICE"
       else
             if [ -f $UPGR_SCRIPT ]; then
                   rm -r $UPGR_SCRIPT
             fi
       fi
fi
 
exit 0

O script postinstall

# postinstall
to execute a simple upgrade
 
PATH=/usr/sadm/bin:$PATH
UPGR_SCRIPT=/tmp/upgr.$PKGINST
 
if [ -f $UPGR_SCRIPT ]; then
      sh $UPGR_SCRIPT &
fi
 
exit 0