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

866

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 corrigir isso?

    
por La Ode Adam Saputra 30.11.2010 / 03:12

21 resposta

737

Isso deve ser usado como último recurso. Se você usar isso descuidadamente, você pode acabar com um sistema quebrado. 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.

    
por zurdo 07.02.2012 / 03:22
559

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 captura os processos que contêm a palavra apt , pelo menos. Se você vir um processo apt-get ou um processo aptitude parecido, tente

kill processnumber

e se isso não funcionar tente

kill -9 processnumber

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

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

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

    
por Faheem Mitha 03.07.2013 / 11:01
179

Remova o arquivo /var/lib/dpkg/lock e force a reconfiguração do pacote.

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

Deve funcionar depois disso.

    
por Bruno Pereira 29.01.2012 / 12:27
100

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

Caso contrário, isso é um sinal de que algo 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 gerenciador de atualizações
  • 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: experimente o abaixo como último recurso, pois ele pode travar seu sistema. Primeiro tente matar qualquer instância em execução de apt ou aptitude conforme descrito na 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 , pois você pode causar danos ou interromper uma instalação (ruim). O comando fornecido pelo João deve fechar o programa que segura o bloqueio e depois 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
    
por Martin Owens -doctormo- 30.11.2010 / 03:17
71

A maneira mais provável de acertar isso é:

  • inicializa o Ubuntu
  • inicie um terminal
  • digite sudo apt-get install whatever

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

Então, se você tentar novamente em alguns minutos, isso deve resolver o problema.

    
por poolie 30.11.2010 / 04:08
48

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.

    
por karthick87 30.11.2010 / 05:55
37

Até agora, a melhor maneira de fazê-lo funcionar sem interromper 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

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

Eu não verifiquei se esse erro foi corrigido após a atualização. Adicionaremos um novo comentário assim que tiver verificado isso

    
por Jairelee 02.02.2017 / 11:01
27

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 seja problemático:

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

A saída será próxima 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 encontrá-lo usando ps , pgrep etc; o comando é apt-get , então eu corro:

pgrep apt-get -a

A opção -a lista o comando completo para mim. No meu caso, é:

 pgrep -a apt-get
 12127 apt-get update

podemos ver que ele está executando 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 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 envio um SIGTERM para o processo:

sudo kill -15 12127

Ele deve fazer o trabalho, se não eu vou enviar 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, eu simplesmente mato o processo:

sudo kill -9 12127

ou

sudo pkill -9 apt-get

Em seguida, removemos recursos ocupados:

sudo rm /var/lib/apt/lists/lock
    
por Ravexina 24.04.2017 / 09:29
19

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 colocar 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. Retirado de: link

    
por Nabeel Ahmed 06.06.2012 / 09:17
17

Este erro pode ser causado pelo Update Manager tentando atualizar automaticamente a lista de pacotes em background, geralmente logo após o seu login, bloqueando assim o diretório.

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

    
por Batsu 04.10.2013 / 14:39
11

Não seja tão rápido para remover algo, pode danificar totalmente o seu sistema; em vez disso, espere até que o programa de instalação ou desinstalação atual conclua sua tarefa e, depois disso, você terá acesso. Se você acha que não há nada atualmente instalando ou desinstalando, então apenas reinicie seu sistema com o comando sudo reboot .

    
por Wessi 15.01.2015 / 10:54
9

Se você tiver atualizações de segurança definidas para instalação automática, isso ocorrerá com frequência. Eu literalmente espero 30 segundos e isso resolve o problema. Apenas jogando isso para o caso de alguém encontrar esse problema.

    
por Wh33t 17.05.2016 / 00:02
4

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

apt-fast PODE ser responsável por não desbloquear corretamente; isso acontece às vezes quando você aborta apt-get ou dpkg também.

    
por ish 11.06.2012 / 23:47
4

No meu caso, apenas esperei alguns minutos e o bloqueio foi liberado (parece que aptd costumava segurá-lo). Isso tudo aconteceu logo após a inicialização do sistema.

    
por Pavel Vlasov 24.09.2016 / 13:19
4

Eu tive esse problema inúmeras vezes. Para mim, quase sempre foi causado pelo apt-get ou alguma GUI que chamou isso de ficar pendurado por algum motivo. Eu tive que matá-lo, o que deixou vários bloqueios no lugar.

As outras respostas trazem ótimos pontos sobre como garantir que nenhuma atualização está sendo executada antes de fazer algo drástico, como remover arquivos de bloqueio. No entanto, uma vez que você tenha certeza de que não é o caso, o seguinte geralmente funciona para mim. Eu consegui ler muitas respostas para perguntas como essa.

Enquanto a maioria ou tudo isso é apresentado nas outras respostas, isso reduz a correção para 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 depois que uma atualização de algum tipo caiu ou terminou sem terminar de alguma outra forma. Esses comandos devem ser executados na ordem apresentada.

    
por Joe 21.10.2016 / 21:59
3

Eu 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 meu computador foi colocado no futuro . (Isso ocorre porque estou em um sistema de inicialização dupla do Windows + Ubuntu e acho que atrapalhei a hora local em relação à hora UTC.)

Uma coisa estranha foi que a data e a hora do arquivo bloqueado eram a data e a hora exatas em que eu executava o programa.

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

newline in field name #padding

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

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

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

    
por Ray 08.05.2016 / 03:17
3

No meu caso, o X travou enquanto o apt-get ainda estava removendo os kernels antigos. Eu usei o Monitor do Sistema para confirmar que ele ainda estava em execução e não estava preso. Tudo estava bem quando o processo terminou.

    
por wjandrea 24.12.2016 / 02:37
2

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

    
por BluePython 31.03.2016 / 04:43
1

no meu caso, depois:

  1. Abra o Firefox.
  2. Terminal aberto

eu digitei


sudo apt update
sudp apt upgrade
então eu entendo 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?
Eu consertei isso, executando o comando que foi mostrado depois de executar sudo apt update
apt list --upgradable

Este comando irá mostrar-lhe uma lista de programas no meu caso apenas o Firefox, eu fechei o Firefox, então pude executar o comando novamente sem problemas.

sudo apt upgrade
    
por christianbueno.1 05.01.2018 / 20:55
1

Verifique o Iniciador para ver se Software Updater está em execução. Se assim for, maximize-o e dê uma olhada no que está fazendo. Se ainda estiver verificando, espere a conclusão. Quando estiver concluído, ele poderá informar que o software está atualizado, por isso feche o aplicativo. Se houver atualizações disponíveis, faça a atualização ou clique em "lembrar-me mais tarde". Depois que este aplicativo for fechado, você poderá voltar a usar apt-get ou apt .

Se Software Updater não estiver em execução, use o Dash para invocá-lo e a espera pela conclusão e, em seguida, decida se deseja atualizar ou clique em "lembrar-me mais tarde". Depois que este aplicativo for fechado, você poderá voltar a usar apt-get ou apt .

    
por H2ONaCl 11.09.2018 / 00:18
1
sudo killall -9 apt && sudo killall -9 dpkg

Use a seu próprio risco

    
por noone 21.09.2018 / 07:36