Se você está tendo problema com bloqueio ao usar o apt, veja como corrigir o erro “Could not get lock /var/lib/dpkg/lock”.
Embora uma distribuição Linux possa optar por instalar o software da maneira que achar melhor, na maioria das vezes, eles podem, no mínimo, instalá-lo de seus repositórios oficiais.
Esses repositórios podem ser mantidos diretamente pela distribuição e/ou baseados em outras, como acontece com Debian->Ubuntu->Linux Mint, por exemplo.
Nesses casos, o gerenciador de pacotes é o APT, e às vezes podemos ver a mensagem “Could not get lock /var/lib/dpkg/lock” no terminal ou mesmo em alguma ferramenta com interface gráfica.
Este artigo tentará esclarecer o que é e como corrigir o erro que nos faz ver a mensagem “Could not get lock /var/lib/dpkg/lock”, mas posso dizer que há uma solução simples que pode resolver esse e muitos outros problemas, seja em uma distribuição baseada em Linux ou em qualquer outro sistema operacional, inclusive mobile.
O que significa o erro “Could not get lock /var/lib/dpkg/lock”?
Em geral, quando vemos o erro “Could not get lock /var/lib/dpkg/lock
“, o terminal ou o software que o mostra está indicando que outro processo APT está em execução e usa o mesmo banco de dados que estamos tentando acessar.
Em outras palavras, o novo processo APT tenta bloquear o arquivo /var/lib/dpkg/lock
, falha porque está ocupado e nos informa sobre isso.
Mais comumente, outro processo APT, como o processo de atualização, já está em execução e bloqueou o arquivo de bloqueio, portanto, não pode dar o primeiro passo, que é exatamente bloquear o referido arquivo.
Como corrigir o erro “Could not get lock /var/lib/dpkg/lock”
Para Como corrigir o erro “Could not get lock /var/lib/dpkg/lock”, a primeira coisa que devemos fazer, especialmente se não gostamos de puxar o terminal, é verificar se há algum aplicativo de software em execução.
Por exemplo, no Ubuntu podemos ver se o Ubuntu Software (fork do GNOME Software) está fazendo algo, e também o Software Update, o aplicativo que se encarrega, como o próprio nome sugere, de atualizar o software.
Se não virmos nenhum desses aplicativos abertos, também podemos iniciar o monitor do sistema e procurá-los, para ver se estão sendo executados em segundo plano.
Os aplicativos que devemos procurar dependerão da distribuição que estivermos usando, pois o Ubuntu Software não está no Kubuntu, nem o Discover na versão principal do Debian.
Cada distribuição gerencia o software com as ferramentas que escolhe adicionar e pode bloquear o arquivo GNOME Software, o Discover, qualquer outra loja de software ou a ferramenta de atualização.
Quer estejam em primeiro plano ou em segundo plano, uma opção é ter paciência e esperar para ver se o trabalho que você está fazendo está concluído. Às vezes vemos uma mensagem de erro e queremos que ela seja corrigida instantaneamente, quando a solução é esperar um pouco.
Uma reinicialização ou logoff deve ser suficiente
Muitos anos atrás, um amigo sempre me perguntava como consertar seus travamentos no Windows. Chegou uma hora que ele quase nem perguntou mais, e eu recomendei que reiniciasse porque quase sempre era a melhor solução para ele.
No caso do erro “Could not get lock /var/lib/dpkg/lock” também é uma solução possível.
Ao começar do zero, você pode começar com o arquivo bloqueado pela ferramenta de atualização, mas ele irá desbloqueá-lo logo, quando você verificar que não há nada novo para instalar ou existe, mas você já nos informou sobre isso.
Claro, não é a solução mais elegante, mas é a menos cara e pode ser a melhor e mais rápida se você não tiver nenhum motivo para mantê-lo conectado.
Quando a mensagem “failed to lock /var/lib/dpkg/lock” não desaparece
Quando reiniciamos ou esperamos um pouco e continuamos a ver a mensagem, o que está acontecendo conosco não é algo normal. O bloqueio foi “pendurado” ou, valendo a redundância, bloqueado, então já vale a pena puxar o terminal.
Passo 1. A primeira coisa que faremos é abrir um terminal e identificar o processo APT em execução com este comando:
sudo lsof /var/lib/dpkg/lock
Passo 2. Com o processo identificado, o matamos com este comando, substituindo o PID pelo número do processo que teremos descoberto com o comando do passo 1:
sudo kill PID
Passo 3. Por fim, tentamos novamente realizar o gerenciamento APT que o erro estava retornando. Deve nos permitir seguir em frente.
Se isso não resolver, podemos fazer algo mais drástico, então você terá que tomar precauções ou tomar medidas extras. Isso é feito “da maneira mais difícil”: removendo o arquivo /var/lib/dpkg/lock.
Os passos a seguir para fazê-lo com segurança seriam estes:
Passo 1. Fazemos um backup do arquivo /var/lib/dpkg/lock
. Como o que faremos é copiá-lo, podemos usar o gerenciador de arquivos, pois não são necessárias permissões de superusuário. Do terminal isso pode ser feito com cp /var/lib/dpkg/lock new-path
, alterando “new-path” para o caminho onde queremos fazer o backup.
Passo 2. Excluímos o arquivo. Para isso, será necessário obter privilégios. Se nosso gerenciador de arquivos permitir, podemos escrever, por exemplo, “sudo nautilus” sem as aspas para removê-lo com uma interface gráfica, mas acho que será mais rápido e fácil abrir o terminal e escrever:
sudo rm /var/lib/dpkg/lock
Passo 3. Com o arquivo excluído, podemos tentar novamente o que não nos foi permitido. Se digitarmos sudo apt update e não virmos o erro, o bug foi corrigido.
Reinicialização e paciência são geralmente melhores
Embora existam maneiras de corrigi-lo, como as explicadas no ponto anterior, o erro “failed to lock /var/lib/dpkg/lock” não é nada sério e pode ser corrigido esperando um pouco ou reiniciando.
É algo que geralmente se conserta e, se não, uma reinicialização é a menos agressiva e mais eficaz.
Agora, isso é Linux, e tudo ou quase tudo tem solução do terminal, sem falar que podemos “matar” o que quisermos.
Seja qual for o motivo, espero que o que está aqui exposto tenha podido ajudá-lo, seja para fazer a mensagem desaparecer com um processo mais agressivo ou para que você tenha um pouco de paciência.
Para mais opções sobe como corrigir o erro “Could not get lock /var/lib/dpkg/lock”, dê uma olhada nesse outro tutorial:
Pacotes quebrados: veja como corrigir isso em sistemas baseados no Debian