La soluzione di Alex elimina gli errori e ha quasi capito bene la causa, ma non ti consente di rispondere a qualsiasi domanda (il che va bene quando hai preconfigurato le risposte e stai eseguendo uno script, ma è davvero fastidioso quando stai provando nuovi pacchetti ). Il problema principale è un'interazione tra le ipotesi fatte dai vari frontend di ssh e debconf.
Cominciamo con ssh. ssh presuppone che quando non si specifica un comando remoto si desidera un pty sull'estremità remota e si specifica un telecomando che non si fa (che funziona notevolmente bene il 90% delle volte, ma non questo). Questo può essere ignorato -t
dall'opzione che forza un pty o -T
dall'opzione che non forza pty (o dalle corrispondenti opzioni del file di configurazione). Inoltre, quando si utilizza un pty, la TERM
variabile di ambiente viene copiata (possono essere applicate eccezioni alla documentazione di controllo per i dettagli completi e il modulo di iscrizione al concorso ufficiale). Inoltre, l' -x
opzione disabilita l'inoltro X11 e lo -X
abilita.
Debconf stesso non ha requisiti di interattività (in base alla progettazione), ma i vari frontend lo fanno e ognuno ha requisiti diversi.
Credo che il frontend più bello sia lo gnomo (c'è anche un front end ked che non ho funzionato). Il frontend gnome (e anche quello kde) richiede alcune librerie non predefinite e un server X11, quindi la riga di comando per forzare il frontend gnome (una volta installate le librerie appropriate) sarebbe
ssh -X <remote_srv> "DEBIAN_FRONTEND=gnome apt-get autoremove"
o se preferisci kde
ssh -X <remote_srv> "DEBIAN_FRONTEND=kde apt-get autoremove"
Il frontend della finestra di dialogo (impostazione predefinita) richiede un pty e un terminale con un livello minimo di funzionalità specificato nella variabile TERM (in pratica si tratta di qualcosa con una descrizione terminfo completa tranne che stupido).
ssh -t <remote_srv> "TERM=$TERM DEBIAN_FRONTEND=dialog apt-get autoremove"
o
ssh -t <remote_srv> "apt-get autoremove"
il frontend readline ha requisiti meno stringenti e funzionerà con terminali stupidi, ma avrà bisogno di un pty.
ssh -t <remote_srv> "DEBIAN_FRONTEND=readline apt-get autoremove"
Il frontend dell'editor dipende da un editor che avrebbe requisiti specifici a seconda dell'editor.
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"
Il frontend non interattivo non ha requisiti ma non pone domande (che possono essere o meno ciò che si desidera).
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"