Não é possível abrir o arquivo de bloqueio / var / lib / dpkg / lock permission denied - mesmo usando o sudo

6

Eu instalei recentemente uma nova versão do Ubuntu LTS 12.04. Eu estava usando o LTS 10.4 e salvei meu package.list e estava planejando usar

$> sudo dpkg --set-selections < package.list && apt-get dselect-upgrade

para instalar os mesmos pacotes na nova versão

No entanto, o computador não funciona com o erro

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)  
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

As respostas simples para isso seria eu sou root ou um membro do sudo?

  $> whoami

  surfer

   $> groups

surfer adm cdrom sudo dip plugdev lpadmin sambashare

Tanto para a resposta fácil.

Por post semelhante não é possível bloquear o diretório de administração (/ var / lib / dpkg /) é outro processo que o utiliza? A solução recomendada é

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

Ao executar esse comando, minha tela fica em branco, o teclado não responde, e minha única opção é pressionar o botão liga / desliga e reiniciar ... (Eu teria pensado que isso era uma sugestão maliciosa, mas muitos outros pareciam ter gostei.)

Eu tentei listar todos os programas que podem estar usando /var/lib/dpkg/lock

$> sudo lsof 

lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/surfer/.gvfs
      Output information may be incomplete.

Note que não há programas listados.

Da mesma forma, sem sorte com

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

Nada listado.

BTW, posso executar o apt-get a partir da linha de comando.

$> sudo apt-get update

é executado conforme o esperado e atualiza minhas listas de pacotes ...

@izx: Depois de tentar sua sugestão, eu não pude correr

$> sudo dpkg --set-selections < package.list && apt-get dselect-upgrade

Ele falhou com o mesmo erro. Eu tentei isso

a) imediatamente após o comando rm no terminal F1
b) executando o comando rm e retornando ao X com Ctrl + Alt + F7
c) executando o comando rm e reinicializando

Apenas de interesse, a opção c) gerou uma mensagem de erro diferente (mas semelhante) que foi

dpkg: error: dpkg status database is locked by another process

Embora eu não possa matar os processos usando /var/lib/dpkg/lock com fuser , obtive a seguinte saída para os processos que estão vinculados a ele.

$> fuser -cv /var/lib/dpkg/lock  
                     USER        PID ACCESS COMMAND  
/var/lib/dpkg/lock:  root     kernel mount (root)/var  
                     surfer     1641 ....m (surfer)gnome-settings-  
                     surfer     1656 ....m (surfer)compiz  
                     surfer     1679 ....m (surfer)nm-applet  
                     surfer     1688 ....m (surfer)nautilus  
                     surfer     1731 ....m (surfer)gtk-window-deco  
                     surfer     1733 ....m (surfer)unity-panel-ser  
                     surfer     1831 ....m (surfer)gnome-terminal  
                     surfer     1899 f.... (surfer)unity-applicati  
                     surfer     2029 F...m (surfer)update-notifier   

Então eu tentei matar cada processo do terminal F1 e removi o arquivo de bloqueio. Sem problemas. O resultado foi

$> fuser -cv /var/lib/dpkg/lock  
                     USER        PID ACCESS COMMAND  
/var/lib/dpkg/lock:  root     kernel mount (root)/var  

$> ls /var/lib/dpkg/lock  
ls: cannot access /var/lib/dpkg/lock: No such file or directory

o arquivo e os links parecem ter desaparecido, mas ao executar o comando dpkg , recebo o mesmo erro ... e o arquivo de bloqueio está de volta.

Estou muito intrigado e gostaria de receber ajuda.

    
por Jim Parker 13.07.2012 / 05:51

5 respostas

7

Seu primeiro passo deveria ter sido

sudo dpkg --set-selections < package.list && sudo apt-get dselect-upgrade

O seguinte erro

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)  

teria never ocorrido, Mesmo second time você usou o mesmo código e obteve o mesmo erro.

Tente o comando certo adicionando sudo conforme descrito acima e poste suas descobertas.

OBSERVAÇÃO : O uso de & amp; & amp; permite que você execute vários comandos na mesma linha, no sentido usual & amp; & só executa o comando second se o comando primeiro retornar um relatório de valor success . Portanto, sudo aqui precisa ser especificado no comando segundo .

    
por atenz 13.07.2012 / 15:37
1
sudo dpkg --configure -a

Em seguida, tente novamente.

Esse problema também pode surgir se houver outras instalações em execução.

    
por Akshit Baunthiyal 14.07.2012 / 17:24
1

Tente com

sudo apt-get update 

Se você ainda receber um erro de bloqueio, tente este comando. Ele dará o detalhe do processo

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

Em seguida, mate o processo usando o ID do processo e execute o comando update

E também vc pode deletar esse arquivo seu problema vai resolver

rm /var/lib/dpkg/lock 

sudo dpkg --set-selections < package.list && sudo apt-get dselect-upgrade
    
por Premkumar 08.03.2014 / 06:38
0

Eu tive o mesmo erro, isso funcionou para mim:

  

Esse erro indica que você (ou algum programa / script) mudou o   permissões do arquivo / var / lib / dpkg / status. Por favor, troque-os de volta   via: "sudo chmod 644 / var / lib / dpkg / status" para corrigir o problema.

Acabei abrindo o terminal:

sudo nautilus

navegando para as pastas / arquivos e alterando as permissões para

  

ME - PASTA: ACESSO TOTAL / ARQUIVOS: LER ESCREVER

     

ROOT - PASTA: ACESSO TOTAL / ARQUIVOS: LEIA APENAS

O problema veio quando minhas permissões foram parafusadas ao tentar consertar um problema no kernel que eu tive com um driver Nvidia ... mas isso é outra história ...

Espero que isso ajude ...

    
por pst007x 22.10.2013 / 22:19
0

Em raras ocasiões, você pode obter esse problema sem outros dpkg bloqueios de processo por usuário com privilégio de sudo.

Eu encontrei este problema por razões desconhecidas que eu perdi esta pasta.

Eu tentei todas as outras soluções sugeridas aqui, mas nenhuma funcionou. Minha maneira simples era copiar uma pasta /var/lib/dpkg de outro servidor com a mesma versão Ubuntu.

Espero que ajude se outra pessoa fez a mesma coisa com eles.

    
por samuel 01.08.2014 / 05:24

Tags