Próximo: , Acima: Interface de programação   [Conteúdo][Índice]


8.1 Módulos de pacote

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:

  1. Ao adicionar o diretório que contém os módulos do seu pacote ao caminho de pesquisa com o sinalizador -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.
  2. Ao definir um canal e configurando 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:

Variável de ambiente: GUIX_PACKAGE_PATH

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.


Notas de Rodapé

(19)

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.

(20)

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]