(Note : ma réponse originale a été largement remaniée par Guillem Jover, le directeur général de la Commission européenne. primaire dpkg
développeur .)
Je vois que presque toutes les réponses recommandent de supprimer le verrou. C'est doit jamais être fait, il est toujours préférable de tuer dpkg
(qui est censé être résilient contre ce genre d'événement), que de penser même à supprimer son fichier de verrouillage (où sa présence n'indique pas le verrouillage détenu). Les verrous sont acquis lorsqu'un dpkg
ou un apt
est en cours d'exécution, et sont libérés (par le noyau si nécessaire) lorsque les processus se terminent ou sont tués. Les plus récentes dpkg
y apt
imprimera le PID du processus qui détient le fichier de verrouillage contesté, et apt
attend même par défaut que les verrous soient libérés. Ceci est couvert dans le FAQ dpkg .
Si vous essayez :
sudo fuser -vik -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock
sudo dpkg --configure --pending
qui demandera de terminer tout processus détenant actuellement ces fichiers verrouillés, ce qui, une fois tué, fera sauter les verrous. Si vous voyez un apt-get
ou un aptitude
qui semble bloqué, les tuer devrait être moins dommageable que lorsque le système de conditionnement est au milieu d'une installation de paquet. Si les processus sont vraiment bloqués et que vous n'avez pas d'autre choix, vous devrez peut-être les tuer en passant la commande -KILL
au lieu de -TERM
. Vous devez ensuite terminer toute configuration en suspens afin que dpkg
peut les mettre dans un meilleur état, et pour qu'il puisse également intégrer les mises à jour de son journal à la base de données principale sur l'état.
Tuer un dpkg
directement, s'il est présent, n'est en général pas une bonne idée, parce que si dpkg
est actif, un script du mainteneur pourrait effectuer des actions qui ne sont pas résilientes contre les terminaisons abruptes (ou les crashs), mais dpkg devrait en interne être résilient à de telles terminaisons abruptes, et il est préférable de faire cela, plutôt que de supprimer tout fichier de verrouillage, ce qui a beaucoup plus de chance d'endommager les deux la base de données dpkg et le système de fichiers.
La mort d'un frontend tel qu'un apt-get
ou aptitude
Bien qu'elle ne soit pas idéale, cette procédure est en général beaucoup plus sûre.
20 votes
C'est aussi vrai si vous redémarrez ? Peut-être qu'un vieux fil de discussion apt verrouille le fichier, vous devez trouver lequel et le tuer ou simplement redémarrer.
0 votes
Oui, même après un redémarrage, j'obtiens les mêmes réponses. Savez-vous comment je peux trouver quel fil de discussion apt verrouille le fichier ? Merci !
4 votes
Cette procédure résout presque toujours ce problème, et quand il ne le fait pas, sa sortie (le texte du Terminal) est parfois utile. Si vous décidez de le faire, vous pouvez ajouter ce texte à votre question.
1 votes
Je voudrais suggérer une autre chose que vous pouvez noter lorsque vous êtes confronté à ce problème. Vérifiez si vos lecteurs de disque sont montés. S'ils ne le sont pas, il se peut que vous ne puissiez pas acquérir le verrou car le programme d'installation du paquet ne pourra pas accéder au système de fichiers. J'espère que cela vous aidera. :)
61 votes
Vous pouvez utiliser
sudo lsof /var/lib/dpkg/lock
pour trouver le processus qui possède le fichier de verrouillage (s'il est vide, il faut supposer que le verrouillage est le résultat d'un démarrage précédent et qu'il peut être utilisé par l'utilisateur).sudo rm
d), alors envisagez de faire unsudo kill -9 <PID>
(obtenir <PID> delsof
sortie.1 votes
C'est vieux, mais je remarque que votre question originale n'indique pas que vous l'exécutez en tant que root ou par l'intermédiaire de
sudo
.12 votes
Cela peut être un signe que quelque chose d'autre est en train d'installer ou de supprimer un logiciel et a verrouillé la base de données apt pendant qu'il effectue les actions.
0 votes
Pour moi, le redémarrage a résolu le problème.
1 votes
Je ne crois pas beaucoup à toutes les réponses ici. Il serait peut-être préférable de trouver quel processus a le verrou et de tuer ce processus. Voir ceci pour plus d'informations : ubuntuforums.org/showthread.php?t=1858466
0 votes
Cela m'arrive tout le temps et la solution est plus simple : vérifiez si Synaptic Package Installer est ouvert lorsque vous essayez d'installer dans le terminal.
1 votes
Si le blocage est causé par apt-daily.service, essayez alors de askubuntu.com/a/878982/288250
0 votes
C'était juste la mise à jour du logiciel. Mais par RDP, il se trouve dans le menu Applications, Paramètres. Une fois qu'il est apparu et a été arrêté, alors tout allait bien.
0 votes
Le redémarrage l'a réparé pour moi
0 votes
C'est arrivé juste après le redémarrage pour moi. Il y avait un dkpg en cours d'exécution, probablement pour mettre à jour automatiquement le logiciel. J'ai attendu qu'il soit terminé. Puis j'ai pu installer.
0 votes
Running
sudo pkill apt-get
a fonctionné pour moi.0 votes
Cela m'est arrivé, et il s'est avéré qu'Ubuntu attendait patiemment en arrière-plan que je procède aux mises à jour (icône de mise à jour du logiciel visible dans la barre de lancement). Une fois que j'ai fait cela et que cela s'est terminé, j'ai pu continuer à utiliser apt-get sans problème.
0 votes
OK, j'ai eu le même problème MAIS voici le problème : je n'avais pas remarqué que la fenêtre "'Il y a des mises à jour disponibles', installez, annulez, rappelez-moi plus tard" était ouverte en arrière-plan. Je l'ai donc fermée et ça a marché.
8 votes
Sur ma VM Ubuntu 18.04, il y a un processus appelé unattended-update, qui est exécuté par un processus du type
root <pid> <ppid> 0 15:58 ? 00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held install
qui semble exécuter apt update à chaque fois que j'allume la machine. En fonction de la taille de la mise à jour (qui correspond souvent au temps écoulé depuis ma dernière utilisation de la machine), cela peut prendre de 1 à 10 minutes. Après cela, le verrou est libéré pour les installations et mises à jour apt manuelles. Essayez :sudo ps aux|grep apt
ou `sudo ps aux|grep unattended.0 votes
La première chose à faire est de vérifier si un autre programme n'exécute pas une mise à jour du système ou n'installe pas un programme. Si vous utilisez la ligne de commande, vérifiez si une application comme Software Center, Software Updater, Synaptic, Gdebi exécute une mise à jour ou une installation. Si c'est le cas, si aucune application n'est en cours d'exécution, vérifiez toutes les fenêtres de terminal ouvertes et voyez si vous exécutez une mise à jour ou installez un programme. Si rien de tout cela ne se produit, vérifiez quel autre processus exécute la commande apt.
0 votes
Si vous venez de démarrer votre machine, je recommande vivement la réponse de @poolie ci-dessous askubuntu.com/a/15440/1115972 Attendez quelques minutes pour permettre à la mise à jour automatique de terminer son travail, puis réessayez.
0 votes
Pour moi, attendre quelques minutes a résolu le problème. J'avais essayé de
apt upgrade
juste après le démarrage.