Próximo: Customizing the System-Wide Guix, Anterior: Usando um canal Guix personalizado, Acima: Canais [Conteúdo][Índice]
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]