Eu preciso verificar o bloqueio do dpkg antes de instalar aplicativos em um script [duplicado]

3

Eu tenho um problema com um script que eu escrevi para instalar um monte de aplicativos, basicamente, como ele faz um loop através de uma série de nomes de aplicativos para instalá-los, fazendo-os:

dpkg -l | grep -q $i

e com base no $? irá instalar ou pular o aplicativo. O problema é que alguns itens falham devido a um bloqueio do dpkg, quase toda a lista funciona, apenas meia dúzia falha, mas funciona se você executar o script novamente.

É possível esperar que o dpkg termine antes de executar o 'apt-get install'?

Por enquanto eu adicionei um 'sleep 0.5' entre as duas linhas e isso parou o problema, mas é obviamente feio e mais lento.

Obrigado Noki

    
por Noki 17.05.2014 / 15:37

1 resposta

6

Para identificar processos usando arquivos ou soquetes, você pode usar o comando fuser (consulte man fuser para obter mais informações). No caso de dpkg , você pode verificar o bloqueio como root com o seguinte comando:

fuser /var/lib/dpkg/lock
    
por Radu Rădeanu 17.05.2014 / 16:16