O Poudriere é um utilitário licenciado sob a licença BSD para criar e testar pacotes do FreeBSD. Ele usa o jails do FreeBSD para configurar ambientes de compilação isolados. Esses jails podem ser usados para compilar pacotes para versões do FreeBSD que são diferentes do sistema no qual ele está instalado, e também para construir pacotes para o i386 se o host for um sistema amd64. Uma vez que os pacotes são compilados, eles estão em um layout idêntico aos espelhos oficiais. Esses pacotes podem ser usados pelo pkg(8) e por outras ferramentas de gerenciamento de pacotes.
O Poudriere é instalado usando o pacote ou port ports-mgmt/poudriere. A instalação inclui um arquivo de configuração de exemplo, /usr/local/etc/poudriere.conf.sample
. Copie este arquivo para /usr/local/etc/poudriere.conf
. Edite o arquivo copiado de acordo com a configuração local.
Embora o ZFS não seja necessário no sistema que executa o poudriere, o seu uso é benéfico. Quando o ZFS é usado, o ZPOOL
deve ser especificado em /usr/local/etc/poudriere.conf
e o FREEBSD_HOST
deve ser definido para um espelho próximo. A definição de CCACHE_DIR
permite o uso de devel/ccache para armazenar em cache a compilação e reduzir os tempos de compilação para o código compilado com freqüência. Pode ser conveniente colocar os conjuntos de dados do poudriere em uma árvore isolada montada em /poudriere
. Os valores padrões para as outras variáveis de configuração são adequados.
O número de núcleos do processador detectados é usado para definir quantas compilações serão executadas em paralelo. Forneça memória virtual suficiente, seja por meio de RAM ou espaço de swap. Se a memória virtual se esgotar, as jails de compilação serão interrompidas e desativadas, resultando em mensagens de erro estranhas.
Após a configuração, inicialize o poudriere para que ele instale um jail com a árvore do FreeBSD requerida e uma árvore de ports. Especifique um nome para o jail usando -j
e a versão do FreeBSD com -v
. Em sistemas que executam o FreeBSD/amd64, a arquitetura pode ser definida com -a
para i386
ou amd64
. O padrão é a arquitetura mostrada pelo uname
.
#
poudriere jail -c -j
====>> Creating 10amd64 fs... done ====>> Fetching base.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/base.txz 100% of 59 MB 1470 kBps 00m42s ====>> Extracting base.txz... done ====>> Fetching src.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/src.txz 100% of 107 MB 1476 kBps 01m14s ====>> Extracting src.txz... done ====>> Fetching games.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/games.txz 100% of 865 kB 734 kBps 00m01s ====>> Extracting games.txz... done ====>> Fetching lib32.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/lib32.txz 100% of 14 MB 1316 kBps 00m12s ====>> Extracting lib32.txz... done ====>> Cleaning up... done ====>> Jail 10amd64 10.0-RELEASE amd64 is ready to be used10amd64
-v10.0-RELEASE
#
poudriere ports -c -p
====>> Creating local fs... done ====>> Extracting portstree "local"... Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found. Fetching public key from ec2-eu-west-1.portsnap.freebsd.org... done. Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Fetching snapshot generated at Tue Feb 11 01:07:15 CET 2014: 94a3431f0ce567f6452ffde4fd3d7d3c6e1da143efec76100% of 69 MB 1246 kBps 00m57s Extracting snapshot... done. Verifying snapshot integrity... done. Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Updating from Tue Feb 11 01:07:15 CET 2014 to Tue Feb 11 16:05:20 CET 2014. Fetching 4 metadata patches... done. Applying metadata patches... done. Fetching 0 metadata files... done. Fetching 48 patches. (48/48) 100.00% done. done. Applying patches... done. Fetching 1 new ports or files... done. /poudriere/ports/tester/CHANGES /poudriere/ports/tester/COPYRIGHT [...] Building new INDEX files... done.local
Em um único computador, o poudriere pode construir ports com várias configurações, em vários jails e de diferentes árvores de ports. Configurações customizadas para estas combinações são chamadas de sets. Veja a seção CUSTOMIZAÇÃO do poudriere(8) para detalhes depois que o ports-mgmt/poudriere ou o ports-mgmt/poudriere-devel estiver instalado.
A configuração básica mostrada aqui coloca um único jail-, port-, e um set específico make.conf
em /usr/local/etc/poudriere.d
. O nome do arquivo neste exemplo é criado combinando o nome do jail, o nome do port e o nome do set:
. O sistema 10amd64-local-workstation
-make.confmake.conf
e este novo arquivo são combinados em tempo de compilação para criar o make.conf
usado pela jail de compilação.
Os pacotes a serem criados são inseridos em
:10amd64-local-workstation
-pkglist
editors/emacs devel/git ports-mgmt/pkg ...
Opções e dependências para os ports especificados são configuradas:
#
poudriere options -j
10amd64
-plocal
-zworkstation
-f10amd64-local-workstation-pkglist
Finalmente, os pacotes são compilados e um repositório de pacotes é criado:
#
poudriere bulk -j
10amd64
-plocal
-zworkstation
-f10amd64-local-workstation-pkglist
Durante a execução, pressionar Ctrl+t exibe o estado atual da compilação. O Poudriere também cria arquivos em /poudriere/logs/bulk/
que podem ser usados com um servidor da Web para exibir informações de compilação.jailname
Após a conclusão, os novos pacotes estão agora disponíveis para instalação a partir do repositório poudriere.
Para obter maiores informações sobre o uso do poudriere, consulte poudriere(8) e o site principal, https://github.com/freebsd/poudriere/wiki.
Embora seja possível usar um repositório personalizado ao lado do repositório oficial, às vezes é útil desativar o repositório oficial. Isso é feito criando um arquivo de configuração que substitui e desativa o arquivo de configuração oficial. Crie o /usr/local/etc/pkg/repos/FreeBSD.conf
que deverá conter o seguinte:
FreeBSD: { enabled: no }
Geralmente, é mais fácil servir um repositório poudriere para as máquinas clientes via HTTP. Configure um servidor da web para servir o diretório de pacotes, por exemplo: /usr/local/poudriere/data/packages/
, onde 10amd64
é o nome da compilação.10amd64
Se a URL para o repositório de pacotes for: http://pkg.example.com/10amd64
, o arquivo de configuração do repositório em /usr/local/etc/pkg/repos/custom.conf
ficaria assim:
custom: {
url: "http://pkg.example.com/10amd64
",
enabled: yes,
}
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>.