Pesquisa de site

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.