Não é possível bloquear o diretório de administração (/ var / lib / dpkg /). Outro processo está sendo usado?

1025

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?

La Ode Adam Saputra
fonte
18
Isso também é verdade se você reiniciar? Talvez algum thread antigo do apt esteja bloqueando o arquivo, você precisa descobrir qual e matá-lo ou apenas a reinicialização o fará.
Bruno Pereira
4
Esse procedimento quase sempre corrige esse problema e, quando não, sua saída (o texto do Terminal) às vezes é útil. Se você decidir fazer isso, poderá adicionar este texto à sua pergunta.
Eliah Kagan 6/06/12
54
Você pode usar sudo lsof /var/lib/dpkg/lockpara encontrar o processo que possui o arquivo de bloqueio (se vazio, suponha que o bloqueio sobrou de uma inicialização anterior e pode ser sudo rmd) e considere fazer um sudo kill -9 <PID>(obter <PID> da lsofsaída.
waltinator
11
Isso pode ser um sinal de que algo mais está instalando ou removendo software e bloqueou o banco de dados apt enquanto ele executa as ações.
Foreever
5
Na minha VM do Ubuntu 18.04, há um processo chamado atualização autônoma, que é root <pid> <ppid> 0 15:58 ? 00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held installexecutada por um processo como o que parece executar a atualização adequada toda vez que ligo a máquina. Dependendo do tamanho da atualização (que geralmente corresponde a há quanto tempo desde que eu usei essa máquina pela última vez), isso pode ser de 1 a 10 minutos para ser concluído. Depois disso, o bloqueio é liberado para instalações e atualizações manuais do apt. Tente: sudo ps aux|grep aptou `sudo ps aux | grep sem supervisão.
precisa

Respostas:

873

Isso deve ser usado como último recurso. Se você usar isso descuidadamente, poderá acabar com um sistema danificado. Por favor, tente as outras 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.

zurdo
fonte
13
ok ... mas por que aconteceu isso?
Jaime Hablutzel
40
@jaime: provavelmente o apt-get (ou alguma interface gráfica com ele) foi interrompido durante a execução, deixando o apt em um estado bloqueado.
Bouke
10
Eu aceitaria isso como a melhor resposta. correto.
Anwar #
9
@AnwarShah não, existem outras considerações antes de remover arquivos do sistema.
Braiam
22
rm / var / lib / dpkg / lock; dpkg --configure -a:
WitchCraft
664

Vejo praticamente todas as respostas recomendando 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 travado por algum motivo.

Se você tentar

ps aux | grep [a]pt

ou

pgrep -a apt

que capturará processos que contenham a palavra apt, pelo menos. Se você vir um apt-getprocesso ou um aptitudeprocesso que parece travado, tente

sudo kill processnumber

e se isso não funcionar tente

sudo kill -9 processnumber

Isso deve interromper o processo e pode remover a trava. Matar aptou aptitudeprocessar é inofensivo, a menos que esteja realmente no meio da instalação do pacote. De qualquer forma, se o processo ficou emperrado, você provavelmente não tem outra opção a não ser matá-lo.

Matar um dpkgprocesso diretamente, se presente, não é uma boa idéia, porque se dpkgestiver ativo, provavelmente está manipulando o banco de dados do pacote e matá-lo pode deixar o banco de dados do pacote em um estado inconsistente; ie corrompido.

Matar apt-getou aptitudeprocessar é geralmente muito mais seguro.

Faheem Mitha
fonte
18
@ Link: Eu não acho que matar dpkgé uma boa idéia, porque geralmente dpkgestá manipulando o banco de dados de pacotes diretamente, e isso pode causar corrupção.
Faheem Mitha
18
Se matar o dpkg pode corromper seu banco de dados, o dpkg foi mal projetado. Período.
Jay Sullivan
10
para mim, isso resultou em um erro dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.ao executar sudo apt-get dist-upgradenovamente. A execução do comando resolveu o problema. Eu amo Nix!
Wayne Phipps
5
Observe que killall apt-getfaz o mesmo que seu ps/ killcombo.
Cerin 15/01
3
Note que eu descobri que precisava correr sudo dkpg --configure -adepois de matar o processo desonesto do apt para que as coisas voltassem ao normal.
starbeamrainbowlabs
219

Remova seu /var/lib/dpkg/lockarquivo e force a reconfiguração do pacote.

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

Deve funcionar depois disso.

Bruno Pereira
fonte
esses comandos ajudaram, mas agora, quando tentei instalar novamente, recebi esta resposta: Não foi possível obter o lock / var / cache / apt / archives / lock - open. Acho que teria que fazer como o problema anterior de desbloqueio, mas me diga as palavras-chave exatas do comando. Eu sou um iniciante absoluto.
Kern
1
sudo- execute o comando como root, rm- remova o arquivo. Talvez tentesudo rm /var/cache/apt/archives/lock
kubahaha
5
Esta não é uma boa sugestão: remover cegamente a sorte pode corromper o estado do dpkg.
poolie 02/02
5
Por que não se conserta hoje em dia?
Marian Klühspies 1/11
2
Isso funcionou para mim. Os aws acima não.
1rq3fea324wre
108

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

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

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

IMPORTANTE: tente apenas o abaixo como último recurso, pois ele pode travar o sistema. Primeiro tente matar qualquer instância em execução aptou aptitudecomo descrito na resposta de Faheem .

Você pode forçar o bloqueio removendo o arquivo, mas isso não é recomendado sem primeiro fechar o programa que está mantendo o bloqueio com segurança , pois você pode causar corrupção ou interromper uma instalação (incorreta). O comando fornecido por João deve fechar o programa que contém a trava e removê-la, mas não o protegerá 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 de cache do apt:

sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock
Martin Owens -doctormo-
fonte
5
Eu estava atualizando meu software quando recebi a mensagem de erro.
gota de chuva
20
Isso caiu para mim-
umpirsky
5
sudo fuser -cuk /var/cache/apt/archives/lockdiretamente reiniciado meu computador. apt-getagora está desbloqueado.
Maxime R.
15
Isso travou meu servidor inteiro.
에이 바
5
Matar o apt ou o dpkg no meio do caminho não é uma boa idéia.
poolie 02/02
99

A maneira mais provável de atingir isso é:

  • inicializar o Ubuntu
  • iniciar um terminal
  • tipo sudo apt-get install whatever

e a linha de comando se aptsobrepõe à update-managerpesquisa automática.

Portanto, se você tentar novamente em alguns minutos, isso deve ser corrigido.

poolie
fonte
21
Ótima dica, em contraste com as meia dúzia de respostas que sugerem apenas remover o arquivo ;-) Corri aleatoriamente no problema e, provavelmente, é isso!
Alex
2
Seguro o suficiente, tive que esperar um pouco antes que sudo apt-get installpudesse funcionar.
Sargas
Bem, isso nem sempre funciona, sim, eu usei a reinicialização muitas vezes. Se não é adequado tentar este askubuntu.com/a/315791/378845 antes de remover bloqueios
Menuka Ishan
@ Menuka, por que não deixar terminar?
Pool #
@poolie Porque há outras restrições que estão parando o processo de terminar
Menuka Ishan
52

Apenas um programa pode segurar a trava. Certifique-se de que você não está executando aptitude, sináptico ou adepto. Feche o programa e execute-o novamente, pois deve funcionar. Você pode ter o synaptic aberto, ou outra janela do terminal aberta, executando o apt-get, ou o gerenciador de atualizações em execução. eles está sendo executado 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 a trava

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

Agora você pode instalar quaisquer pacotes.

karthick87
fonte
9
Excluir o arquivo de bloqueio é algo que eu consideraria perigoso. Se outro processo estiver bloqueando por um motivo válido - e você remover esse arquivo de bloqueio e forçar uma instalação com o que estava fazendo antes -, seriamente, de maneira negativa, afetaria seu sistema.
Marco Ceppi
5
É por isso que eu tenho dado que em Note.If todos os acima falhar o único caminho é para remover o lock.It não vai causar qualquer problema, desde que dpkg e apt-get / processos de aptidão não estão funcionando
karthick87
pgrep -f 'apt|adept|dpkg'é muito mais curto.
dhchdhd 12/09
Valeu! isso funciona. pgrep -f 'apt | adept | dpkg' e então sudo skill (number), mate todos os números e depois instale o works!
criador
@ Barry que corresponderia a todo o caminho + processo. Eu acho que pgrep -a 'apt|adept|dpkg'é um equivalente melhor mais curto.
Pablo A
46

Até agora, a melhor maneira de fazê-lo funcionar sem interromper uma possível instalação em execução em segundo plano (como poderia acontecer removendo 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

Após a atualização do sistema, sugiro reativá-lo, pois o bloqueio do bug pode ser corrigido com a atualização.

sudo systemctl start apt-daily.timer

Não verifiquei que este erro foi corrigido após a atualização. Adicionarei um novo comentário assim que confirmar

Jairelee
fonte
Após atualizar o sistema e iniciar o serviço apt-daily.timer novamente, não estou enfrentando esse problema até agora.
Jairelee
Este é provavelmente o método mais limpo em comparação com todas as respostas mais votadas acima. Funcionou perfeitamente no meu caso, obrigado!
CygnusX1
Isso também funcionou perfeitamente em 17.10
Elder Geek
Trabalhou em 17.10 +1
Eng.Fouad 13/02/2018
2
Trabalhando bem em 18.04. :)
Nav Kumar V
33

Antes 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á próxima a 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 encontrá-lo usando ps, pgrepetc; o comando é apt-getassim que eu corro:

pgrep apt-get -a

O -aswitch lista o comando completo para mim, no meu caso é:

 pgrep -a apt-get
 12127 apt-get update

podemos ver que ele está executando o updatesubcomando, eu também poderia executar algo assim:

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 iria esperar por alguns minutos para recurso a ser libertado e se depois o problema 2 ou 3 minutos ainda existe ou o comando era algo que eu não me importava com ou não foi prejudicial para o sistema (como este apt-get update) eu envio um SIGTERMpara o processo:

sudo kill -15 12127

Deveria fazer o trabalho. Caso contrário, vou enviar SIGINTdesta vez (é como pressionar CTRL+ C):

sudo kill -2 12127

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

sudo kill -9 12127

ou

sudo pkill -9 apt-get

Em seguida, removo os recursos ocupados:

sudo rm /var/lib/apt/lists/lock
Ravexina
fonte
Uma coisa pequena é que, em /var/lib/dpkg/lockvez de /var/lib/apt/lists/locko arquivo da questão.
Chai T. Rex
1
Agradeça aos deuses-raiz que alguém finalmente menciona pgrepe pkill.
dhchdhd 12/09
1
Essa deve ser a resposta aceita.
Marwan Nabil
se uma instalação ou atualização causou isso também dpkg --configure -apode ser necessária
LUXS
Isso funciona para mim
Sundeep 26/09
21

Esse erro pode ser causado pelo Update Manager tentar atualizar automaticamente a lista de pacotes em segundo plano, geralmente logo após o seu login, bloqueando o diretório.

Nesse caso, aguarde alguns segundos (ou mais, se sua última atualização foi há muito tempo) para que ela seja concluída ou inicie o Update Manager para verificar o status.

Batsu
fonte
Eu tive isso logo após a instalação do Ubuntu 16.04. Acontece que havia um processo em segundo plano no Ubuntu Software Center que estava esperando por mim para instalar manualmente algumas atualizações.
jvriesem
O mesmo ocorreu após uma nova instalação do 16.04. Muito mais do que "alguns segundos" no meu caso (tive tempo de ler toda a página de perguntas e respostas!), Mas depois de atualizar psalgumas vezes, vi que dpkgestava atualizando uma grande quantidade de coisas e esperei pacientemente que tudo terminasse. . Em seguida, executei o Software Updater até que tudo estivesse atualizado antes de tentar instalar algo novo.
Charlie Joynt
16

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

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

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

Nabeel Ahmed
fonte
1
Este foi o problema no meu caso!
LondonRob
1
Melhor solução, uma vez comando do fusor usado para rastrear outro processo (se ainda vivo)
Lars Nordin
16

Não seja tão rápido em remover algo, isso pode danificar totalmente o seu sistema; em vez disso, aguarde até o programa de instalação ou desinstalação atualmente concluir sua tarefa e depois disso você terá acesso. Se você acha que não há nada a instalar ou desinstalar, em seguida, basta reiniciar o sistema com o comando sudo reboot.

Wessi
fonte
1
Parece mais um comentário do que uma resposta. Você poderia mover isso como um comentário para a resposta que estava respondendo?
jvriesem
4
@jvriesem Eu acho que essa é uma resposta muito importante, porque o ponto que ele está fazendo é o que está faltando em muitas outras respostas!
Volker Siegel
@jvriesem Esta é geralmente a resposta correta. Eu sempre encontro esse problema com meus contêineres linux quando não os uso há muito tempo. Apenas espere. Sim, pode demorar um pouco. Mas deixe-o fazer seu trabalho antes de entrar e atrapalhar as coisas.
earth2jason 23/03
Esta deve ser a primeira coisa a tentar. Essa resposta na maioria das vezes corrige o problema. Eu tinha talvez 4-5 vezes ainda, e uma reinicialização sempre o solucionava.
Jan
10

Se você tiver atualizações de segurança definidas para instalação automática, isso acontecerá com freqüência. Eu literalmente espero 30 segundos e isso resolve o problema. Apenas lançando isso lá fora, no caso de mais alguém encontrar esse problema.

Wh33t
fonte
1
Dependendo de quanto tempo a distro foi inicializada, pode demorar até meia hora. Mas é provavelmente ideal deixar sua distribuição terminar seu trabalho antes de interromper as coisas.
earth2jason 23/03
6

No meu caso, tive que esperar vários minutos para que o bloqueio fosse liberado (parece aptusado para segurá-lo). Tudo isso aconteceu logo após a inicialização do sistema.

Pavel Vlasov
fonte
4

Apenas sudo rm -f /var/lib/apt/lists/locke tente novamente.

apt-fast pode ser responsável por não desbloquear corretamente; isso acontece às vezes quando você aborta apt-getou dpkgtambém.

ish
fonte
4

Eu já tive esse problema várias vezes. Para mim, era quase sempre causado pelo apt-get ou por alguma GUI que o chamava de travado por algum motivo. Eu tive que matá-lo, o que deixou várias fechaduras no lugar.

As outras respostas trazem pontos muito bons sobre garantir que nenhuma atualização esteja sendo executada no momento antes de fazer algo drástico como remover arquivos de bloqueio. No entanto, quando você tiver certeza de que não é esse o caso, o seguinte geralmente funciona para mim. Eu entendi lendo muitas respostas para perguntas como esta.

Enquanto a maioria ou tudo isso é apresentado nas outras respostas, isso destila a correção em alguns comandos.

sudo fuser -vki /var/lib/dpkg/lock
sudo fuser -vki /var/cache/apt/archives/lock
sudo fuser -vki /var/cache/debconf/config.dat
sudo dpkg --configure -a

Use para desbloquear o sistema de pacotes após uma atualização de algum tipo travar ou terminar sem terminar de outra maneira. Esses comandos devem ser executados na ordem apresentada.

Joe
fonte
3

Não vejo essa resposta em nenhum lugar acima, mas no Ubuntu 16.04, também encontrei esse problema. A causa foi a hora em que o meu computador foi definido no futuro . (Isso ocorre porque eu estou em um sistema de inicialização dupla do Windows + Ubuntu e acho que atrapalhei a hora local versus a hora UTC.)

Uma coisa estranha é que a data e a hora do arquivo bloqueado eram a data e a hora exata em que eu executei o programa.

Eu então usei o "fusor" como descrito em postagens anteriores e o apt funcionou, mas estava recebendo reclamações sobre a necessidade de executar dpkg -a -reconfigure. Quando fiz isso, obtive erros como:

newline in field name #padding

em arquivos como '/ var / lib / dpkg / updates / 0003'.

Tudo isso foi muito estranho, como eu nunca vi antes. Então, pensei que estes eram sintomas e alterei meus dados e hora manualmente. Eu sabia que havia um problema com a data / hora em que entrei, mas estava ignorando. (Anteriormente, ele era definido automaticamente via Internet e NTP).

Então, todos os problemas acima foram corrigidos ... Felizmente, isso ajuda alguém! O sintoma mais notável é talvez a data / hora do arquivo de bloqueio, sendo a data / hora exata em que você está tentando executar o comando.

Raio
fonte
3

No meu caso, o X travou enquanto apt-getainda estava removendo os kernels antigos. Usei o System Monitor para confirmar que ele ainda estava em execução e não estava travado. Tudo estava bem quando o processo terminou.

wjandrea
fonte
3

Verifique o Iniciador para ver se Software Updaterestá em execução. Se assim for, maximize-o e veja o que está fazendo. Se ainda estiver checando, aguarde a conclusão. Quando concluído, pode ser informado que o software está atualizado, portanto feche o aplicativo. Se houver atualizações disponíveis, faça a atualização ou clique em "lembrar mais tarde". Após este aplicativo ser fechado, você poderá voltar a usar apt-getou apt.

Se Software Updaternão estiver em execução, use o Dash para invocá-lo e aguardar a conclusão e, em seguida, decida se deseja atualizar ou clique em "lembrar-me mais tarde". Após este aplicativo ser fechado, você poderá voltar a usar apt-getou apt.

H2ONaCl
fonte
2

No meu caso, eu estava recebendo a mesma mensagem por não perceber que havia mudado para o usuário root e estava tentando o sudo apt-get. Depois que percebi isso, executei o apt-get e funcionou. Bobo, mas ainda pode explicar o erro para alguns.

BluePython
fonte
2
Essa não é a causa do problema, pois você pode executar sudocomo root (e mesmo que não pudesse, não produziria essa mensagem de erro). Provavelmente, o que aconteceu foi que o outro processo foi concluído enquanto você escrevia o próximo comando.
Wjandrea
Às vezes, produz a mesma mensagem de erro.
perfil completo
2
sudo killall -9 apt && sudo killall -9 dpkg

Use por sua conta e risco

ninguém
fonte
1

no meu caso, depois de:

  1. Abra o Firefox.
  2. Terminal aberto

Eu digitei


sudo apt update
sudp apt upgrade
então eu tenho esses problemas

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?
Corrigi isso, executando o comando que me foi mostrado após executar sudo apt update

apt list --upgradable

Este comando mostrará uma lista de programas no meu caso, apenas o Firefox; fechei o Firefox e, em seguida, executei o comando novamente sem problemas.

sudo apt upgrade
christianbueno.1
fonte
0

Para pessoas interessadas em evitar proativamente esse bug em seus scripts, descobri que o sinalizador -q apt upgrade -yqestava causando esse problema para mim. Durante o processo de atualização, acho que ocasionalmente me dava avisos (algo como atualizar a área de trabalho, eu gostaria de continuar) e, se esses avisos foram suprimidos, acho que isso faz com que o apt não desbloqueie os arquivos que estava protegendo e ficou preso.

É certo que tive problemas para reproduzir esse erro 100% das vezes, mas a eliminação da opção -q resolveu completamente o problema para mim .

Tyrel Kostyk
fonte
0

Como quase todo mundo, esperei que a trava fosse removida. Depois de 30 minutos, desisti e iniciei o disco com uma distribuição diferente. De lá, usei a internet para algumas pesquisas que me levaram até aqui.

Acontece que unattended-upgrades.serviceestá em execução. Eu achei que estava reiniciando no sistema quebrado e executando:

sudo systemctl disable apt-daily.service
sudo systemctl disable unattended-upgrades.service
sudo systemctl disable apt-daily-upgrade.service
sudo systemctl disable apt-daily-upgrade.timer
sudo systemctl disable apt-daily.timer
sudo shutdown -r # Note it will take a couple minutes to reboot

permitiu que o sistema quebrado funcionasse novamente para:

sudo apt update
sudo apt upgrade
sudo apt install -f

No entanto, não corrigiu os pacotes ocultos e a situação impossível relatada aptem primeiro lugar. Parece que isso estava causando o apttravamento na inicialização, em primeiro lugar.

WinEunuuchs2Unix
fonte