O Poudriere é um utilitário licenciado sob a licença BSD para criar e testar pacotes do FreeBSD. Ele usa as jails do FreeBSD para configurar ambientes de compilação isolados. Essas jails podem ser usadas 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 uma jail com a árvore do FreeBSD requerida e uma árvore de ports. Especifique um nome para a 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
[00:00:00] Creating 11amd64 fs at /poudriere/jails/11amd64... done [00:00:00] Using pre-distributed MANIFEST for FreeBSD 11.4-RELEASE amd64 [00:00:00] Fetching base for FreeBSD 11.4-RELEASE amd64 /poudriere/jails/11amd64/fromftp/base.txz 125 MB 4110 kBps 31s [00:00:33] Extracting base... done [00:00:54] Fetching src for FreeBSD 11.4-RELEASE amd64 /poudriere/jails/11amd64/fromftp/src.txz 154 MB 4178 kBps 38s [00:01:33] Extracting src... done [00:02:31] Fetching lib32 for FreeBSD 11.4-RELEASE amd64 /poudriere/jails/11amd64/fromftp/lib32.txz 24 MB 3969 kBps 06s [00:02:38] Extracting lib32... done [00:02:42] Cleaning up... done [00:02:42] Recording filesystem state for clean... done [00:02:42] Upgrading using ftp /etc/resolv.conf -> /poudriere/jails/11amd64/etc/resolv.conf Looking up update.FreeBSD.org mirrors... 3 mirrors found. Fetching public key from update4.freebsd.org... done. Fetching metadata signature for 11.4-RELEASE from update4.freebsd.org... done. Fetching metadata index... done. Fetching 2 metadata files... done. Inspecting system... done. Preparing to download files... done. Fetching 124 patches.....10....20....30....40....50....60....70....80....90....100....110....120.. done. Applying patches... done. Fetching 6 files... done. The following files will be added as part of updating to 11.4-RELEASE-p1: /usr/src/contrib/unbound/.github /usr/src/contrib/unbound/.github/FUNDING.yml /usr/src/contrib/unbound/contrib/drop2rpz /usr/src/contrib/unbound/contrib/unbound_portable.service.in /usr/src/contrib/unbound/services/rpz.c /usr/src/contrib/unbound/services/rpz.h /usr/src/lib/libc/tests/gen/spawnp_enoexec.sh The following files will be updated as part of updating to 11.4-RELEASE-p1: […] Installing updates...Scanning //usr/share/certs/blacklisted for certificates... Scanning //usr/share/certs/trusted for certificates... done. 11.4-RELEASE-p1 [00:04:06] Recording filesystem state for clean... done [00:04:07] Jail 11amd64 11.4-RELEASE-p1 amd64 is ready to be used11amd64
-v11.4-RELEASE
#
poudriere ports -c -p
[00:00:00] Creating local fs at /poudriere/ports/local... done [00:00:00] Checking out the ports tree... donelocal
-m svn+https
Em um único computador, o poudriere pode construir ports com várias configurações, em várias 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 uma única 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 da jail, o nome do port e o nome do set:
. O sistema 11amd64-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
:11amd64-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
11amd64
-plocal
-zworkstation
-f11amd64-local-workstation-pkglist
Finalmente, os pacotes são compilados e um repositório de pacotes é criado:
#
poudriere bulk -j
11amd64
-plocal
-zworkstation
-f11amd64-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 disponibilizar um repositório poudriere para as máquinas clientes via HTTP. Configure um servidor web para disponibilizar o diretório de pacotes, por exemplo: /usr/local/poudriere/data/packages/
, onde 11amd64
é o nome da compilação.11amd64
Se a URL para o repositório de pacotes for: http://pkg.example.com/11amd64
, o arquivo de configuração do repositório em /usr/local/etc/pkg/repos/custom.conf
ficaria assim:
custom: {
url: "http://pkg.example.com/11amd64
",
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>.