58 votes

Comment interrompre l'installation d'apt-get en toute sécurité ?

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

J'ai tendance à kill mais dans le passé, simplement kill -ing un apt-get install Ce processus m'a causé beaucoup de peine. (IIRC les fichiers de verrouillage assortis sont laissés derrière, etc.)

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

57voto

RN. Points 559

Processus de mise à mort

D'une manière générale, pour tuer un processus, il n'y a pas de moyen plus sûr que de le faire avec un kill normal (SIGTERM). S'il s'agit d'un processus interactif, il est généralement possible de l'arrêter de manière encore plus sûre en envoyant un signal SIGINT, généralement envoyé en appuyant sur la touche Ctrl + C . Ce signal est piégé par le processus lui-même. peut l'écoutent - et s'arrêtent généralement de bonne grâce. ( Merci Eliah )

Base de données DPKG

En ce qui concerne la gestion des paquets, c'est une sorte de cas particulier. La base de données DPKG que les commandements APT utilisent sous l'eau peut toujours détecter si une opération n'est pas terminée. Chaque paquet a un réel l'état dans lequel il est marqué ainsi qu'un actuel état, par exemple déballé, configuré, etc. En tuant le frontend APT, la base de données sera dans un état cassé, mais en connu sous le nom de l'état. Les fichiers de verrouillage ne seront libérés qu'une fois que tout sera revenu dans un état propre - vous devriez corriger cela jusqu'à ce que de nouvelles opérations soient autorisées.

La solution consiste à lancer un processus pour que tous les paquets soient dans l'état configuré. En pratique, si vous avez interrompu un processus de apt-get vous pouvez la terminer plus tard en utilisant

sudo dpkg --configure -a

Il sait comment passer de l'état interrompu à un état entièrement configuré et, dans ce sens, il reprend simplement là où il a été interrompu. Les fichiers de verrouillage sont laissés là jusqu'à ce que vous ayez terminé, et ce pour une raison précise : empêcher de nouvelles opérations avec la base de données DPKG dans un état non nettoyé.

À propos de SIGKILL (9)

L'envoi d'un SIGKILL (représentation décimale 9) est très peu sûr. 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 que le processus n'écoute plus d'autres signaux plus gracieux.

17voto

carnendil Points 5363

Lorsque je rencontre un échec avec apt-get, je fais ce qui suit (en tant que root, soit sudo avant toutes les commandes) :

  1. Tue le processus nommé apt-get :

    killall -9 apt-get
  2. Reconfigurer dpkg :

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

    apt-get update
  4. Mettre à jour les paquets, y compris ceux qui ont été mal installés :

    apt-get upgrade

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

3voto

Rik99 Points 11
sudo dpkg -r <package name>

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

sudo dpkg -r oracle-java8-installer

1voto

Stefano Mtangoo Points 2730

Voici comment je procède, Ctrl + C Mais gardez à l'esprit 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 vois pas de moyen plus sûr. Laissez-le finir et annulez les changements 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

0voto

domlao Points 3471

Linux et les autres systèmes de type Unix sont très puissants à partir de la ligne de commande mais très impitoyables une fois qu'un processus a démarré. Envoyer le signal kill à un processus tuera certainement le processus en cours d'exécution 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 et vous risquez de devoir réparer une base de données. Pas seulement avec apt mais avec n'importe quelle application.

Essayez toujours de terminer l'application de manière normale et ne tuez que les processus qui sont des applications exécutées.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X