Próximo: Módulos de pacote em um subdiretório, Anterior: Canais com substitutos, Acima: Canais [Conteúdo][Índice]
Digamos que você tenha um monte de variantes de pacotes personalizados ou pacotes pessoais que você acha que faria pouco sentido contribuir para o projeto Guix, mas gostaria de ter esses pacotes disponíveis de forma transparente para você na linha de comando. Ao criar um canal, você pode usar e publicar tal coleção de pacotes. Isso envolve as seguintes etapas:
mkdir meu-canal cd meu-canal git init
Por exemplo, Alice pode querer fornecer um módulo chamado (alice
packages greetings)
que fornecerá suas implementações favoritas de “hello
world”. Para fazer isso, Alice criará um diretório correspondente ao nome
desse módulo.
mkdir -p alice/packages $EDITOR alice/packages/greetings.scm git add alice/packages/greetings.scm
Você pode nomear seus módulos de pacote como quiser; a principal restrição a
ter em mente é evitar conflitos de nomes com outras coleções de pacotes, e é
por isso que nossa hipotética Alice sabiamente escolheu o namespace
(alice packages …)
.
Observe que você também pode colocar módulos em um subdiretório do repositório; veja Módulos de pacote em um subdiretório, para mais informações sobre isso.
guix build
, que
precisa ser informado para procurar módulos no checkout do Git. Por exemplo,
supondo que (alice packages greetings)
forneça um pacote chamado
hi-from-alice
, Alice executará este comando do checkout do Git:
guix build -L. hi-from-alice
... onde -L.
adiciona o diretório atual ao caminho de carregamento do
Guile (veja Load Paths em Manual de referência do GNU Guile).
git commit
Como autor de um canal, considere agrupar material de autenticação com seu canal para que os usuários possam autenticá-lo. Veja Autenticação de canal e Especificando autorizações de canal para obter informações sobre como fazer isso.
guix
pull
(veja Invocando guix pull
):
$EDITOR ~/.config/guix/channels.scm guix pull
Guix agora se comportará como se o diretório raiz do repositório Git daquele
canal tivesse sido adicionado permanentemente ao caminho de carregamento do
Guile. Neste exemplo, (alice packages greetings)
será encontrado
automaticamente pelo comando guix
.
Voilà!
Aviso: Antes de publicar seu canal, gostaríamos de compartilhar algumas palavras de cautela:
- Antes de publicar um canal, considere contribuir com suas definições de pacote para o Guix propriamente dito (veja Contribuindo). O Guix como um projeto é aberto a software livre de todos os tipos, e os pacotes no Guix propriamente dito estão prontamente disponíveis para todos os usuários do Guix e se beneficiam do processo de garantia de qualidade do projeto.
- Módulos de pacote e definições de pacote são códigos Scheme que usam várias interfaces de programação (APIs). Nós, desenvolvedores Guix, nunca mudamos APIs gratuitamente, mas também não nos comprometemos a congelar APIs. Quando você mantém definições de pacote fora do Guix, consideramos que o fardo da compatibilidade é seu.
- Corolário: se você estiver usando um canal externo e esse canal quebrar, reporte o problema aos autores do canal, não ao projeto Guix.
Você foi avisado! Dito isso, acreditamos que canais externos são uma maneira prática de exercer sua liberdade para aumentar a coleção de pacotes do Guix e compartilhar suas melhorias, que são princípios básicos do software livre. Por favor, envie um e-mail para guix-devel@gnu.org se você quiser discutir isso.
Próximo: Módulos de pacote em um subdiretório, Anterior: Canais com substitutos, Acima: Canais [Conteúdo][Índice]