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



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 o bloqueio / var / lib / dpkg / lock - aberto (11: recurso temporariamente indisponível)
E: Não foi possível bloquear o diretório de administração (/ var / lib / dpkg /); outro processo está sendo usado?
De fato, há um erro semelhante que você pode ver:
E: Não foi possível obter o bloqueio / var / lib / apt / lists / lock - aberto (11: Recurso temporariamente indisponível)
E: Não foi possível bloquear o diretório / var / lib / apt / lists /
E: Não foi possível obter o bloqueio / 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á sendo usado?
Em alguns casos, você pode vê-lo enquanto usa o Software Center:
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, Incapaz de bloquear o diretório / var / cache / apt / archives / , e o interessante é que as correções também são semelhantes.

Corrigindo o erro "Não foi possível bloquear o diretório de administração (/ var / lib / dpkg /)"

Você vê esse 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 podem levar a situações injustificadas e um possível sistema danificado.
Vamos ver quais etapas você pode executar para corrigir esse problema de 'incapaz de 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 você estiver usando a linha de comando, verifique se um aplicativo como Software Center, Software Updater, Synaptic, Gdebi está executando alguma atualização / instalação. Se for esse o caso, aguarde o programa concluir o processo em execução.
Se não houver esse aplicativo em execução, verifique todas as janelas abertas do terminal e veja se você está executando uma atualização ou instalando um programa. Se sim, aguarde o término.
Se nenhuma das opções acima estiver acontecendo, verifique qual outro processo está executando o comando apt (gerenciador de pacotes para manipular o software). Use este comando:
ps aux | grep -i apt
Para mim, mostrou esta saída:
abhishek@nuc:~$ 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ê perceber que o apt está sendo usado por um programa como o apt.systemd.daily update , você está com sorte, meu caro leitor.
Este é um daemon que é executado em segundo plano e verifica se há atualizações do sistema automaticamente quando você inicia o sistema.
Eu acho que no Ubuntu 18.04 e versões superiores, ele pode até tentar baixar e instalar as importantes atualizações de segurança por conta própria. Pelo menos é o que vejo nas configurações padrão da ferramenta Software & Updates na área de trabalho do Ubuntu.
Atualizações autônomas
Ubuntu pode instalar atualizações de segurança em segundo plano
Se você estiver no servidor Ubuntu, verifique se possui atualizações autônomas ativadas, verificando o conteúdo do arquivo /etc/apt/apt.conf.d/20auto-upgrades .
Portanto, se você perceber que o apt.systemd.daily está usando o processo apt, tudo o que você precisa fazer é aguardar alguns minutos. Quando a atualização automática terminar, você poderá instalar o software normalmente.
Como solução permanente, você pode desativar completamente a verificação de atualizações automáticas e atualizações autônomas. No entanto, não aconselho isso por motivos de segurança.
Agora, esse era o cenário simples e poderia ser tratado com facilidade. Mas isso nem sempre pode ser o caso. Se algum outro programa estiver usando o apt, você precisará lidar com isso de maneira diferente.

Método 1:

Use a linha de comando do Linux para encontrar e eliminar o processo em execução . Para fazer isso, use o comando abaixo:
ps aux | grep -i apt
Isso mostrará o ID do processo executando o apt ou apt-get. No exemplo abaixo, o ID do processo é 7343. Você pode ignorar a última linha que contém 'grep –color = auto'.
Matar o processo apt no Ubuntu
Você pode usar o ID do processo para finalizá-lo enviando o sinal SIGTERM . Substitua o <process_id> pelo número que você obteve na saída do comando anterior.
sudo kill <process_id>
Verifique se o processo foi interrompido executando o 'ps aux | comando grep -i apt '. Se ele ainda estiver em execução, force-o com o sinal SIGKILL:
sudo kill -9 <process_id>
Outra maneira mais fácil seria usar o comando killall . Isso matará todas as instâncias de um programa em execução:
sudo killall apt apt-get

Método 2

O método acima resolveria o problema para você na maioria dos casos. Mas o meu caso foi um pouco diferente. Eu estava atualizando meu sistema e fechei o terminal acidentalmente. Por esse motivo, não houve processos executando o apt, mas ele ainda me mostrou o erro.
Nesse caso, a causa raiz é o arquivo de bloqueio. Como mencionado anteriormente, os arquivos de bloqueio são usados ​​para impedir 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 tiver sido finalizado corretamente, os arquivos de bloqueio não serão excluídos e, portanto, impedirão novas instâncias de comandos apt-get ou 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 mantém os arquivos de bloqueio. Verifique o erro e veja de quais arquivos de bloqueio está reclamando e obtenha o ID dos processos que mantêm esses arquivos de bloqueio.
Execute esses comandos um por um.
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 mate os processos como este (substitua o <process_id> pelos números que você obteve dos comandos acima):
sudo kill -9 <process_id>
Agora você pode remover com segurança os arquivos de bloqueio usando os comandos abaixo:
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:
sudo dpkg --configure -a
Agora, se você executar o comando sudo apt update, tudo ficará bem.

Solução de problemas 1: “Não é possível adquirir o bloqueio de front-end do dpkg”

Se você vir um erro como este:
abhishek@nuc:~$ 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 frontend de bloqueio usando o comando lsof, conforme discutido nas seções anteriores:
sudo lsof /var/lib/dpkg/lock-frontend
Isto é o que isso mostrou para mim:
abhishek@nuc:~$ 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 ' autônoma ', isso significa que atualizações de segurança autônoma estão em execução. Você deve esperar o processo terminar . Basicamente, é isso que eu discuti no método 0, mas você provavelmente pulou isso.
Se o COMMAND for outra coisa, você pode interromper o processo e remover o arquivo de bloqueio. Você pode ver a identificação do processo na coluna PID. Use este PID para interromper o processo. Depois disso, remova o arquivo de bloqueio e execute o comando update para verificar se ele foi corrigido.
sudo kill -9 PID
sudo rm /var/lib/dpkg/lock-frontend
sudo apt update

Solução de problemas 2: “dpkg: error: o dpkg frontend está bloqueado por outro processo”

Se você vir o erro "o dpkg frontend está bloqueado por outro processo" ao executar as etapas no método 2, você precisará de uma etapa adicional.
Primeiro, descubra o ID do processo que está mantendo o arquivo de bloqueio.
sudo lsof /var/lib/dpkg/lock-frontend
O comando acima fornecerá os detalhes dos processos usando os arquivos de bloqueio. Use o ID do processo para eliminar este programa:
sudo kill -9 PID
Agora você pode remover o bloqueio e reconfigurar o dpkg:
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a
Isso funcionou para você? Qual método o corrigiu para você?
Espero que esta pequena dica tenha ajudado a corrigir o erro "Não foi possível obter o bloqueio / var / lib / dpkg / lock". Se sim, informe-me nos comentários qual método funcionou para você.

Close Menu