Guia do Desenvolvedor de Empacotamento de Aplicativos

Formato do arquivo prototype

Abaixo se encontra o formato de cada linha no arquivo prototype:


partftypeclasspathmajorminormodeownergroup

part

É um campo numérico opcional que permite agrupar os objetos de pacote em partes. O valor padrão é 1 parte. 

ftype

É um campo de um caractere que especifica o tipo do objeto. Consulte O campo ftype.

classe

É a classe de instalação à qual pertence o objeto. Consulte O campo class.

path

É o nome de caminho absoluto ou relativo que indica onde o objeto de pacote se localizará no sistema de destino. Consulte O campo path.

major

É o número principal de dispositivo dos dispositivos especiais de bloco ou de caracteres. 

minor

É o número secundário de dispositivo dos dispositivos especiais de bloco ou de caracteres. 

mode

É o modo octal do objeto (por exemplo, 0644). Consulte O campo mode.

owner

É o proprietário do objeto (por exemplo, bin ou root). Consulte O campo owner.

group

É o grupo ao qual pertence o objeto (por exemplo, bin ou sys). Consulte O campo group.

Em geral, somente os campos ftype, class, path, mode, owner e group são definidos. Estes campos estão descritos nas próximas seções. Consulte a página do manual prototype(4) para obter informações adicionais sobre estes campos.

O campo ftype

O campo ftype, ou file type, é um campo de um único caractere que especifica o tipo de arquivo de um objeto de pacote. Os tipos de arquivo válidos estão descritos na tabela abaixo

Tabela 2–3 Tipos de arquivo válidos no arquivo prototype

Valor do campo de tipo de arquivo 

Descrição do tipo de arquivo 

f

Arquivo executável ou de dados padrão 

e

Arquivo a ser editado na instalação ou remoção (pode ser compartilhado por vários pacotes) 

v

Arquivo volátil (cujo conteúdo se altera, tal como um arquivo log) 

d

Diretório 

x

Diretório exclusivo acessível somente por este pacote (pode conter informações de banco de dados e logs não registrados) 

l

Arquivo vinculado 

p

Pipe nomeado 

c

Dispositivo especial de caracteres 

b

Dispositivo especial de bloco 

i

Arquivo de informação ou script de instalação 

s

Link simbólico 

O campo class

class nomeia a classe à qual pertence um objeto. O uso de classes é um recurso opcional de criação de pacote. Este recurso é tratado detalhadamente em Escrevendo scripts de ação de classe.

Se você não usar classes, o objeto pertence à classe none. Quando o comando pkgmk é executado para construir o pacote, ele insere o parâmetro CLASSES=none no arquivo pkginfo. Os arquivos com tipo de arquivo i devem ter um campo class em branco.

O campo path

O campo path é usado para definir onde o objeto de pacote se localizará no sistema de destino. Você pode indicar o local tanto com um nome de caminho absoluto (por exemplo, /usr/bin/mail) quanto com um nome de caminho relativo (por exemplo, bin/mail). O uso de um nome de caminho absoluto significa que o local do objeto no sistema de destino é definido pelo pacote e não pode ser alterado. Os objetos de pacote com nomes de caminho relativo indicam que o objeto é relocável.

Um objeto relocável não precisa de um local de caminho absoluto no sistema de destino. Em vez disso, o local do objeto é determinado durante o processo de instalação.

Todos ou alguns objetos de pacote podem ser definidos como relocáveis. Antes de escrever os scripts de instalação ou criar o arquivo prototype, decida se os objetos de pacote terão locais fixos (tais como scripts de início em /etc) ou serão relocáveis.

Há dois tipos de objetos relocáveis, relocável coletivamente e relocável individualmente.

Objetos relocáveis coletivamente

Os objetos relocáveis coletivamente são colocados em relação à base de instalação comum chamada diretório base. O diretório base é definido no arquivo pkginfo, usando o parâmetro BASEDIR. Por exemplo, um objeto relocável no arquivo prototype denominado tests/generic requer que o arquivo pkginfo defina o parâmetro padrão BASEDIR. Por exemplo:


BASEDIR=/opt

Este exemplo significa que quando o objeto for instalado, ele será colocado no diretório /opt/tests/generic.


Observação –

O diretório /opt é o único diretório para o qual o software que não faz parte do software Solaris base pode ser entregue.


Use objetos relocáveis coletivamente sempre que possível. Em geral, a parte principal de um pacote pode ser relocável com poucos arquivos (tais como os arquivos em /etc ou /var) especificados como absoluto. No entanto, se um pacote contém várias relocações, leve em consideração dividir o pacote em vários pacotes com valores BASEDIR diferentes nos seus arquivos pkginfo.

Objetos relocáveis individualmente

Os objetos relocáveis individualmente não estão limitados ao mesmo local de diretório que os objetos relocáveis coletivamente. Para definir um objeto relocável individualmente, você precisa especificar uma variável de instalação no campo path do arquivo prototype. Depois de especificar a variável de instalação, crie um script request para solicitar ao instalador o diretório base relocável, ou um script checkinstall para determinar o nome do caminho dos dados do sistema de arquivos. Para obter mais informações sobre scripts request, consulte Escrevendo um script request e sobre os scripts checkinstall, consulte Como coletar dados do sistema de arquivos.


Cuidado – Cuidado –

Os objetos relocáveis indivualmente são difíceis de gerenciar. O uso de objetos relocáveis individualmente pode fazer com que os componentes de pacote fiquem muito dispersos e seja difícil isolá-los ao instalar várias versões ou arquiteturas do pacote. Use objetos relocáveis coletivamente sempre que possível.


Nomes de caminho paramétrico

Um nome de caminho paramétrico é um nome de caminho que inclui uma especificação de variável. Por exemplo, o filename /opt/$PKGINST/ é um nome de caminho paramétrico devido à especificação de variável $PKGINST. O valor padrão de uma especificação de variável deve ser definido no arquivo pkginfo. O valor pode, então, ser alterado por um script request ou um script checkinstall.

Uma especificação de variável em um caminho deve começar ou terminar o nome de caminho ou estar limitada por barras (/). Os nomes de caminho paramétrico apresentam a seguinte forma:


$PARAM/tests
tests/$PARAM/generic
/tests/$PARAM

A especificação de variável, uma vez definida, pode fazer com que o caminho seja interpretado como absoluto ou relocável. No exemplo seguinte, o arquivo prototype contém esta entrada:


f none $DIRLOC/tests/generic

O arquivo pkginfo contém esta entrada:


DIRLOC=/myopt

O nome de caminho $DIRLOC/tests/generic é interpretado como o nome de caminho absoluto /myopt/tests/generic, apesar do parâmetro BASEDIR estar definido no arquivo pkginfo.

Neste exemplo, o arquivo prototype é igual ao do exemplo anterior e o arquivo pkginfo contém as seguintes entradas:


DIRLOC=firstcut
BASEDIR=/opt

O nome de caminho $DIRLOC/tests/generic será interpretado como o nome de caminho relocável /opt/firstcut/tests/generic.

Para obter mais informações sobre nomes de caminho paramétrico, consulte Usando diretórios base paramétricos.

Os locais de origem e de destino de um objeto em poucas palavras

O campo path no arquivo prototype define onde o objeto será colocado no sistema de destino. Especifique o local atual dos objetos de pacote no arquivo prototype se a estrutura de diretório não imitar a estrutura pretendida no sistema de destino. Consulte Organizando o conteúdo de um pacote para obter mais informações sobre a estruturação de objetos em um pacote.

Se a sua área de desenvolvimento não tiver a mesma estrutura que deseja que o seu pacote tenha, você pode usar o formato path1=path2 no arquivo path. Neste formato, path1 é o local que o objeto deve ter no sistema de destino e path2 é o local que o objeto tem no seu sistema.

Você também pode usar o formato de nome de caminho path1=path2 com path1 como nome de objeto relocável e path2 como um nome de caminho completo de tal objeto no seu sistema.


Observação –

path1 não pode conter variáveis de construção não definidas, mas pode conter variáveis de instalação não definidas. path2 não pode conter nenhuma variável não definida, embora ambas variáveis de construção e instalação possam ser usadas. Para obter informações sobre a diferença entre as variáveis de instalação e de construção, consulte Variáveis de ambiente do pacote.


Os links devem usar o formato path1= path2 porque são criados pelo comando pkgadd. Como regra geral, o path2 de um link nunca deve ser absoluto, mas, pelo contrário, deve ser relativo à parte do diretório de path1.

Uma opção para o uso do formato path1=path2 é usar o comando !search. Para obter mais informações, consulte Fornecendo um caminho de pesquisa para o comando pkgmk.

O campo mode

O campo mode pode conter um número octal, um ponto de interrogação (?) ou uma especificação de variável. O número octal especifica o modo do objeto quando este é instalado no sistema de destino. O ? significa que o modo não será alterado conforme o objeto é instalado, implicando que um objeto com o mesmo nome já existe no sistema de destino.

A especificação de variável da forma $mode, na qual a primeira letra da variável deve estar em minúscula, significa que este campo será definido conforme o pacote é construído. Observe que esta variável deve ser definida no tempo de construção no arquivo prototype ou como uma opção do comando pkgmk. Para obter informações sobre a diferença entre as variáveis de instalação e de construção, consulte Variáveis de ambiente do pacote.

Os arquivos com tipo de arquivo i (arquivo de informação), l (link de disco rígido) e s (link simbólico) devem deixar este campo em branco.

O campo owner

O campo owner pode conter um nome de usuário, um ponto de interrogação (?) ou uma especificação de variável. Um nome de usuário possui no máximo 14 caracteres e deve ser um nome que já exista no sistema de destino (tal como bin ou root). O ? significa que o proprietário não será alterado conforme o objeto é instalado, implicando que um objeto com o mesmo nome já existe no sistema de destino.

Uma especificação de variável pode ter a forma $Owner ou $owner, na qual a primeira letra da variável é maiúscula ou minúscula. Se a variável começar com uma letra minúscula, ela deve ser definida conforme o pacote é construído, tanto no arquivo prototype quanto como uma opção do comando pkgmk. Se a variável começar com uma letra maiúscula, a especificação de variável será inserida no arquivo pkginfo como um valor padrão e pode ser redefinida no tempo de instalação por um script request. Para obter informações sobre a diferença entre as variáveis de instalação e de construção, consulte Variáveis de ambiente do pacote.

Os arquivos com tipo de arquivo i (arquivo de informação) e l b (link de disco rígido) devem deixar este campo em branco.

O campo group

O campo group pode conter um nome de grupo, um ponto de interrogação (?) ou uma especificação de variável. Um nome de grupo possui no máximo 14 caracteres e deve ser um nome que já exista no sistema de destino (tal como bin ou sys). O ? significa que o grupo não será alterado conforme o objeto é instalado, implicando que um objeto com o mesmo nome já existe no sistema de destino.

Uma especificação de variável pode ter a forma $Group ou $group, na qual a primeira letra da variável é maiúscula ou minúscula. Se a variável começar com uma letra minúscula, ela deve ser definida conforme o pacote é construído, tanto no arquivo prototype quanto como uma opção do comando pkgmk. Se a variável começar com uma letra maiúscula, a especificação de variável será inserida no arquivo pkginfo como um valor padrão e pode ser redefinida no tempo de instalação por um script request. Para obter informações sobre a diferença entre as variáveis de instalação e de construção, consulte Variáveis de ambiente do pacote.

Os arquivos com tipo de arquivo i (arquivo de informação) e l (link de disco rígido) devem deixar este campo em branco.