Próximo: Invocando guix pull
, Anterior: Invocando guix locate
, Acima: Gerenciamento de pacote [Conteúdo][Índice]
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.
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
).
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.
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]