Como corrigir o erro ‘E: não foi possível obter o erro lock / var / lib / dpkg / lock’ no Ubuntu Linux

1 de junho de 2020

Recentemente, eu estava tentando instalar um aplicativo usando o comando apt no Ubuntu quando encontrei o seguinte erro:

E: Não foi possível obter lock/var/lib/dpkg/lock - open (11: Recurso temporariamente indisponível) E: Não é possível bloquear o diretório de administração (/ var/lib/dpkg /), outro processo está usando-o?

Na verdade, você pode ver um erro semelhante:

E: Não foi possível obter lock/var/lib/apt/lists/lock - open (11: Recurso temporariamente indisponível) E: Não é possível bloquear o diretório/var/lib/apt/lists/ E: Não foi possível obter lock/var/lib/dpkg/lock - open (11: Recurso temporariamente indisponível) E: Não é possível bloquear o diretório de administração (/ var/lib/dpkg /), outro processo está usando-o?

Em alguns casos, você pode vê-lo ao usar o Centro de software:

Não foi possível obter o bloqueio Não foi possível obter o bloqueio Não foi possível obter o erro de bloqueio no Ubuntu Software Center Esses erros são muito semelhantes a outro erro comum do Ubuntu, Não foi possível bloquear o diretório/var/cache/apt/archives /, e o interessante é que as correções também são semelhantes.

Corrigindo o erro Incapaz de bloquear o diretório de administração (/ var/lib/dpkg /)

Você vê este erro porque algum outro programa está tentando atualizar o Ubuntu. Quando um comando ou aplicativo está atualizando o sistema ou instalando um novo software, ele bloqueia o arquivo dpkg (gerenciador de pacotes Debian).

Esse bloqueio é feito para que dois processos não alterem o conteúdo ao mesmo tempo, pois isso pode levar a uma situação injustificada e um possível sistema quebrado.

Vamos ver quais etapas você pode seguir para corrigir esse problema de ‘não é possível bloquear o diretório de administração’.

Método 0:

A primeira coisa que você deve fazer é verificar se algum outro programa pode estar executando a atualização do sistema ou instalando um programa.

Se estiver usando a linha de comando, verifique se um aplicativo como Software Center, Software Updater, Synaptic package manager, Gdebi está executando alguma atualização/instalação. Se for esse o caso, aguarde o programa terminar o processo de execução.

Se esse aplicativo não estiver em execução, verifique todas as janelas de terminal abertas e veja se você está executando uma atualização ou instalando um programa. Se sim, espere até que termine.

Se nada do acima estiver acontecendo, verifique qual outro processo está executando o comando apt (gerenciador de pacotes para lidar com o software). Use este comando:

Comandos para usar no terminal

ps aux | grep -i apt

Para mim, ele mostrou esta saída:

Comandos para usar no terminal

[email protected]:~$ ps aux | grep -i apt root 1464 0.0 0.0 4624 772 ? Ss 19:08 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update root 1484 0.0 0.0 4624 1676 ? S 19:08 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update _apt 2836 0.8 0.1 96912 9432 ? S 19:09 0:03 /usr/lib/apt/methods/http abhishek 6172 0.0 0.0 21532 1152 pts/1 S+ 19:16 0:00 grep --color=auto -i apt

Apt Systemd Daily

Se você ver que o apt está sendo usado por um programa como apt.systemd.daily update, você está com sorte caro leitor.

Este é um daemon que é executado em segundo plano e verifica se há atualizações do sistema automaticamente quando você inicia o sistema.

No Ubuntu 18.04 e versões superiores, ele pode até tentar baixar e instalar as atualizações de segurança importantes por conta própria. Pelo menos isso é o que vejo nas configurações padrão da ferramenta Software e atualizações na área de trabalho do Ubuntu.

Atualizações autônomas Atualizações autônomas O Ubuntu pode instalar atualizações de segurança em segundo plano Se você estiver no servidor Ubuntu, poderá verificar se há atualizações autônomas habilitadas verificando o conteúdo do arquivo/etc/apt/apt.conf.d/20auto-upgrades.

Portanto, se você vir que apt.systemd.daily está usando o processo apt, tudo o que você precisa fazer é esperar alguns minutos. Quando a atualização automática terminar, você poderá instalar o software normalmente.

Como uma solução permanente, você pode desativar a verificação de atualização automática e atualizações autônomas por completo, no entanto, não aconselho isso por razões de segurança.

Bem, esse era o cenário simples e poderia ser resolvido facilmente. Mas pode nem sempre ser o caso. Se algum outro programa estiver usando o apt, você precisará lidar com isso de forma diferente.

Método 1:

Use a linha de comando do Linux para localizar e eliminar o processo em execução. Para fazer isso, use o comando abaixo:

Comandos para usar no terminal

ps aux | grep -i apt

Isso mostrará a id do processo executando apt ou apt-get. No exemplo abaixo, o id do processo é 7343. Você pode ignorar a última linha que contém ‘grep –color = auto’.

Eliminar o processo apt no Ubuntu

Você pode usar a identificação do processo para encerrá-lo enviando o sinal SIGTERM. Substitua o pelo número obtido na saída do comando anterior.

Comandos para usar no terminal

sudo kill

Verifique se o processo foi interrompido executando o método ‘ps aux | comando grep -i apt ’. Se ainda estiver em execução, force o kill com sinal SIGKILL:

Comandos para usar no terminal

sudo kill -9

Outra maneira mais fácil seria usar o comando killall. Isso eliminará todas as instâncias de um programa em execução:

Comandos para usar no terminal

sudo killall apt apt-get

Método 2

O método acima resolveria o problema para você na maioria dos casos. Mas meu caso foi um pouco diferente. Eu estava atualizando meu sistema e fechei acidentalmente o terminal. Por esse motivo, não havia processos rodando o apt, mas ainda me mostrava o erro.

Nesse caso, a causa raiz é o arquivo de bloqueio. Conforme mencionado anteriormente, os arquivos de bloqueio são usados para evitar que dois ou mais processos usem os mesmos dados. Quando os comandos apt ou apt-get são executados, eles criam arquivos de bloqueio em alguns lugares. Se o comando apt anterior não foi encerrado corretamente, os arquivos de bloqueio não são excluídos e, portanto, evitam quaisquer novas instâncias de apt-get ou comandos apt.

Para corrigir o problema, tudo o que você precisa fazer é remover os arquivos de bloqueio. Mas antes de fazer isso, seria uma boa ideia interromper qualquer processo que esteja usando os arquivos de bloqueio.

Use o comando lsof para obter o ID do processo que contém os arquivos de bloqueio. Verifique o erro e veja de quais arquivos de bloqueio ele está reclamando e obtenha a id dos processos que contêm esses arquivos de bloqueio.

Execute esses comandos um por um.

Comandos para usar no terminal

sudo lsof /var/lib/dpkg/lock sudo lsof /var/lib/apt/lists/lock sudo lsof /var/cache/apt/archives/lock

É possível que os comandos não retornem nada ou retornem apenas um número. Se eles retornarem pelo menos um número, use o (s) número (s) e elimine os processos como este (substitua o pelos números que você obteve nos comandos acima):

Comandos para usar no terminal

sudo kill -9

Agora você pode remover com segurança os arquivos de bloqueio usando os comandos abaixo:

Comandos para usar no terminal

sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock

Depois disso, reconfigure os pacotes:

Comandos para usar no terminal

sudo dpkg --configure -a

Agora, se você executar o comando sudo apt update, tudo deve ficar bem.

Solução de problemas 1: Incapaz de adquirir o bloqueio de frontend do dpkg

Se você vir um erro como este:

Comandos para usar no terminal

[email protected]:~$ sudo apt install grub-customizer E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

Você deve descobrir qual processo está mantendo o front-end de bloqueio usando o comando lsof conforme discutido nas seções anteriores:

Comandos para usar no terminal

sudo lsof /var/lib/dpkg/lock-frontend

Isso é o que me mostrou:

Comandos para usar no terminal

[email protected]:~$ sudo lsof /var/lib/dpkg/lock-frontend lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME unattende 2823 root 5uW REG 8,2 0 145221 /var/lib/dpkg/lock-frontend

Se você vir a coluna COMMAND ‘unattende’, isso significa que atualizações de segurança autônomas estão em execução. Você deve aguardar o término do processo. Basicamente, foi isso que discuti no método 0, mas provavelmente você o ignorou.

Se o COMANDO for outra coisa, você pode matar o processo e então remover o arquivo de bloqueio. Você pode ver a identificação do processo na coluna PID. Use este PID para encerrar o processo. Depois disso, remova o arquivo de bloqueio e execute o comando update para ver se ele foi corrigido.

Comandos para usar no terminal

sudo kill -9 PID sudo rm /var/lib/dpkg/lock-frontend sudo apt update

Solução de problemas 2: dpkg: erro: o frontend do dpkg está bloqueado por outro processo

Se você ver o erro dpkg frontend está bloqueado por outro processo enquanto executa as etapas no método 2, você precisa de uma etapa adicional.

Primeiro, descubra a id do processo que está mantendo o arquivo de bloqueio.

Comandos para usar no terminal

sudo lsof /var/lib/dpkg/lock-frontend

O comando acima fornecerá os detalhes dos processos que usam os arquivos de bloqueio. Use o ID do processo para encerrar este programa:

Comandos para usar no terminal

sudo kill -9 PID

Agora você pode remover o bloqueio e reconfigurar o dpkg:

Comandos para usar no terminal

sudo rm /var/lib/dpkg/lock-frontend sudo dpkg --configure -a

Funcionou para você? Qual método corrigiu isso para você?

Espero que esta pequena dica tenha ajudado a corrigir o erro Não foi possível obter lock/var/lib/dpkg/lock. Em caso afirmativo, deixe-me saber nos comentários qual método funcionou para você.

Se você ainda estiver enfrentando problemas, me avise. Vou tentar te ajudar.

Quaisquer outras sugestões também são bem-vindas nos comentários.

Confira também a versão original desse post em inglês
Esse post foi originalmente escrito por Abhishek Prakash e publicado no site itsfoss.com. Tradução sujeita a revisão.

How to Fix ‘E: Could not get lock /var/lib/dpkg/lock’ Error in Ubuntu Linux

Propaganda
Blog Comments powered by Disqus.
Propaganda