Próximo: , Anterior: , Acima: Canais   [Conteúdo][Índice]


6.3 Replicando Guix

O comando guix describe mostra precisamente quais commits foram usados para construir a instância do Guix que estamos usando (veja Invocando guix describe). Podemos replicar essa instância em outra máquina ou em um ponto diferente no tempo fornecendo uma especificação de canal “fixada” a esses commits que se parece com isso:

;; Implantar commits específicos dos meus canais de interesse.
(list (channel
       (name 'guix)
       (url "https://git.savannah.gnu.org/git/guix.git")
       (commit "6298c3ffd9654d3231a6f25390b056483e8f407c"))
      (channel
       (name 'variant-packages)
       (url "https://example.org/variant-packages.git")
       (commit "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb")))

Para obter essa especificação de canal fixado, a maneira mais fácil é executar guix describe e salvar sua saída no formato channels em um arquivo, assim:

guix describe -f channels > channels.scm

O arquivo channels.scm resultante pode ser passado para a opção -C de guix pull (veja Invocando guix pull) ou guix time-machine (veja Invocando guix time-machine), como neste exemplo:

guix time-machine -C channels.scm -- shell python -- python3

Dado o arquivo channels.scm, o comando acima sempre buscará a exatamente a mesma instância Guix, então usará essa instância para executar exatamente o mesmo Python (veja Invocando guix shell). Em qualquer máquina, a qualquer momento, ele acaba executando exatamente os mesmos binários, bit por bit.

Os canais fixados abordam um problema semelhante a “arquivos de bloqueio” conforme implementado por algumas ferramentas de implantação — eles permitem que você fixe e reproduza um conjunto de pacotes. No caso do Guix, no entanto, você está efetivamente fixando o conjunto de pacotes inteiro conforme definido nos commits de canal fornecidos; na verdade, você está fixando todo o Guix, incluindo seus módulos principais e ferramentas de linha de comando. Você também está obtendo fortes garantias de que está, de fato, obtendo exatamente o mesmo software.

Isso lhe dá superpoderes, permitindo que você rastreie a procedência de artefatos binários com granularidade muito fina e reproduza ambientes de software à vontade — algum tipo de capacidade de “meta reprodutibilidade”, se preferir. Veja Inferiores, para outra maneira de aproveitar esses superpoderes.


Próximo: Customizing the System-Wide Guix, Anterior: Usando um canal Guix personalizado, Acima: Canais   [Conteúdo][Índice]