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


5.6 Invocando guix gc

Pacotes instalados mas não usados podem ser garbage-collected. O comando guix gc permite que os usuários executem explicitamente o coletor de lixo para recuperar espaço do diretório /gnu/store. É a maneira única de remover arquivos de /gnu/store — remover arquivos ou diretórios manualmente pode quebrá-los sem possibilidade de reparo!

O coletor de lixo possui um conjunto de roots conhecidos: qualquer arquivo em /gnu/store acessível a partir de uma raiz é considerado live e não pode ser excluído; Qualquer outro arquivo é considerado dead e pode ser excluído. O conjunto de raízes do coletor de lixo (abreviadamente “Raízes GC”) inclui perfis de usuário padrão; por padrão, os links simbólicos em /var/guix/gcroots representam essas raízes do GC. Novas raízes de GC podem ser adicionadas com guix build --root, por exemplo (veja Invocando guix build). O comando guix gc --list-roots os lista.

Antes de executar guix gc --collect-garbage para liberar espaço, geralmente é útil remover gerações antigas dos perfis de usuário; dessa forma, compilações de pacotes antigos referenciadas por essas gerações podem ser recuperadas. Isso é conseguido executando guix package --delete-generations (veja Invocando guix package).

Nossa recomendação é executar uma coleta de lixo periodicamente ou quando houver pouco espaço em disco. Por exemplo, para garantir que pelo menos 5 GB estejam disponíveis no disco, basta executar:

guix gc -F 5G

É perfeitamente seguro executar como um trabalho periódico não interativo (veja Execução de trabalho agendado, para saber como configurar tal trabalho). Executar guix gc sem argumentos coletará o máximo de lixo possível, mas isso geralmente é inconveniente: você pode ter que reconstruir ou baixar novamente um software que está "morto" do ponto de vista do GC, mas que é necessário para construir outras peças de software - por exemplo, a cadeia de ferramentas do compilador.

O comando guix gc tem três modos de operação: pode ser usado para coletar o lixo de quaisquer arquivos mortos (o padrão), para excluir arquivos específicos (a opção --delete), para imprimir lixo- informações do coletor ou para consultas mais avançadas. As opções de coleta de lixo são as seguintes:

--collect-garbage[=min]
-C [min]

Colete lixo, ou seja, arquivos e subdiretórios /gnu/store inacessíveis. Esta é a operação padrão quando nenhuma opção é especificada.

Quando min for fornecido, pare quando min bytes forem coletados. min pode ser um número de bytes ou pode incluir uma unidade como sufixo, como MiB para mebibytes e GB para gigabytes (veja especificações de tamanho em GNU Coreutils).

Quando min for omitido, colete todo o lixo.

--free-space=free
-F free

Colete o lixo até que o espaço free esteja disponível em /gnu/store, se possível; free denota espaço de armazenamento, como 500MiB, conforme descrito acima.

Quando free ou mais já estiver disponível em /gnu/store, não faça nada e saia imediatamente.

--delete-generations[=duração]
-d [duração]

Antes de iniciar o processo de coleta de lixo, exclua todas as gerações anteriores a duração, para todos os perfis de usuário e gerações do ambiente pessoal. Quando executado como root, isso se aplica a todos os perfis de todos os usuários.

Por exemplo, este comando exclui todas as gerações de todos os seus perfis com mais de 2 meses (exceto as gerações atuais) e depois libera espaço até que pelo menos 10 GiB estejam disponíveis:

guix gc -d 2m -F 10G
--delete
-D

Tentativa de excluir todos os arquivos e diretórios de armazém especificados como argumentos. Isso falhará se alguns dos arquivos não estiverem no armazém ou se ainda estiverem ativos.

--list-failures

Listar itens de armazém correspondentes a falhas de compilação em cache.

Isso não imprime nada, a menos que o daemon tenha sido iniciado com --cache-failures (veja --cache-failures).

--list-roots

Listar as raízes do GC de propriedade do usuário; quando executado como root, listar todas as raízes do GC.

--list-busy

Listar itens de armazém em uso por processos em execução no momento. Esses itens de armazém são efetivamente considerados raízes GC: eles não podem ser excluídos.

--clear-failures

Remova os itens de armazém especificados do cache de compilação com falha.

Novamente, essa opção só faz sentido quando o daemon é iniciado com --cache-failures. Caso contrário, não faz nada.

--list-dead

Exibe a lista de arquivos e diretórios mortos ainda presentes no armazém, ou seja, arquivos e diretórios que não podem mais ser acessados de nenhuma raiz.

--list-live

Exibe a lista de arquivos e diretórios do armazém ativa.

Além disso, as referências entre arquivos de armazém existentes podem ser consultadas:

--references
--referrers

Listar as referências (respectivamente, os referenciadores) dos arquivos de armazém fornecidos como argumentos.

--requisites
-R

Liste os requisitos dos arquivos de armazém passados como argumentos. Os requisitos incluem os próprios arquivos de armazém, suas referências e as referências destes, recursivamente. Em outras palavras, a lista retornada é o fechamento transitivo dos arquivos de armazém.

Veja Invocando guix size, para uma ferramenta para criar o perfil do tamanho do fechamento de um elemento. Veja Invocando guix graph, para uma ferramenta para visualizar o grafo de referências.

--derivers

Retorna a(s) derivação(ões) que levam aos itens de armazém fornecidos (veja Derivações).

Por exemplo, este comando:

guix gc --derivers $(guix package -I ^emacs$ | cut -f4)

retorna o(s) arquivo(s) .drv que levam ao pacote emacs instalado no seu perfil.

Note que pode haver zero arquivos .drv correspondentes, por exemplo porque esses arquivos foram coletados como lixo. Também pode haver mais de um .drv correspondente devido a derivações de saída fixa.

Por fim, as seguintes opções permitem que você verifique a integridade do armazém e controle o uso do disco.

--verify[=opções]

Verifique a integridade do armazém.

Por padrão, certifique-se de que todos os itens de armazém marcados como válidos no banco de dados do daemon realmente existam em /gnu/store.

Quando fornecido, opções deve ser uma lista separada por vírgulas contendo um ou mais de contents e repair.

Ao passar --verify=contents, o daemon calcula o hash de conteúdo de cada item do armazém e o compara com seu hash no banco de dados. Incompatibilidades de hash são relatadas como corrupções de dados. Como ele percorre todos os arquivos no armazém, esse comando pode levar muito tempo, especialmente em sistemas com uma unidade de disco lenta.

Usar --verify=repair ou --verify=contents,repair faz com que o daemon tente reparar itens corrompidos do armazém buscando substitutos para eles (veja Substitutos). Como o reparo não é atômico e, portanto, potencialmente perigoso, ele está disponível apenas para o administrador do sistema. Uma alternativa leve, quando você sabe exatamente quais itens no armazém estão corrompidos, é guix build --repair (veja Invocando guix build).

--optimize

Otimize o armazém vinculando fisicamente arquivos idênticos — isso é deduplication.

O daemon executa a desduplicação após cada importação bem-sucedida de build ou archive, a menos que tenha sido iniciado com --disable-deduplication (veja --disable-deduplication). Portanto, essa opção é útil principalmente quando o daemon estava em execução com --disable-deduplication.

--vacuum-database

Guix uses an sqlite database to keep track of the items in (veja O armazém). Over time it is possible that the database may grow to a large size and become fragmented. As a result, one may wish to clear the freed space and join the partially used pages in the database left behind from removed packages or after running the garbage collector. Running sudo guix gc --vacuum-database will lock the database and VACUUM the store, defragmenting the database and purging freed pages, unlocking the database when it finishes.


Próximo: Invocando guix pull, Anterior: Invocando guix locate, Acima: Gerenciamento de pacote   [Conteúdo][Índice]