Além de definir cada objeto de pacote no arquivo prototype, você também pode:
Definir objetos adicionais a serem criados no tempo de instalação.
Criar links no tempo de instalação.
Distribuir pacotes em vários volumes.
Aninhar arquivos prototype.
Definir um valor padrão para os campos mode, owner e group.
Fornecer um caminho de pesquisa para o comando pkgmk.
Definir variáveis de ambiente.
Consulte as seções seguintes para obter informações sobre a realização destas alterações.
Você pode usar o arquivo prototype para definir objetos que ainda não foram entregues ao meio de instalação. Durante a instalação, usando o comando pkgadd, estes objetos são criados com os tipos de arquivo requeridos, se ainda não existirem no momento da instalação.
Para especificar que um objeto seja criado no sistema de destino, adicione uma entrada para tal objeto no arquivo prototype com o tipo de arquivo apropriado.
Por exemplo, se você quiser que um diretório seja criado no sistema de destino, mas não quiser que seja entregue no meio de instalação, adicione a seguinte entrada para o diretório no arquivo prototype:
d none /directory 0644 root other |
Se quiser criar um arquivo vazio no sistema de destino, a entrada do arquivo no arquivo prototype pode ser semelhante a:
f none filename=/dev/null 0644 bin bin |
Os únicos objetos que devem ser entregues no meio de instalação são os arquivos regulares e scripts de edição (tipos de arquivo e, v, f), e os diretórios necessários para contê-los. Todos os objetos adicionais são criados sem referência a objetos, diretórios, pipes nomeados, dispositivos, links de disco rígido e links simbólicos entregues.
Para criar links durante a instalação do pacote, defina o seguinte na entrada do arquivo prototype do objeto vinculado:
Seu tipo de arquivo como l (um link) ou s (um link simbólico).
O nome de caminho do objeto vinculado com o formato path1=path2, no qual path1 é o arquivo de destino e path2 é o arquivo de origem. 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. Por exemplo, a entrada de um arquivo prototype que define um link simbólico poderia ser semelhante a:
s none etc/mount=../usr/etc/mount |
Os links relativos seriam especificados desta forma se o pacote estivesse instalado como absoluto ou relocável.
Ao construir o pacote com o comando pkgmk, este realiza os cálculos e as ações necessárias para organizar um pacote com vários volumes. Um pacote com vários volumes é chamado de pacote segmentado.
No entanto, você pode usar o campo part opcional no arquivo prototype para definir em que parte quer que o objeto seja colocado. Um número neste comando substitui o comando pkgmk e força a colocação do componente na parte dada no campo. Observe que há correspondência individual entre as partes e os volumes da mídia removível formatada como sistemas de arquivos. Se os volumes forem pré-atribuídos pelo desenvolvedor, o comando pkgmk publica um erro se não houver espaço suficiente em nenhum volume.
Você pode criar vários arquivos prototype e, em seguida, incluí-los usando o comando !include no arquivo prototype. Você pode querer aninhar os arquivos para facilitar a manutenção.
No exemplo seguinte há três arquivos prototype. O arquivo principal (prototype) está sendo editado. Os outros dois arquivos (proto2 e proto3) estão sendo incluídos.
!include /source-dir/proto2 !include /source-dir/proto3 |
Para definir valores padrão para os campos mode, owner e group de objetos específicos, você pode inserir o comando !default no arquivo prototype. Por exemplo:
!default 0644 root other |
O intervalo do comando !default começa onde ele foi inserido e vai até o final do arquivo. O intervalo do comando não se estende sobre os arquivos incluídos.
No entanto, nos diretórios (tipo de arquivo d) e arquivos editáveis (tipo de arquivo e) que você sabe que existem no sistema de destino (como /usr ou /etc/vfstab), certifique-se de que os campos mode, owner e group no arquivo prototype estejam definidos como pontos de interrogação (?). Desta forma você não destruirá as configurações existentes que podem ter sido modificadas por um administrador.
Se o local de origem dos objetos de pacote é diferente do local de destino e não quiser usar o formato path1=path2 descrito em Os locais de origem e de destino de um objeto em poucas palavras, você pode usar o comando !search no arquivo prototype.
Por exemplo, se você tiver criado um diretório, pkgfiles , no diretório de início, e ele contiver todos os arquivos de informação e scripts de instalação, você pode especificar que este diretório seja pesquisado quando o pacote for construído com o comando pkgmk.
O comando no arquivo prototype pode ser semelhante a:
!search /home-dir/pkgfiles |
As solicitações de pesquisa não se estendem aos arquivos incluídos. Além disso, a pesquisa se limita aos diretórios específicos listados e não realiza pesquisa recursiva.
Você também pode adicionar comandos ao arquivo prototype com a forma !PARAM=value. Os comandos com esta forma definem as variáveis no ambiente atual. Se você tem vários arquivos prototype, o escopo deste comando é o local do arquivo prototype no qual ele está definido.
A variável PARAM pode começar com letra minúscula ou maiúscula. Se o valor da variável PARAM não for conhecido no tempo de construção, o comando pkgmk aborta com um erro. Para obter mais informações sobre a diferença entre as variáveis de instalação e de construção, consulte Variáveis de ambiente do pacote.