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 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:
ps aux | grep -i apt
Para mim, ele mostrou esta saída:
[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
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.
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:
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’.
Você pode usar a identificação do processo para encerrá-lo enviando o sinal SIGTERM. Substitua o
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:
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:
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.
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
sudo kill -9
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 deve ficar bem.
Solução de problemas 1: Incapaz de adquirir o bloqueio de frontend do dpkg
Se você vir um erro como este:
[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:
sudo lsof /var/lib/dpkg/lock-frontend
Isso é o que me mostrou:
[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.
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.
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:
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
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.
Via itsfoss.com. Você pode conferir o post original em inglês:
How to Fix ‘E: Could not get lock /var/lib/dpkg/lock’ Error in Ubuntu LinuxÚltima atualização deste artigo: 1 de june de 2020