Correção “Não é possível bloquear o diretório de administração (/var/lib/dpkg/)” no Ubuntu
Ao usar o comando apt-get ou a relativamente nova ferramenta de gerenciamento de pacotes APT no Ubuntu Linux ou seus derivados, como o Linux Mint (que eu realmente uso como meu sistema operacional principal para fazendo trabalho diário), você pode ter encontrado o erro – “não foi possível bloquear o diretório de administração (/var/lib/dpkg/) é outro processo que o utiliza ” em a linha de comando.
Este erro pode ser muito irritante, especialmente para novos usuários de Linux (Ubuntu) que podem não saber exatamente a causa do erro.
Abaixo está um exemplo que mostra o erro de arquivo de bloqueio no Ubuntu 16.10:
tecmint@TecMint:~$ sudo apt install neofetch
[sudo] password for tecmint:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg), is another process using it?
A saída abaixo é outra instância possível do mesmo erro:
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
Como você pode resolver o erro acima caso o encontre no futuro? Existem várias maneiras de lidar com esse(s) erro(s), mas neste guia examinaremos as duas maneiras mais fáceis e provavelmente mais eficazes de resolvê-lo.
1. Encontre e elimine todos os processos apt-get ou apt
Execute o comando abaixo para gerar uma lista de todos os processos cujo nome contém a palavra apt, você obterá uma lista incluindo todos os apt ou apt-get< processos usando comandos ps
e grep junto com um pipeline.
ps -A | grep apt
Para cada processo apt-get ou apt que você pode ver na saída do comando acima, elimine cada processo usando o comando abaixo.
O ID do processo (PID) é encontrado na primeira coluna da imagem acima.
sudo kill -9 processnumber
OR
sudo kill -SIGKILL processnumber
Por exemplo, no comando abaixo onde 9
é o número do sinal SIGKILL, irá matar o primeiro processo apt:
sudo kill -9 13431
OR
sudo kill -SIGKILL 13431
2. Exclua os arquivos de bloqueio
Um arquivo de bloqueio simplesmente impede o acesso a outro(s) arquivo(s) ou a alguns dados em seu sistema Linux. Este conceito está presente no Windows e em outros sistemas operacionais também.
Depois de executar um comando apt-get ou apt, um arquivo de bloqueio é criado em qualquer um desses diretórios /var/lib/apt/lists/, /var/lib/dpkg/ e /var/cache/apt/archives/.
Isto ajuda a evitar que o processo apt-get ou apt que já está em execução seja interrompido por um usuário ou por outros processos do sistema que precisariam trabalhar com arquivos usados por apt-get ou apt. Quando a execução do processo terminar, o arquivo de bloqueio será excluído.
Importante: Caso um bloqueio ainda esteja existindo nos dois diretórios acima sem nenhum processo perceptível do apt-get ou do apt em execução, isso pode significar que o processo foi retido por um motivo ou outro, portanto, você precisa excluir os arquivos de bloqueio para eliminar o erro.
Primeiro execute o comando abaixo para remover o arquivo de bloqueio no diretório /var/lib/dpkg/
:
sudo rm /var/lib/dpkg/lock
Depois, force o(s) pacote(s) a reconfigurar assim:
sudo dpkg --configure -a
Como alternativa, exclua os arquivos de bloqueio em /var/lib/apt/lists/
e no diretório de cache conforme abaixo:
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
A seguir, atualize sua lista de fontes de pacotes da seguinte maneira:
sudo apt update
OR
sudo apt-get update
Concluindo, percorremos dois métodos importantes para lidar com um problema comum enfrentado pelos usuários do Ubuntu (e seus derivados), ao executar apt-get ou apt, bem como comandos de aptidão.
Você tem algum outro método confiável para compartilhar destinado a lidar com esse erro comum? Então entre em contato conosco através do formulário de feedback abaixo.
Além disso, você também pode aprender como encontrar e encerrar processos em execução e ler um guia simples para comandos kill, pkill e killall para encerrar um processo no Linux.