Muitas vezes quando quero update
um dos meus sistemas, apt
fica "bloqueado" por outros processos. Pode acontecer mais de uma vez no mesmo dia. Tenho que rodar esse comando e kill
o processo top para apt
voltar, mas não deveria ter esse problema, nunca tive antes.
Quando eu apt update
recebo isso:
root ~ # apt update
Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
Meu sistema é o Debian stretch 9.8, e instalo todas as atualizações. Eu uso o KDE Plasma Desktop.
root ~ # ps aux | grep apt
_apt 25783 9.0 0.1 64300 24956 ? S 10:12 0:59 /usr/lib/apt/methods/http
_apt 25784 8.9 0.1 64300 25032 ? S 10:12 0:59 /usr/lib/apt/methods/http
_apt 25785 8.9 0.2 206296 35636 ? S 10:12 0:59 /usr/lib/apt/methods/https
_apt 25786 9.0 0.2 206300 35532 ? S 10:12 0:59 /usr/lib/apt/methods/https
_apt 25787 9.0 0.1 64300 25012 ? S 10:12 0:59 /usr/lib/apt/methods/http
_apt 25788 8.9 0.1 64300 25008 ? S 10:12 0:58 /usr/lib/apt/methods/http
_apt 25789 9.1 0.1 64300 25192 ? S 10:12 0:59 /usr/lib/apt/methods/http
_apt 25790 9.1 0.1 64300 24984 ? S 10:12 0:59 /usr/lib/apt/methods/http
_apt 25817 4.8 0.1 56876 21644 ? S 10:14 0:28 /usr/lib/apt/methods/gpgv
_apt 25818 4.8 0.2 206296 35568 ? S 10:14 0:28 /usr/lib/apt/methods/https
_apt 25820 4.7 0.2 206304 35636 ? S 10:14 0:27 /usr/lib/apt/methods/https
_apt 26426 0.0 0.1 56876 19752 ? S 10:22 0:00 /usr/lib/apt/methods/gpgv
_apt 26427 0.0 0.0 4276 1656 ? S 10:22 0:00 /bin/sh /usr/bin/apt-key --quiet --readonly verify --status-fd 3 /tmp/apt.sig.LTumm1 /tmp/apt.data.hNgDBV
_apt 26511 104 0.0 38092 8508 ? R 10:23 0:03 apt-config shell GPGV Apt::Key::gpgvcommand
root 26513 0.0 0.0 12788 1000 pts/1 S+ 10:23 0:00 grep apt
PERGUNTA:
Eu não entendo o que isso significa o que está fazendo apt e como corrigi-lo?
EDITAR:
root ~ # apt list packagekit
Listing... Done
packagekit/stable,stable,now 1.1.5-2+deb9u1 amd64 [installed,automatic]
root ~ # apt list aptdaemon
Listing... Done
Detalhes da resposta até agora:
Como sua
ps
saída não mostra nenhum comando/usr/bin/apt-get
(ou/usr/bin/apt
), os subprocessos apt devem ser iniciados por algum outro processo. O processo deve estar usando alibapt
biblioteca. Você deve realmente certificar-se do que é esse processo pai, por exemplo, observando a hierarquia de processos empstree
. Mas a única possibilidade que conheço aqui seriapackagekitd
o daemon PackageKit.Para ser justo com o daemon PackageKit, acho que ele só funciona em resposta a solicitações - por exemplo, do gnome-software, pk-update-icon - ou do KDE Plasma (programa "Apper" do KDE?)
É uma limitação conhecida que as ações do PackageKit no Debian entrarão em conflito com o
apt
comando. Também é esperado que uma boa GUI verifique periodicamente as atualizações de segurança, para que possa lembrá-lo de instalá-las. Lamento dizer que esta não é uma combinação perfeita!No entanto, não se espera que isso aconteça “sempre”. Normalmente, você não fará ações do PackageKit em segundo plano o tempo todo. Especialmente em uma versão estável do Debian como você está executando. O Debian não libera muitas atualizações, por exemplo, comparado ao Fedora Linux, e
apt update
é bastante rápido e eficiente quando não há atualizações.Se você tem esse problema com muita frequência, pode ter algum problema que está fazendo com que
apt
demore muito tempo ou, de alguma formaapt
, faça com que o PackageKit ou o seu sistema GUI continuem tentando muito.O PackageKit é originário do RedHat. Em distribuições baseadas em RedHat como o Fedora Linux, eu sei que o PackageKit é capaz de executar ações "em segundo plano", por exemplo, para verificar atualizações automaticamente. E a ação em segundo plano deve ser cancelada automaticamente, quando o usuário começar a pedir ao PackageKit para fazer algo. Eu não sei se o Debian+Apper funciona assim ou não.
Você pode tentar pedir ao PackageKit uma atualização de "primeiro plano", usando Apper ou
pkcon refresh force
+pkcon upgrade
em vez deapt update
+apt upgrade
. A atualização por meio do PackageKit é um pouco diferente doapt upgrade
, porque o PackageKit não solicita configurações de pacote e não pergunta se você deseja manter seus arquivos de configuração modificados, sobrescrevê-los com alterações de pacote ou tentar mesclá-los.Tente com estes comandos, se você não for root, tente com
sudo
command ,Não tenho certeza sobre este comando. Isso matará os processos apt em execução no sistema.