Anterior: , Acima: Gerenciamento de pacote   [Conteúdo][Índice]


5.11 Invocando 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]