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
O check-plist verifica arquivos ausentes do plist e arquivos no plist que não são instalados pelo port.
O stage-qa verifica problemas comuns como shebang incorretas, links simbólicos apontando para fora do diretório de stage, arquivos setuid e bibliotecas não removidas...
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.
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>.