Guia do Desenvolvedor de Empacotamento de Aplicativos

Capítulo 1 Criando um pacote

Antes de construir um pacote, você precisa saber que arquivos precisam ser criados e que comandos precisam ser executados. Também é necessário levar em consideração os requisitos do software de aplicativos e as necessidades dos seus clientes. Seus clientes são os administradores que instalarão seu pacote. Este capítulo trata dos arquivos, comandos e critérios que você deveria conhecer e considerar antes de construir um pacote.

A lista abaixo traz as informações encontradas neste capítulo.

Onde encontrar tarefas de empacotamento

Use estes mapas de tarefas para obter as instruções detalhadas de construção e verificação de pacotes.

O que são pacotes?

O software de aplicativos é distribuído em unidades denominadas pacotes. Um pacote é um conjunto de arquivos e diretórios necessários para um produto de software. Um pacote é geralmente criado e construído por um desenvolvedor de aplicativos depois de terminar de desenvolver o código do aplicativo. Um produto de software precisa ser construído em um ou mais pacotes para que possa ser facilmente transferido para um meio de distribuição. Depois, o produto de software pode ser produzido em massa e instalado por administradores.

Um pacote é um conjunto de arquivos e diretórios em um formato definido. Este formato adapta-se à ABI (Application Binary Interface), que é um suplemento de System V Interface Definition.

Componentes do pacote

Os componentes de um pacote se dividem em duas categorias.

Os arquivos de controle também estão divididos em duas categorias: arquivos de informação e scripts de instalação. Alguns arquivos de controle são obrigatórios. Alguns arquivos de controle são opcionais.

Para empacotar seus aplicativos, você deve primeiro criar os componentes obrigatórios e os componentes opcionais que farão parte do seu pacote. Você pode, então, construir o pacote usando o comando pkgmk.

Para construir um pacote, você deve fornecer:

A ilustração seguinte descreve o conteúdo de um pacote.

Figura 1–1 O conteúdo de um pacote

O contexto anterior e o contexto seguinte descrevem o gráfico.

Componentes de pacote necessários

Você deve criar os seguintes componentes antes de construir o pacote:

Componentes de pacote opcionais

Arquivos de informação do pacote

Você pode incluir quatro arquivos de informação de pacote opcionais no seu pacote:

Cada arquivo de informação do pacote deve ter uma entrada no arquivo prototype. Consulte Criando arquivos de informação para obter mais informações sobre a criação desses arquivos.

Scripts de instalação do pacote

Os scripts de instalação não são necessários. No entanto, você pode fornecer scripts que realizem ações personalizadas durante a instalação do seu pacote. Um script de instalação tem as seguintes características:

Os quatro tipos de script são os seguintes:

Consulte Criando scripts de instalação para obter mais informações sobre os scripts de instalação.

Considerações antes de construir um pacote

Antes de construir um pacote, é preciso decidir se o produto terá um ou mais pacotes. Observe que muitos pacotes pequenos demoram mais para serem instalados que um pacote grande. Embora criar um único pacote seja uma boa idéia, às vezes nem sempre é possível. Se decidir construir mais de um pacote, é preciso determinar como segmentar o código do aplicativo. Esta seção oferece uma lista de critérios para serem usados quando se está planejando construir um pacote.

Muitos dos critérios de empacotamento apresentam equiparações entre eles. Satisfazer todos os requisitos igualmente é muitas vezes difícil. Estes critérios são apresentados em ordem de importância. No entanto, esta seqüência serve apenas como um guia flexível dependendo das circunstâncias. Embora cada critério seja importante, depende de você otimizar estes requisitos para produzir um bom conjunto de pacotes.

Para obter mais idéias de criação, consulte o Capítulo 6Técnicas avançadas para a criação de pacotes.

Fazer com que os pacotes possam ser instalados remotamente

Todos os pacotes devem poder ser instalados remotamente. Ser remotamente instalável significa que o administrador que está instalando seu pacote pode instalá-lo em um sistema cliente, não necessariamente no sistema de arquivos raiz (/) onde o comando pkgadd está sendo executado.

Otimizar as configurações servidor-cliente

Leve em consideração os vários tipos de configurações de software do sistema (por exemplo, servidor e sistema independentes) ao dispor os pacotes. Um bom design de empacotamento divide os arquivos afetados para otimizar a instalação de cada tipo de configuração. Por exemplo, o conteúdo dos sistemas de arquivos raiz (/) e /usr deve ser segmentado para que as configurações do servidor possam ser facilmente suportadas.

Pacotes por limites funcionais

Os pacotes devem ser independentes e identificados claramente com um conjunto de funcionalidades. Por exemplo, um pacote que contém UFS deve conter todos os utilitários UFS e estar limitado somente a binários UFS.

Os pacotes devem estar organizados do ponto de vista do cliente dentro de unidades funcionais.

Pacotes com limites de royalty

Use códigos que necessitam pagamentos de royalty devido a acordos contratuais em um pacote dedicado ou grupo de pacotes. Não disperse o código em mais pacotes do que o necessário.

Pacotes por dependências de sistema

Mantenha os binários dependentes de sistemas em pacotes dedicados. Por exemplo, o código do kernel deve estar em um pacote dedicado, com cada arquitetura de implementação formada por uma instância diferente de pacote. Esta regra também se aplica a binários de arquiteturas diferentes. Por exemplo, os binários de um sistema SPARC devem estar em um pacote e os binários de um sistema x86 devem estar em outro pacote.

Eliminar sobreposições em pacotes

Ao construir pacotes, elimine os arquivos duplicados sempre que possível. A duplicação desnecessária de arquivos causa dificuldades de suporte e versão. Se o seu produto tiver vários pacotes, compare repetidamente o conteúdo desses pacotes para procurar arquivos duplicados.

Pacotes com limites de localização

Itens específicos de localização devem estar em um pacote próprio. Um modelo de empacotamento ideal deve ter as localizações de um produto distribuídas como um pacote por localidade. Infelizmente, em alguns casos os limites organizacionais entram em conflito com os critérios de limites funcionais e de produto.

Os padrões internacionais também podem ser distribuídos em um pacote. Este design isola os arquivos necessários nas alterações de localizações e padroniza o formato de distribuição dos pacotes de localização.

Pacotes do Image Packaging System (IPS)

Este documento trata dos pacotes SVR4. Para a distribuição no sistema operacional OpenSolaris, considere a possibilidade de usar os pacotes do Image Packaging System (IPS). O sistema operacional OpenSolaris oferece suporte a pacotes SVR4 e IPS. O software IPS interage com os repositórios de rede e usa o sistema de arquivos ZFS. No sistema operacional OpenSolaris, você pode publicar pacotes SVR4 em um repositório IPS com o comando pkgsend(1).

A tabela a seguir apresenta uma comparação dos comandos dos sistemas de empacotamento SVR4 e IPS. Para obter informações detalhadas sobre o IPS, consulte Getting Started With the Image Packaging System.

Tabela 1–1 Tarefas de empacotamento: IPS e SVR4

Tarefa 

Comando IPS 

Comando SVR4 

Instalar um novo pacote 

pkg install

pkgadd -a

Exibir informações sobre o estado de um pacote 

pkg list

pkginfo

Verificar a instalação correta de um pacote 

pkg verify

pkgchk -v

Exibir informações sobre um pacote 

pkg info

pkginfo -l

Listando o conteúdo de um pacote 

pkg contents

pkgchk -l

Desinstalando um pacote 

pkg uninstall

pkgrm

Comandos, arquivos e scripts do pacote

Esta seção descreve os comandos, arquivos e scripts que devem ser usados ao manipular pacotes. Eles são descritos nas páginas do manual e detalhadamente neste livro, de acordo com as tarefas específicas que eles realizam.

A tabela seguinte mostra os comandos que ajudam a construir, verificar, instalar e obter informações de um pacote.

Tabela 1–2 Comandos de pacotes

Tarefa 

Comando/ página do manual 

Descrição 

Para obter mais informações 

Criar pacotes 

pkgproto(1)

Gera um arquivo prototype para entrada do comando pkgmk

Exemplo — Criando um arquivo prototype com o comando pkgproto

pkgmk(1)

Cria um pacote instalável 

Construindo um pacote

 

Instalar, remover e transferir pacotes 

pkgadd(1M)

Instala um pacote de software em um sistema 

Instalando os pacotes de software

pkgask(1M)

Armazena as respostas de um script request

Regras de criação para scripts request

 

pkgtrans(1)

Copia pacotes em meio de distribuição 

Transferindo um pacote para um meio de distribuição

 

pkgrm(1M)

Remove um pacote de um sistema 

Removendo um pacote

 

Obter informações sobre pacotes 

pkgchk(1M)

Verifica a integridade de um pacote de software 

Verificando a integridade de um pacote

pkginfo(1)

Exibe as informações de um pacote de software 

O comando pkginfo

 

pkgparam(1)

Exibe os valores de parâmetro do pacote 

O comando pkgparam

 

Modificar os pacotes instalados 

installf(1M)

Incorpora um novo objeto de pacote em um pacote instalado 

Regras de criação dos scripts de procedimento e Capítulo 5Estudos de caso de criação de pacote

removef(1M)

Remove um objeto de pacote de um pacote que já está instalado 

Regras de criação dos scripts de procedimento

 

A tabela seguinte mostra os arquivos de informação que ajudam a construir um pacote.

Tabela 1–3 Arquivos de informação do pacote

Arquivo 

Descrição 

Para obter mais informações 

admin(4)

Arquivo de padrões de instalação de pacote 

O arquivo de padrões administrativos

compver(4)

Arquivo de compatibilidade do pacote 

Definindo dependências do pacote

copyright(4)

Arquivo de informação de copyright do pacote 

Escrevendo uma mensagem de copyright

depend(4)

Arquivo de dependências do pacote 

Definindo dependências do pacote

pkginfo(4)

Arquivo das características do pacote 

Criando um arquivo pkginfo

pkgmap(4)

Arquivo de descrição do conteúdo do pacote 

O arquivo pkgmap

prototype(4)

Arquivo de informações do pacote 

Criando um arquivo prototype

space(4)

Arquivo de requisitos de espaço em disco do pacote 

Reservando espaço adicional em um sistema de destino

A tabela seguinte descreve os scripts de instalação opcionais que você pode escrever e que afetam se e como um pacote é instalado.

Tabela 1–4 Scripts de instalação do pacote

Script 

Descrição 

Para obter mais informações 

request

Solicita informações do instalador 

Escrevendo um script request

checkinstall

Coleta dados do sistema de arquivos 

Coletando dados do sistema de arquivos com o script checkinstall

preinstall

Realiza qualquer requisito de instalação personalizada antes da instalação da classe 

Escrevendo scripts de procedimento

postinstall

Realiza qualquer requisito de instalação personalizada depois que todos os volumes tiverem sido instalados 

Escrevendo scripts de procedimento

preremove

Realiza qualquer requisito de remoção personalizada antes da remoção da classe 

Escrevendo scripts de procedimento

postremove

Realiza qualquer requisito de remoção personalizada depois que todas as classes tiverem sido removidas 

Escrevendo scripts de procedimento

Ação de classe 

Realiza uma série de ações em um grupo de objetos específico 

Escrevendo scripts de ação de classe