Anterior: Invocando guix describe
, Acima: Gerenciamento de pacote [Conteúdo][Índice]
guix archive
O comando guix archive
permite que os usuários exportem
arquivos do armazém para um único arquivamento e depois importem eles
em uma máquina que execute o Guix. Em particular, ele permite que os
arquivos do armazém sejam transferidos de uma máquina para o store em outra
máquina.
Nota: Se você estiver procurando uma maneira de produzir arquivamentos em um formato adequado para outras ferramentas além do Guix, veja Invocando
guix pack
.
Para exportar arquivos de armazém como um arquivamento para saída padrão, execute:
guix archive --export opções especificações...
especificações pode ser nomes de arquivos de armazém ou especificações
de pacotes, como para guix package
(veja Invocando guix package
). Por exemplo, o comando a seguir cria um arquivo contendo a saída
gui
do pacote git
e a saída principal de emacs
:
guix archive --export git:gui /gnu/store/...-emacs-24.3 > great.nar
Se os pacotes especificados ainda não foram construídos, guix
archive
os constrói automaticamente. O processo de construção pode ser
controlado com as opções comuns de construção (veja Opções de compilação comuns).
Para transferir o pacote emacs
para uma máquina conectada via SSH,
execute:
guix archive --export -r emacs | ssh a-máquina guix archive --import
Da mesma forma, um perfil de usuário completo pode ser transferido de uma máquina para outra assim:
guix archive --export -r $(readlink -f ~/.guix-profile) | \ ssh a-máquina guix archive --import
No entanto, observe que, em ambos os exemplos, todos os emacs
e o
perfil, bem como todas as suas dependências são transferidos (devido a
-r), independentemente do que já esteja disponível no armazém na
máquina de destino. A opção --missing pode ajudar a descobrir quais
itens estão faltando no armazém de destino. O comando guix copy
simplifica e otimiza todo esse processo, então é provavelmente isso que você
deve usar neste caso (veja Invocando guix copy
).
Cada item do armazém é escrito no formato arquivamento normalizado ou
nar (descrito abaixo), e a saída de guix archive --export
(e
entrada de guix archive --import
) é uma embalagem nar.
O formato nar é comparável em espírito ao ‘tar’, mas com diferenças que o tornam mais apropriado para nossos propósitos. Primeiro, em vez de registrar todos os metadados Unix para cada arquivo, o formato nar menciona apenas o tipo de arquivo (regular, diretório ou ligação simbólica); permissões Unix e proprietário/grupo são descartados. Segundo, a ordem em que as entradas de diretório são armazenadas sempre segue a ordem dos nomes de arquivo de acordo com a ordem de agrupamento de localidade C. Isso torna a produção de arquivo totalmente determinística.
O formato da embalagem nar é essencialmente a concatenação de zero ou mais nars junto com metadados para cada item de armazém que ele contém: seu nome de arquivo, referências, derivação correspondente e uma assinatura digital.
Ao exportar, o daemon assina digitalmente o conteúdo do arquivamento, e essa assinatura digital é anexada. Ao importar, o daemon verifica a assinatura e rejeita a importação em caso de uma assinatura inválida ou se a chave de assinatura não for autorizada.
As principais opções são:
--export
Exporte os arquivos de armazém ou pacotes especificados (veja abaixo). Grave o arquivo resultante na saída padrão.
Dependências não são incluídas na saída, a menos que --recursive seja passado.
-r
--recursive
Quando combinado com --export, isso instrui guix archive
a incluir dependências dos itens fornecidos no arquivo. Assim, o arquivo
resultante é autocontido: ele contém o fechamento dos itens exportados do
armazém.
--import
Leia um arquivo da entrada padrão e importe os arquivos listados nele para o armazém. Aborte se o arquivo tiver uma assinatura digital inválida ou se for assinado por uma chave pública que não esteja entre as chaves autorizadas (veja --authorize abaixo).
--missing
Leia uma lista de nomes de arquivos do armazém da entrada padrão, um por linha, e escreva na saída padrão o subconjunto desses arquivos que faltam no armazém.
--generate-key[=parâmetros]
¶Gere um novo par de chaves para o daemon. Este é um pré-requisito antes que
os arquivos possam ser exportados com --export. Esta operação é
geralmente instantânea, mas pode levar algum tempo se o pool de entropia do
sistema precisar ser recarregado. No Guix System, guix-service-type
cuida da geração deste par de chaves na primeira inicialização.
O par de chaves gerado é normalmente armazenado em /etc/guix, em
signing-key.pub (chave pública) e signing-key.sec (chave
privada, que deve ser mantida em segredo). Quando parâmetros é
omitido, uma chave ECDSA usando a curva Ed25519 é gerada ou, para versões do
Libgcrypt anteriores a 1.6.0, é uma chave RSA de 4096 bits. Como
alternativa, parâmetros pode especificar parâmetros genkey
adequados para Libgcrypt (veja gcry_pk_genkey
em Manual de referência do Libgcrypt).
--authorize
¶Autorize importações assinadas pela chave pública passada na entrada padrão. A chave pública deve estar em “s-expression advanced format”—i.e., o mesmo formato do arquivo signing-key.pub.
A lista de chaves autorizadas é mantida no arquivo editável por humanos /etc/guix/acl. O arquivo contém “advanced-format s-expressions” e é estruturado como uma lista de controle de acesso no Simple Public-Key Infrastructure (SPKI).
--extract=diretório
-x diretório
Leia um arquivo de item único conforme servido por servidores substitutos (veja Substitutos) e extraia-o para diretório. Esta é uma operação de baixo nível necessária apenas em casos de uso muito restritos; veja abaixo.
Por exemplo, o comando a seguir extrai o substituto para o Emacs servido por
bordeaux.guix.gnu.org
para /tmp/emacs:
$ wget -O - \ https://bordeaux.guix.gnu.org/nar/gzip/…-emacs-24.5 \ | gunzip | guix archive -x /tmp/emacs
Arquivamentos de item único são diferentes de arquivamentos de itens
múltiplos produzidos por guix archive --export
; eles contêm um
único item de armazém e não incorporam uma assinatura. Portanto, essa
operação não faz nenhuma verificação de assinatura e sua saída deve
ser considerada insegura.
O objetivo principal desta operação é facilitar a inspeção de conteúdos de
arquivamento provenientes de servidores substitutos possivelmente não
confiáveis (veja Invocando guix challenge
).
--list
-t
Leia um arquivamento de item único servido por servidores substitutos (veja Substitutos) e exiba a lista de arquivos que ele contém, como neste exemplo:
$ wget -O - \ https://bordeaux.guix.gnu.org/nar/lzip/…-emacs-26.3 \ | lzip -d | guix archive -t
Anterior: Invocando guix describe
, Acima: Gerenciamento de pacote [Conteúdo][Índice]