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 Makefile
s 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>.