Cargo build travou: "Blocking waiting for file lock" — como corrigir

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: quando a compilação Rust se torna uma aventura

\n\n

Você decidiu compilar o Parity (ou qualquer outro projeto Rust complexo) a partir do código fonte. O comando cargo build foi executado, o terminal fica em silêncio e, após um minuto, você vê a mensagem familiar para muitos:

\n\n
Blocking waiting for file lock on the registry index
\n\n

A compilação trava completamente. Ctrl+C não adianta, reiniciar o terminal também não. Familiar? Este problema é um dos mais populares no Stack Overflow (milhares de visualizações), e hoje vamos dissecá-lo por completo.

\n\n

Neste artigo, eu, como seu guia no mundo do Rust, explicarei:
\n- Por que esse erro ocorre?
\n- Como corrigi-lo em 30 segundos?
\n- Como evitar que ele aconteça?
\n- E vamos dar uma olhada nos bastidores do Cargo.

\n\n

Vamos lá! 🚀

\n\n

De onde vem o "Blocking waiting for file lock on the registry index"?

\n\n

Primeiro, vamos traduzir esse erro da linguagem do Cargo para o português:

\n\n

«Eu, Cargo, quero baixar ou atualizar a lista de pacotes do registro (registry), mas não consigo — o arquivo de bloqueio já está ocupado por outro processo. Aguardando...»

\n\n

No ecossistema Rust, o cargo usa bloqueios de arquivo (arquivos .lock) para evitar que dois processos tentem escrever no cache do registro (~/.cargo/registry) ao mesmo tempo. Isso protege contra corrupção de dados, mas às vezes o bloqueio "gruda".

\n\n

Principais causas da trava

\n
    \n
  • Encerramento abrupto de uma compilação anterior — você fechou o terminal, o computador desligou ou o cargo build falhou com erro, mas o arquivo de bloqueio permaneceu.
  • \n
  • Duas instâncias do Cargo no mesmo projeto — você iniciou a compilação em duas janelas de terminal simultaneamente.
  • \n
  • Compilação do Parity a partir do código fonte — este projeto puxa uma quantidade enorme de dependências (centenas de crates), e o Cargo pode travar na fase de indexação, especialmente em máquinas fracas ou com internet lenta.
  • \n
  • Problemas de permissão de acesso — raro, mas acontece quando o diretório ~/.cargo pertence a outro usuário.
  • \n
  • Sistema de arquivos sem suporte a bloqueios — por exemplo, alguns compartilhamentos de rede ou WSL sem configuração adequada.
  • \n
\n\n

5 maneiras de resolver (da rápida à confiável)

\n\n

🔧 Método 1: Matar o processo Cargo (o mais rápido)

\n

Se você tem certeza de que nenhuma outra compilação está em execução, basta finalizar o processo que está segurando o bloqueio.

\n\n

Linux/macOS:

\n
pkill cargo\n# ou de forma mais agressiva:\nkillall -9 cargo
\n\n

Windows (PowerShell):

\n
Get-Process cargo | Stop-Process -Force
\n\n

Depois disso, execute cargo build novamente. Em 80% dos casos, isso é suficiente.

\n\n

🔧 Método 2: Remover o arquivo de bloqueio manualmente

\n

Se o primeiro método não funcionar, vá até o diretório do registro e remova o arquivo de bloqueio.

\n\n

Caminho:

\n
# Linux/macOS\nrm -f ~/.cargo/registry/.cache-lock\nrm -f ~/.cargo/registry/.package-cache\n\n# Windows (cmd)\ndel %USERPROFILE%\\.cargo\\registry\\.cache-lock\ndel %USERPROFILE%\\.cargo\\registry\\.package-cache
\n\n

Após isso, o Cargo criará um novo arquivo de bloqueio na próxima execução. Importante: certifique-se de que nenhum outro processo Cargo está em execução, caso contrário, você corre o risco de danificar o cache.

\n\n

🔧 Método 3: Cargo clean — a opção nuclear

\n

Se nada mais funcionar, limpe tudo o que foi acumulado. Isso removerá a pasta target e redefinirá o cache de dependências para o projeto atual. A próxima compilação será mais demorada, mas será limpa.

\n\n
cargo clean
\n\n

Depois disso, tente compilar o projeto novamente:

\n
cargo build
\n\n

Este método é especialmente útil se você estava compilando o Parity ou outro projeto com uma árvore de dependências enorme.

Blogs

Book Recommendations