Próximo: Definindo pacotes, Acima: Interface de programação [Conteúdo][Índice]
Do ponto de vista da programação, as definições de pacotes da distribuição
GNU são fornecidas pelos módulos Guile no namespace (gnu packages
…)
19 (veja módulos Guile em Manual de Referência do
GNU Guile). Por exemplo, o módulo (gnu packages emacs)
exporta uma
variável chamada emacs
, que é vinculada a um objeto <package>
(veja Definindo pacotes).
O namespace do módulo (gnu packages …)
é automaticamente
escaneado em busca de pacotes pelas ferramentas de linha de comando. Por
exemplo, ao executar guix install emacs
, todos os módulos (gnu
packages …)
são escaneados até que um que exporte um objeto de pacote
cujo nome é emacs
seja encontrado. Esse recurso de busca de pacotes é
implementado no módulo (gnu packages)
.
Os usuários podem armazenar definições de pacotes em módulos com nomes
diferentes — por exemplo, (my-packages emacs)
20. Há duas maneiras de tornar
essas definições de pacotes visíveis para as interfaces do usuário:
-L
do guix package
e outros
comandos (veja Opções de compilação comuns), ou definindo a variável de ambiente
GUIX_PACKAGE_PATH
descrita abaixo.
guix pull
para que ele
puxe dele. Um canal é essencialmente um repositório Git contendo módulos de
pacote. Veja Canais, para mais informações sobre como definir e usar
canais.
GUIX_PACKAGE_PATH
funciona de forma semelhante a outras variáveis de
caminho de pesquisa:
Esta é uma lista de diretórios separados por dois pontos para procurar módulos de pacotes adicionais. Os diretórios listados nesta variável têm precedência sobre os próprios módulos da distribuição.
A distribuição é totalmente bootstrapped e auto-contida: cada
pacote é construído com base somente em outros pacotes na distribuição. A
raiz deste grafo de dependência é um pequeno conjunto dos binários
bootstrap, fornecido pelo módulo (gnu packages bootstrap)
. Para mais
informações sobre bootstrapping, veja Inicializando.
Observe que os pacotes sob o namespace do módulo
(gnu packages …)
não são necessariamente “pacotes GNU”. Este
esquema de nomenclatura de módulos segue a convenção usual de nomenclatura
de módulos Guile: gnu
significa que esses módulos são distribuídos
como parte do sistema GNU, e packages
identifica módulos que definem
pacotes.
Observe que
o nome do arquivo e o nome do módulo devem corresponder. Por exemplo, o
módulo (my-packages emacs)
deve ser armazenado em um arquivo
my-packages/emacs.scm relativo ao caminho de carregamento
especificado com --load-path ou
GUIX_PACKAGE_PATH
. Veja Modules and the File System em Manual
de Referência do GNU Guile, para detalhes.
Próximo: Definindo pacotes, Acima: Interface de programação [Conteúdo][Índice]