10.4. PREFIX e DESTDIR

PREFIX determina onde o port será instalado. O padrão é /usr/local, mas pode ser definido pelo usuário para um caminho personalizado como /opt. O port deve respeitar o valor dessa variável.

O DESTDIR, se definido pelo usuário, determina o ambiente alternativo completo, geralmente uma jail ou um sistema instalado montado em outro local que não seja o /. Um port será realmente instalado no DESTDIR/PREFIX, e registrado no banco de dados de pacotes em DESTDIR/var/db/pkg. Como o DESTDIR é tratado automaticamente pela infraestrutura de ports com o chroot(8). Não há necessidade de modificações ou qualquer cuidado extra para escrever ports compatíveis com o DESTDIR.

O valor de PREFIX será definido para LOCALBASE (o valor padrão é /usr/local). E se USE_LINUX_PREFIX estiver definido o PREFIX será LINUXBASE (o valor padrão é /compat/linux).

Evitar o uso do caminho /usr/local codificado no fonte tornam o port muito mais flexível e capaz de atender às necessidades de outros sites. Muitas vezes, isso pode ser feito substituindo as ocorrências de /usr/local nos vários Makefiles dos ports por ${PREFIX}. Essa variável é transmitida automaticamente para todos os estágios dos processos de compilação e instalação.

Verifique se o aplicativo não está instalando arquivos em /usr/local ao invés de PREFIX. Um teste rápido para esses caminhos codificados é:

% make clean; make package PREFIX=/var/tmp/`make -V PORTNAME`

Se alguma coisa for instalada fora do PREFIX, o processo de criação de pacotes irá reclamar que não pode encontrar os arquivos.

Além disso, vale a pena verificar o mesmo em relação ao suporte a diretórios stage (veja Seção 6.1, “Staging”):

% make stage && make check-plist && make stage-qa && make package

Esses testes não encontrarão caminhos codificados dentro dos arquivos do port, nem verificarão se o LOCALBASE está sendo usado para se referir corretamente a arquivos de outros ports. O port instalado temporariamente em /var/tmp/`make -V PORTNAME` deve ser testado quanto à operação correta para garantir que não haja problemas com os caminhos.

O PREFIX não deve ser definido explicitamente em um Makefile do port. Usuários instalando o port podem ter definido a variável PREFIX para um local personalizado e o port deve respeitar essa configuração.

Referencie programas e arquivos de outros ports com as variáveis ​​mencionadas acima, não com nomes de caminho explícitos. Por exemplo, se o port exigir uma macro PAGER para ter o nome de caminho completo para o less, não use um caminho literal para /usr/local/bin/less. Em vez disso, use ${LOCALBASE}:

-DPAGER=\"${LOCALBASE}/bin/less\"

O caminho com LOCALBASE é muito provável que ainda funcione se o administrador do sistema mudou toda a arvore /usr/local para algum outro lugar.

Dica:

Todos esses testes são feitos automaticamente ao executar poudriere testport ou poudriere bulk -t. É altamente recomendável que cada contribuidor de ports instale e teste seus ports com ele. Veja Seção 10.5, “Poudriere para maiores informações.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.