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)) |
3. Melhorando a funcionalidade de um pacote (Tarefas)
4. Verificando e transferindo um pacote
5. Estudos de caso de criação de pacote
Solicitando entrada do administrador
Criando um arquivo na instalação e salvando-o durante a remoção
O script de ação de classe i.admin
Definindo compatibilidades e dependências de pacotes
Modificando um arquivo usando classes padrão e scripts de ação de classe
O script de ação de classe de instalação i.inittab
O script de ação de classe de remoção r.inittab
Modificando um arquivo usando a classe sed e um script postinstall
O script de ação de classe sed (/etc/inittab)
Modificando arquivos crontab durante a instalação
O script de ação de classe de instalação i.cron
O script de ação de classe de remoção r.cron
Instalando e removendo um driver com scripts de procedimento
Instalando um driver usando a classe sed e scripts de procedimento
O script de ação de classe sed (/etc/devlink.tab)
O script de instalação postinstall
Este estudo de caso modifica um arquivo que existe na máquina de instalação durante a instalação do pacote. Usa um dos três métodos de modificação. Os outros dois métodos estão descritos em Modificando um arquivo usando classes padrão e scripts de ação de classe e Modificando um arquivo usando a classe sed e um script postinstall. O arquivo modificado é /etc/inittab.
Este estudo de caso demonstra como usar a classe build. Para obter mais informações sobre a classe build, consulte O script de classe build.
Esta abordagem de modificação de /etc/inittab usa a classe build. Um script de classe build é executado com um script shell e sua saída se torna a nova versão do arquivo que está sendo executado. Em outras palavras, o arquivo de dados /etc/inittab distribuído com este pacote será executado e a saída de tal execução será /etc/inittab.
O script de classe build é executado durante a instalação e a remoção do pacote. O argumento install é passado para o arquivo se ele estiver sendo executado no tempo de instalação. Observe no script de classe build de amostra que as ações de instalação são definidas ao testar este argumento.
Para editar /etc/inittab usando a classe build, você deve realizar as tarefas seguintes:
Definir o arquivo build no arquivo prototype.
A entrada do arquivo build no arquivo prototype deve colocá-lo na classe build e definir seu tipo de arquivo como e. Certifique-se de que o parâmetro CLASSES do arquivo pkginfo esteja definido como build.
Criar o script de classe build.
O script de classe build de amostra realiza os seguintes procedimentos:
Edita o arquivo /etc/inittab para remover as alterações existentes deste pacote. Observe que o nome do arquivo /etc/inittab está definido de modo determinado e inalterável no comando sed.
Se o pacote estiver sendo instalado, adiciona a nova linha ao final de /etc/inittab. Uma marca de comentário é incluída na nova entrada para descrever de onde tal entrada provém.
Executa o comando init q.
Esta solução trata das desvantagens descritas nos estudos de caso em Modificando um arquivo usando classes padrão e scripts de ação de classe e em Modificando um arquivo usando a classe sed e um script postinstall. É necessário somente um arquivo breve (além dos arquivos pkginfo e prototype). O arquivo funciona com várias instâncias de um pacote desde que o parâmetro PKGINST seja usado, e o script postinstall não é necessário desde que o comando init q possa ser executado da classe build.
PKG=case6 NAME=Case Study #6 CATEGORY=applications BASEDIR=/opt ARCH=SPARC VERSION=Version 1d05 CLASSES=build
i pkginfo e build /etc/inittab ? ? ?
# PKGINST parameter provided by installation service # remove all entries from the existing table that # are associated with this PKGINST sed -e "/^[^:]*:[^:]*:[^:]*:[^#]*#$PKGINST$/d" /etc/inittab || exit 2 if [ "$1" = install ] then # add the following entry to the table echo "rb:023456:wait:/usr/robot/bin/setup #$PKGINST" || exit 2 fi /sbin/init q || exit 2 exit 0