Comment interrompre en toute sécurité apt-get install?

34

J'ai un processus apt-get install qui semble être désespérément coincé à l'étape processing triggers for python-support .

Mon inclination est à kill , mais dans le passé, simplement kill -ing un processus apt-get install m'a causé beaucoup de chagrin. (Les fichiers de verrouillage assortis de l 'IIRC sont conservés, etc.)

Existe-t-il un moyen plus sûr d’arrêter ce processus?

    
posée kjo 11.02.2013 - 20:33
la source

5 réponses

35

Killing process

D'une manière générale, pour tuer un processus, il n'y a pas de moyen plus sûr de tuer un processus qu'avec un kill normal (SIGTERM). S'il s'agit d'un processus interactif, il vous permet généralement de l'arrêter encore plus en envoyant un signal SIGINT, généralement envoyé en appuyant sur Ctrl + C . Ce signal est piégé par le processus lui-même peut l'écouter - et s'arrête généralement avec élégance. ( merci Eliah )

Base de données DPKG

La gestion des paquets est une sorte de cas particulier. La base de données DPKG utilisée par les commandes APT sous l'eau peut toujours détecter si une opération n'est pas terminée. Chaque paquet a un état réel qui est marqué aussi bien qu'un état actuel , par ex. décompressé, configuré, etc. En tuant l'interface frontale APT, la base de données sera dans un état cassé, mais dans connu . Les fichiers de verrouillage ne seront libérés qu’une fois qu’ils seront tous de nouveau propres - vous devriez les corriger jusqu’à ce qu’ils autorisent de nouvelles opérations.

La solution consiste à lancer un processus pour obtenir tous les packages dans l’état configuré. En pratique, si vous avez interrompu une opération apt-get , vous pouvez simplement la terminer plus tard en utilisant

sudo dpkg --configure -a

Il sait se remettre de l’état cassé à un état entièrement configuré et dans ce sens, il suffit de continuer là où il a été interrompu. Les fichiers de verrouillage sont laissés là jusqu'à ce que vous ayez fini cela, et cela pour une raison - pour empêcher les nouvelles opérations avec la base de données DPKG dans un état impur.

À propos de SIGKILL (9)

L'envoi d'un SIGKILL (représentation décimale 9) est très dangereux. Ce signal n'est pas capté par le processus, mais l'ensemble du processus sera nettoyé par le système d'exploitation (noyau), que le processus le veuille ou non. L'état des fichiers sur le système de fichiers peut être laissé dans un état corrompu. N'envoyez jamais ces signaux à moins qu'ils n'écoutent plus d'autres signaux plus gracieux.

    
réponse donnée gertvdijk 11.02.2013 - 20:37
la source
13

Lorsque je rencontre un problème avec apt-get, je fais ce qui suit (en tant que root, c'est-à-dire sudo avant toutes les commandes):

  1. Tuez le processus nommé apt-get:

    killall -9 apt-get
  2. Reconfigurez dpkg:

    dpkg --configure -a
  3. Mettre à jour apt-get:

    apt-get update
  4. Mettre à jour les packages, y compris ceux installés de manière incorrecte:

    apt-get upgrade

J'ai appris quelque part, mais malheureusement, je ne peux pas me souvenir exactement où.

    
réponse donnée carnendil 11.02.2013 - 21:35
la source
3
sudo dpkg -r <package name>

Dans mon cas, j’ai eu des problèmes avec Java 8 sur Ubuntu 12.04, alors ...

sudo dpkg -r oracle-java8-installer
    
réponse donnée Funmungus 29.11.2013 - 18:05
la source
1

Linux et les autres systèmes de type Unix sont très puissants depuis la ligne de commande mais très impitoyables une fois le processus démarré. Envoyer un processus le signal de mise à mort tuera certainement le processus en cours mais gardez à l'esprit que vous laissez une base de données dans un état instable. Le dernier enregistrement peut ne pas être fermé correctement, vous risquez donc de devoir réparer une base de données. Pas seulement avec apt mais avec n'importe quelle application.

Essayez toujours de mettre fin à l’application de manière normale et de ne tuer que les processus qui sont des applications en cours d’exécution.

    
réponse donnée Steve Sauls 11.02.2013 - 21:34
la source
0

Voici comment je le fais, Ctrl+C Mais sachez que c'est sûr tant qu'apt-get est en phase de téléchargement ou qu'il met à jour le cache. En dehors de cela, je ne peux pas penser à un moyen plus sûr. Laissez-le simplement terminer et annulez les modifications en désinstallant ou en rétrogradant d'une manière ou d'une autre. Les fichiers téléchargés peuvent être nettoyés avec sudo apt-get autoclean

    
réponse donnée Stefano Mtangoo 11.02.2013 - 21:14
la source

Lire d'autres questions sur les étiquettes