Questão Não é possível bloquear o diretório de administração (/ var / lib / dpkg /) é outro processo que o utiliza?


Eu recebo este erro ao tentar usar apt-get:

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 posso consertar isso?


838
2017-11-30 02:12


origem


Isso também é verdade se você reiniciar? Talvez algum antigo encadeamento do apt esteja bloqueando o arquivo, você precisa descobrir qual deles e matá-lo ou apenas reinicializar irá fazê-lo. - Bruno Pereira
Este procedimento quase sempre corrige esse problema, e quando isso não acontece, sua saída (o texto do Terminal) é útil às vezes. Se você decidir fazer isso, você pode adicionar este texto à sua pergunta. - Eliah Kagan
Gostaria de sugerir mais uma coisa que você pode notar quando confrontado com este problema. Verifique se suas unidades de disco estão montadas. Se não estiverem, talvez você não consiga adquirir o bloqueio, pois o instalador do pacote não poderá acessar o sistema de arquivos. Espero que isto ajude. :) - Hari
Você pode usar sudo lsof /var/lib/dpkg/lock para encontrar o processo que possui o arquivo de bloqueio (se vazio, suponha que o bloqueio é deixado de uma inicialização anterior e pode ser sudo rmd), então considere fazer um sudo kill -9 <PID> (obter <PID> de lsof saída. - waltinator
Isso pode ser um sinal de que alguma coisa está instalando ou removendo software e bloqueou o banco de dados apt enquanto executa as ações. - Foreever


Respostas:


Isso deve ser usado como último recurso. Se você usar isso descuidadamente, você pode acabar com um sistema quebrado. Por favor, tente o de outros  respostas  primeiro antes de fazer isso.

Você pode excluir o arquivo de bloqueio com o seguinte comando:

sudo rm /var/lib/apt/lists/lock

Você também pode precisar excluir o arquivo de bloqueio no diretório de cache

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

Depois disso, tente abrir o Synaptic novamente.


719
2018-02-07 02:22



ok ... mas por que isso aconteceu? - Jaime Hablutzel
@jaime: provavelmente o apt-get (ou alguma interface GUI para ele) foi interrompido durante a execução, deixando o apt em um estado bloqueado. - bouke
Eu aceitaria isso como a melhor resposta. correto. - Anwar
@AnwarShah não, existem outras considerações antes de remover arquivos do sistema. - Braiam
rm / var / lib / dpkg / lock; dpkg --configure -a: - WitchCraft


Eu vejo praticamente todas as respostas recomendam excluir o bloqueio. Eu não recomendo fazer isso como uma primeira medida; talvez se não houver alternativa. O bloqueio é colocado quando um processo apt está em execução e é removido quando o processo é concluído. Se houver um bloqueio sem processo aparente em execução, isso pode significar que o processo ficou preso por algum motivo.

Se você tentar

ps aux | grep apt

que pegará processos contendo a palavra apt, finalmente. Se você ver um apt-get processo ou um aptitude processo que parece preso, você pode tentar

kill processnumber

e se isso não funcionar tente

kill -9 processnumber

Isso deve matar o processo e pode remover o bloqueio. Matando um apt ou aptitude O processo é inofensivo, a menos que esteja realmente no meio da instalação do pacote. Em qualquer caso, se o processo ficou preso, você provavelmente não tem escolha a não ser matá-lo.

Matando um dpkg processo diretamente, se presente, não é uma boa idéia, porque se dpkg está ativo, provavelmente está manipulando o banco de dados de pacotes e matá-lo pode deixar o banco de dados de pacotes em um estado inconsistente; isto é, corrompido.

Matando um apt-get ou aptitude processo é em geral muito mais seguro.


550
2017-07-03 09:01



@Link Eu não acho que matar dpkg é uma boa ideia, porque geralmente dpkg está manipulando o banco de dados de pacotes diretamente e isso pode causar danos. - Faheem Mitha
Se matar o dpkg pode corromper seu banco de dados, o dpkg foi mal projetado. Período. - Jay Sullivan
para mim, isso resultou em um erro dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. quando correndo sudo apt-get dist-upgrade novamente. A execução do comando resolveu o problema. Eu amo o Nix! - Wayne Phipps
Nota, killall apt-get faz a mesma coisa que o seu ps/kill combo. - Cerin
Note que eu descobri que precisava rodar sudo dkpg --configure -a depois de matar o falso processo para que as coisas voltem ao normal. - starbeamrainbowlabs


Remova seu /var/lib/dpkg/lock arquivo e forçar reconfiguração do pacote.

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

Deve funcionar depois disso.


175
2018-01-29 11:27



estes comandos ajudaram, mas agora, quando tentei instalar novamente, recebi esta resposta: Não foi possível obter o bloqueio / var / cache / apt / archives / lock - open. Eu acho que teria que fazer como problema de desbloqueio anterior, mas por favor me diga as palavras exatas para o comando. Eu sou um principiante absoluto. - kern
sudo - execute o comando como root, rm - remover arquivo. Talvez tente sudo rm /var/cache/apt/archives/lock - kubahaha
Esta não é uma boa sugestão: remover cegamente a sorte pode corromper o estado do dpkg. - poolie
Por que não se consertará hoje em dia? - Marian Klühspies
Isso funcionou para mim. Os aws acima não. - 1rq3fea324wre


Você receberá esta mensagem se esquecer de usar sudo ao executar um comando apt.

Caso contrário, isso é um sinal de que alguma coisa está instalando ou removendo software e bloqueou o banco de dados apt enquanto executa as ações. Os programas que podem fazer isso são:

  • O Centro de Software
  • O gerente de atualização
  • O instalador do link apt (acho que isso agora passa pelo SC)
  • Os utilitários de linha de comando apt-get ou aptitude.
  • O Gerenciador de Pacotes Synaptic

IMPORTANTE: tente o abaixo como último recurso, pois ele pode travar seu sistema. Primeiro tente matar qualquer instância em execução de apt ou aptitude como descrito em A resposta de Faheem.

Você pode forçar o bloqueio removendo o arquivo, mas não é recomendado sem antes fechar o programa que segura a trava com segurança, desde que você poderia causar corrupção ou interromper uma instalação (ruim). O comando fornecido pelo João deve fechar o programa que contém o bloqueio e, em seguida, remover o bloqueio, mas não irá protegê-lo da interrupção da instalação:

sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock   

E o mesmo comando pode ser usado para o bloqueio do cache do apt:

sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock

97
2017-11-30 02:17



Eu estava atualizando meu software quando recebi a mensagem de erro. - raindrop
Isso caiu para mim - umpirsky
sudo fuser -cuk /var/cache/apt/archives/lock reiniciei diretamente meu computador. apt-get está agora desbloqueado. - Maxime R.
Isso caiu todo o meu servidor. - 에이바
Matar apt ou dpkg até o meio não é uma ótima idéia. - poolie


A maneira mais provável de acertar isso é:

  • Inicializar o Ubuntu
  • inicie um terminal
  • tipo sudo apt-get install whatever

e a linha de comando apt sobrepõe com update-manager automaticamente polling.

Então, se você tentar novamente em alguns minutos, isso deve consertá-lo.


67
2017-11-30 03:08



Grande dica em contraste com a meia dúzia de respostas sugerindo apenas remover o arquivo ;-) Eu corri aleatoriamente na edição e muito provavelmente é isso! - Alex
Seguro o suficiente, teve que esperar um pouco antes sudo apt-get install poderia trabalhar. - sargas
Bem Isso não está funcionando sempre, sim eu usei reiniciar muitas vezes. Se não for adequado, tente isto askubuntu.com/a/315791/378845 antes de remover as fechaduras - Menuka Ishan
@menuka, porque não apenas deixar terminar. - poolie
@poolie Porque existem outras restrições que estão impedindo o processo de terminar - Menuka Ishan


Apenas um programa pode conter o bloqueio. Certifique-se de que você não está executando o aptitude, synaptic ou adept. Fechar o programa e executá-lo novamente deve funcionar.Você pode ter synaptic aberto, ou ter outra janela de terminal aberta executando o apt-get, ou ter o gerenciador de atualização em execução.Verifique-o e veja se algum deles está em execução, se algum dos eles estão correndo perto e tente novamente.

Tente este comando no terminal para encontrar o que está sendo executado

ps -e | grep -e apt -e adept | grep -v grep

Nota:
Se isso não imprimir nada, digite o seguinte no terminal para remover o bloqueio

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

Agora você pode instalar qualquer pacote.


48
2017-11-30 04:55



Excluir o arquivo de bloqueio é, o que eu consideraria, uma coisa perigosa para fazer. Se outro processo estiver bloqueado por um motivo válido - e você remover esse arquivo de bloqueio e forçar uma instalação com o que estava fazendo antes - você poderá afetar seriamente, de maneira negativa, o sistema. - Marco Ceppi♦
É por isso que eu tenho dado isso em Nota. Se tudo acima falhar, a única maneira é remover o bloqueio. Não causará nenhum problema enquanto os processos dpkg e apt-get / aptitude não estiverem rodando. - karthick87
pgrep -f 'apt|adept|dpkg' é muito mais curto. - Barry
THX! isso funciona. pgrep -f 'apt | adepto | dpkg' e depois sudo skill (number), mata todos os números e depois instala obras! - creator


Até agora, a melhor maneira de fazê-lo funcionar sem quebrar uma possível instalação em segundo plano (como poderia acontecer ao remover o arquivo de bloqueio), é parar o serviço usando o apt:

Erro:

# sudo apt-get upgrade
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?`

Solução:

sudo systemctl stop apt-daily.timer

Depois de atualizar o sistema, sugiro reativá-lo, pois o bloqueio do bug pode ser corrigido com a atualização.

sudo systemctl start apt-daily.timer 

Eu não verifiquei se esse erro foi corrigido após a atualização. Vou adicionar um novo comentário depois que eu tiver verificado


35
2018-02-02 10:01



Depois de atualizar o sistema e iniciar o serviço apt-daily.timer novamente, não estou enfrentando esse problema até agora. - Jairelee
Isso resolveu meu problema, obrigado. - inkredibl
Este é provavelmente o método mais limpo em comparação com todas as respostas mais votadas acima. Funcionou no meu caso sem falhas, obrigado! - CygnusX1
Isso funcionou perfeitamente em 17.10 também - Elder Geek
Funcionando bem em 18.04. :) - Naveen Kumar V


Primeiro de tudo, devemos verificar qual processo criou o arquivo de bloqueio usando lsof:

sudo lsof /var/lib/dpkg/lock

ou em outra situação em que /var/lib/apt/lists/lock é problemático:

sudo lsof /var/lib/apt/lists/lock

A saída será perto de algo como:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
apt-get   12127 root   4uW  REG  252,1        0    86   /var/lib/apt/lists/lock

Então devemos verificar o que o commad está fazendo, podemos descobrir usando ps, pgrep etc; o comando é apt-get então eu corro:

pgrep apt-get -a

o -a switch lista o comando completo para mim, no meu caso é:

 pgrep -a apt-get
 12127 apt-get update

podemos ver que está funcionando update subcomando, eu poderia executar algo assim também:

ps -f 12127

que produz:

UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     12127 12126  0 09:39 pts/0    S+     0:00 apt-get update

Neste caso eu esperaria por alguns minutos para o recurso ser liberado e se após 2 ou 3 minutos ainda existir problema ou o comando fosse algo que eu não me importava ou não era prejudicial para o sistema (como este apt-get update) Eu mando um SIGTERM para o processo:

sudo kill -15 12127

Deveria fazer o trabalho, se não fosse eu vou mandar SIGINT desta vez (é como pressionar CTRL+C):

sudo kill -2 12127

Se não funcionasse também, deveríamos enviar um SIGHUP (kill -1), e finalmente, se nada funcionar, simplesmente mato o processo:

sudo kill -9 12127

ou

sudo pkill -9 apt-get

Então eu removo recursos ocupados:

sudo rm /var/lib/apt/lists/lock

25
2018-04-24 07:29



Uma coisa pequena é que /var/lib/dpkg/lock ao invés de /var/lib/apt/lists/lock é o arquivo na questão. - Chai T. Rex
@ ChaiT.Rex obrigado, fiz uma atualização;) - Ravexina
Graças aos deuses da raiz que alguém finalmente menciona pgrep e pkill. - Barry
Essa deve ser a resposta aceita. - Marwan Nabil


Isso acontecerá se você tiver o 'Gerenciador de Atualizações' em execução em paralelo para qualquer verificação de atualização ou instalar como o processo de instalação coloca o Bloqueio. Se você está enfrentando o mesmo erro sem 'Update Manager' em execução, você tem que removê-lo de /var/lib/dgkg/lock, o que definitivamente você não pode fazer manualmente

sudo fuser -cuk /var/lib/dpkg/lock
sudo rm -f /var/lib/dpkg/lock

funciona bem. Tirado de: https://askubuntu.com/a/15469/68707


18
2018-06-06 07:17



Este foi o problema no meu caso! - LondonRob
Melhor solução desde o comando do fusor usado para rastrear outro processo (se ainda estiver vivo) - Lars Nordin