web-dev-qa-db-fra.com

Mise à niveau de Botched - dpkg se bloque sur 'Prise en charge du périphérique Braille démarré'

Vissé une mise à niveau de 14.10-> 15.04-> 15.10 mal. Je m'amuse en mode de récupération et suis confiant d'avoir réussi à supprimer et à réinstaller tous les paquets/dépendances brisés, mais je suis maintenant confronté à ce problème étrange. L'aptitude ne fonctionnera pas, cela indique que je dois faire des choses avec dpkg. dpkg fera des choses, mais sera toujours suspendu

Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)
Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)
[  OK  ] Started Braille Device Support.

Cette suspension en braille me tourmente depuis un moment, mais je suis enfin dans une impasse. La première partie, avec les erreurs, semble être une erreur obscure relative aux disques durs vissés, et après quelques fouilles dans les journaux, il semble que je puisse pointer vers la partition Windows de ce disque dur, ce qui est correct. Cela semble être une impasse et je ne trouve rien d'autre en ligne.

J'aimerais vraiment ne pas avoir à sauvegarder, reformater et réinstaller. Quelqu'un a-t-il une piste?

7
neph

Je viens tout juste de me retrouver dans une situation similaire avec une mise à niveau ratée et des problèmes subséquents en mode de récupération, dans lequel un certain sous-ensemble de paquets (à savoir la distribution) traînait sur dpkg --configure -a avec le même message Started Braille Device Support.. Le hack qui m'a permis de traverser ça était:

  1. Si vous êtes en train de regarder une commande apt-get accrochée, appuyez sur Ctrl+C arrêter. Si cela ne fonctionne pas (comme cela a été le cas pour moi), appuyez sur Ctrl+Z, puis exécutez kill -9 %1 plusieurs fois pour le tuer définitivement. Puis lancez rm /var/lib/dpkg/lock, puisque vous avez assassiné le processus qui le fait habituellement.
  2. Exécutez screen (afin d’obtenir plus d’une invite).
  3. Presse Ctrl+A et alors c ouvrir une invite différente.
  4. Exécutez dpkg --configure -a et attendez que le processus se bloque.
  5. Presse Ctrl+A et alors a pour revenir à l'autre invite.
  6. Exécutez killall systemctl
  7. Presse Ctrl+A et alors a pour revenir à la commande dpkg --configure -a.
  8. Notez que la configuration du dernier package doit être terminée et que dpkg est passé au package suivant et bloqué de la même manière ou terminé.
  9. Si dpkg se bloque à nouveau, passez à l’étape 5.
  10. Une fois que dpkg --configure -a est enfin terminé, continuez en mode récupération, éventuellement en exécutant apt-get upgrade jusqu'à ce que le système apparaisse dans un état pouvant être redémarré.

En ce qui concerne pourquoi cela a fonctionné (du moins pour moi), mon processus de débogage était le suivant:

  1. apt-get upgrade était en attente. Exécuter le Ctrl+Z et kill -9 %1 chose ci-dessus pour revenir à l'invite.
  2. Exécutez dpkg --configure -a et observez qu'il se bloque avec le même message Started Braille Device Support. que apt-get upgrade. cependant, Ctrl+C travaille cette fois pour revenir à l'invite.
  3. Recherchez autour de "Ubuntu a commencé le support des appareils braille". Découvrez à partir de ceci page d'accessibilité debian que cela a à voir avec brltty.
  4. Exécutez apt-get remove brltty, peut-être que le problème disparaîtra.
  5. Relancez dpkg --configure -a et notez qu'il se bloque toujours , mais cette fois, il n'y a pas de message concernant Started Braille Device Support. D'ACCORD.
  6. Exécutez strace dpkg --configure -a et observez que le processus est bloqué par un appel wait4(...) à un sous-processus.
  7. Quelques lignes plus haut, notez que le processus écrit le fichier /var/lib/dpkg/info/apport.postinst (ou quelque chose de similaire, IIRC).
  8. less le fichier ci-dessus et observez qu'il tente de redémarrer un service de démarrage. Pensez que puisque nous sommes en mode de récupération et que le système init n'est pas terminé, cela va être gênant.
  9. Exécutez pstree et voyez que dpkg --reconfigure -a a bien basculé vers un objet bash, qui passe ensuite à Perl, et enfin systemctl, qui redémarre les services de démarrage et peut être confondu.
  10. Notez que le script postinst ne contient pas set -e. Par conséquent, nous pouvons peut-être supprimer la commande bloquée à l'intérieur de celle-ci. Le script Shell se termine et dpkg continue.
  11. Ouvrez un autre écran Invite, exécutez killall systemctl, revenez en arrière et constatez que dpkg a effectivement été déplacé. Génial. Il est à nouveau bloqué au même endroit, sur un emballage différent.
  12. Exécutez à nouveau killall systemctl jusqu'à ce que dpkg se termine.
  13. Exécutez à nouveau apt-get dist-upgrade, vérifiez que tout est à jour.
  14. Croisez les doigts et redémarrez.

Miraculeusement, le système a récupéré et n'a jusqu'à présent aucun problème.

Il ne s’agit donc pas d’une réduction complète (pourquoi systemctl se bloque en mode de récupération?), Et elle n’est probablement pas généralement applicable, mais ce hack et le processus permettant de le découvrir peuvent aider quelqu'un qui arrive sur cette page par le biais d’une recherche Web, comme je l’ai fait.

9
Steven Ruppert

Une amélioration aux réponses précédentes lorsque vous ne pouvez pas utiliser la commande `screen ':

dpkg --configure -a & (sleep 2m; killall systemctl)

Réglez le temps de sommeil sur un intervalle de temps minimum après lequel vous êtes certain de rester bloqué. (Dans mon cas, en fait, j'ai utilisé 10). Travaillé pour moi!

4
Jameeyo

J'ai rencontré ce problème lorsque j'ai essayé de mettre à niveau la version 15.10 vers la version 16.04 et j'ai corrigé les étapes ci-dessous.

  1. Démarrez en ligne de commande en appuyant sur E lorsque vous mettez en surbrillance la première entrée pour la modifier.

  2. Curseur à la fin de la ligne linux. Supprimez quiet splash vt.handoff=7 et ajoutez single.

  3. Presse Ctrl+X pour démarrer.

  4. Exécutez screen (afin d’obtenir plus d’une invite).

  5. Presse Ctrl+A et alors C ouvrir une invite différente.

  6. Exécutez dpkg --configure -a et attendez pour terminer.

  7. Redémarrer

3
vicky

J'ai réussi à exécuter le processus principalement en appuyant sur Ctrl+Z mettre en pause le processus en cours et l’envoyer à l’arrière-plan, puis entrer

killall systemctl

dans le shell pour mettre fin à tous les processus systemctl et

fg

pour continuer le processus en pause à nouveau au premier plan.

2
Mekk