La solution d'Alex supprime les erreurs, et il a presque trouvé la cause exacte, mais il ne vous permet pas de répondre aux questions (ce qui est bien lorsque vous avez présélectionné les réponses et que vous exécutez à partir d'un script, mais vraiment ennuyeux lorsque vous essayez de nouveaux paquets). Le problème central est une interaction entre les hypothèses faites par ssh et les différents frontaux de debconf.
Commençons par ssh. ssh suppose que lorsque vous ne spécifiez pas de commande distante, vous voulez un pty à l'extrémité distante et que vous spécifiez une commande distante que vous ne voulez pas (ce qui fonctionne remarquablement bien 90% du temps, mais pas cette fois). Ceci peut être surchargé par l'option -t
qui force un pty ou l'option -T
qui force l'absence de pty (ou les options correspondantes du fichier de configuration). De plus, lors de l'utilisation d'un pty, l'option TERM
est copiée (des exceptions peuvent s'appliquer, consultez la documentation pour plus de détails et le formulaire officiel de participation au concours). Il convient également de noter que le -x
désactive la redirection X11 et -X
le permet.
Debconf lui-même n'a pas d'exigences en matière d'interactivité (par conception), mais les différents frontaux en ont, et chacun a des exigences différentes.
Je pense que la meilleure interface est celle de gnome (il existe aussi une interface ked que je n'ai pas réussi à faire fonctionner). Le frontal de gnome (et celui de kde aussi) nécessite quelques bibliothèques non par défaut et un serveur X11, donc la ligne de commande pour forcer le frontal de gnome (une fois que les bibliothèques appropriées sont installées) serait la suivante
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"
Le frontal de dialogue (par défaut) nécessite un pty et un terminal avec un niveau minimum de fonctionnalité spécifié dans la variable TERM (en pratique, il s'agit de tout ce qui a une description terminfo complète, sauf dumb).
ssh -t <remote_srv> "TERM=$TERM DEBIAN_FRONTEND=dialog apt-get autoremove"
または
ssh -t <remote_srv> "apt-get autoremove"
le frontend readline a des exigences moins strictes et fonctionnera avec des terminaux muets, mais aura besoin d'un pty.
ssh -t <remote_srv> "DEBIAN_FRONTEND=readline apt-get autoremove"
Le frontal de l'éditeur dépend d'un éditeur qui aurait des exigences spécifiques selon 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"
Le frontal non interactif n'a pas d'exigences mais il ne pose pas de questions (ce qui peut être ou non ce que vous voulez).
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"