Impossible d'initialiser frontend: dialogue lors de l'utilisation de ssh

45

J'exécute la commande suivante sur ssh dans un environnement de test, en tant que root:

ssh <remote_srv> "apt-get autoremove"

Dans mon sshd_config, j'ai "PermitRootLogin without-password" et j'ai ajouté le fichier id_rsa.pub de root au fichier authorized_keys sur le serveur distant.

Néanmoins, je reçois les erreurs suivantes:

debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype

J'ai regardé cela dans les pages de man de ssh, mais je ne pouvais pas me concentrer sur l'explication des pseudo-termes et des ttys.

Quelqu'un peut-il expliquer les erreurs ci-dessus? Je suppose que c'est une option manquante, mais qui?

Les deux plates-formes sont Ubuntu 14.04 LTS.

    
posée twan163 03.08.2014 - 09:16
la source

2 réponses

56

Je crois que cela a quelque chose à voir avec le fait que apt-get autoremove est exécuté dans un shell non interactif. Voir Est-il possible de répondre aux questions du dialogue lors de l'installation sous docker?

La solution semble être de préfixer la commande avec DEBIAN_FRONTEND=noninteractive :

ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"
    
réponse donnée Alex 04.08.2014 - 12:40
la source
13

La solution d’Alex supprime les erreurs, et il a presque bien compris la cause, mais cela ne vous permet pas de répondre à des questions (ce qui est bien lorsque vous avez préconfiguré les réponses et que vous utilisez un script, mais vraiment ennuyeux essayer de nouveaux paquets). Le problème principal est une interaction entre les hypothèses formulées par les différentes interfaces de ssh et de debconf.

Commençons par ssh. ssh suppose que lorsque vous ne spécifiez pas de commande à distance, vous voulez un pty à l'extrémité distante et que vous ne spécifiez pas une télécommande (ce qui fonctionne remarquablement bien 90% du temps, mais pas celui-ci). Cela peut être remplacé par l'option -t qui force l'option pty ou -T qui n'oblige pas pty (ou les options de fichier de configuration correspondantes). En outre, lorsqu’on utilise un pty, la variable d’environnement TERM est copiée (des exceptions peuvent appliquer la documentation de vérification pour les détails complétés et le formulaire d’inscription officiel du tirage au sort). De plus, l'option -x désactive le transfert X11 et -X le permet.

Debconf lui-même n’a pas d’interactivité (de par sa conception), mais les différentes interfaces ont des exigences différentes.

Je crois que la meilleure interface est gnome (il y a aussi un ked front-end que je n'ai pas utilisé). Le front-end gnome (ainsi que celui de kde) nécessite des bibliothèques autres que celles par défaut et un serveur X11. Par conséquent, la ligne de commande pour forcer le front-end gnome (une fois les bibliothèques appropriées installées) serait

ssh -X <remote_srv> "DEBIAN_FRONTEND=gnome apt-get autoremove"

ou si vous préférez kde

ssh -X <remote_srv> "DEBIAN_FRONTEND=kde apt-get autoremove"

L’interface de dialogue (par défaut) requiert un pty et un terminal avec un niveau minimum de fonctionnalité spécifié dans la variable TERM (en pratique, il s’agit d’une description terminfo complète, sauf muette).

ssh -t <remote_srv> "TERM=$TERM DEBIAN_FRONTEND=dialog apt-get autoremove"

ou

ssh -t <remote_srv> "apt-get autoremove"

le frontline readline a des exigences moins strictes et fonctionnera avec des terminaux stupides, mais aura besoin d’un pty.

ssh -t <remote_srv> "DEBIAN_FRONTEND=readline apt-get autoremove"

Le front-end de l'éditeur dépend d'un éditeur qui aurait des exigences spécifiques en fonction de l'éditeur.

ssh -t <remote_srv> "DEBIAN_FRONTEND=editor EDITOR=vi apt-get autoremove"
ssh -X <remote_srv> "DEBIAN_FRONTEND=editor EDITOR=gvim\ -f apt-get autoremove"

L’interface non interactive n’a pas d’exigence mais elle ne pose pas de questions (qui peuvent ou non être ce que vous voulez).

ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"
    
réponse donnée hildred 03.11.2015 - 00:33
la source

Lire d'autres questions sur les étiquettes