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 |