Embora usando o comando apt-get ou a relativamente nova ferramenta de gerenciamento de pacotes APT no Ubuntu Linux ou suas derivadas como o Linux Mint (que eu realmente uso como meu sistema operacional principal para fazer o trabalho diário), você pode ter encontrado o erro – “incapaz de bloquear o diretório de administração (/var/lib/dpkg/) é outro processo usando-o” na linha de comando.
Este erro pode ser tão irritante especialmente para novos usuários Linux (Ubuntu) que podem não saber exatamente a causa do erro.
Below é um exemplo, mostrando o erro de arquivo de bloqueio no Ubuntu 16.10:
tecmint@TecMint:~$ sudo apt install neofetch 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 possível instância 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 no caso de esbarrar nele no futuro? Existem várias maneiras de lidar com este(s) erro(s), mas neste guia, vamos percorrer as duas maneiras mais fáceis e provavelmente as mais eficazes de resolvê-lo.
Localizar e Matar todos os processos apt-get ou apt
Executar o comando abaixo para gerar uma lista de todos os processos cujo nome compreende a palavra apt, você obterá uma lista com todos os processos apt ou apt-get usando os comandos ps
e grep juntamente com um pipeline.
$ ps -A | grep apt
Para cada processo apt-get ou apt que você puder ver na saída do comando acima, mate cada processo usando o comando abaixo.
O ID do processo (PID) é encontrado na primeira coluna da captura de tela acima.
$ sudo kill -9 processnumberOR$ sudo kill -SIGKILL processnumber
Por exemplo, no comando abaixo onde 9
é o número do sinal SIGKILL, matará o primeiro processo do apt:
$ sudo kill -9 13431OR$ sudo kill -SIGKILL 13431
Delete the lock Files
Um arquivo de lock simplesmente impede o acesso a outro(s) arquivo(s) ou alguns dados no seu sistema Linux, este conceito está presente no Windows e em outros sistemas operacionais também.
Quando você executa um comando apt-get ou apt, um arquivo lock é criado sob qualquer um desses diretórios /var/lib/apt/lists/, /var/lib/dpkg/ e /var/cache/apt/archives/.
Isso ajuda a evitar que o processo apt-get ou apt que já está sendo executado seja interrompido por um usuário ou por outros processos do sistema que precisariam trabalhar com arquivos sendo usados pelo apt-get ou apt. Quando o processo termina a execução, o arquivo lock é então excluído.
Important: Caso um lock ainda esteja saindo nos dois diretórios acima sem nenhum processo apt-get ou apt em execução, isso pode significar que o processo foi mantido por uma razão ou outra, portanto você precisa excluir os arquivos lock para limpar o erro.
Execute primeiro 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
Alternativamente, exclua os arquivos de bloqueio no diretório /var/lib/apt/lists/
e o diretório de cache como abaixo:
$ sudo rm /var/lib/apt/lists/lock$ sudo rm /var/cache/apt/archives/lock
Next, atualize sua lista de fontes de pacotes da seguinte forma:
$ sudo apt updateOR$ sudo apt-get update
Em conclusão, nós passamos por dois métodos importantes para lidar com um problema comum enfrentado pelos usuários do Ubuntu (e suas derivadas), enquanto executando os comandos apt-get ou apt, assim como os comandos aptitude.
Você tem algum outro método confiável para compartilhar, destinado a lidar com este erro comum? Então entre em contato conosco através do formulário de feedback abaixo.
Além disso, você também pode querer aprender como encontrar e matar processos em execução e ler um guia simples de comandos kill, pkill e killall para terminar um processo no Linux.