Ssh kullanılırken ön uç başlatılamıyor: iletişim kutusu


52

Aşağıdaki komutu ssh üzerinden bir sınama ortamında, root olarak çalıştırıyorum:

ssh <remote_srv> "apt-get autoremove"

Benim sshd_config'de "PermitRootLogin şifresiz" kullanıyorum ve root sunucunun id_rsa.pub dosyasını uzak sunucudaki yetkili_keyler dosyasına ekledim.

Yine de aşağıdaki hataları alıyorum:

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

Bunu ssh de man sayfalarında araştırdım, ancak sözde terimler ve ttyler hakkındaki açıklamalarımı aklımdan geçiremedim.

Yukarıdaki hataları açıklayabilecek biri var mı? Sanırım bu eksik bir seçenek ama hangisi?

Her iki platform da Ubuntu 14.04 LTS.

Yanıtlar:


62

apt-get autoremoveİnteraktif olmayan bir kabukta çalıştırıldığına dair bir şey olduğuna inanıyorum . Bkz . Liman işçisi altında kurulum yaparken diyalog sorularını cevaplamak mümkün müdür?

Çözüm, komutu öneklemekte gibi görünüyor DEBIAN_FRONTEND=noninteractive:

ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"

12
Liman işçisi yükleme sırasında apt-get kullanılırken, ön ekin eklenmesi harika olur
Neil McGill

Neil yorumunuz için teşekkür ederiz. Yolumu kaybettim gibi hissediyorum ama liman yükleme sırasında apt-get kullanırken aynı sorunu yaşadım.
Qcom

13

Alex'in çözümü hataları bastırıyor ve neredeyse sebebini doğruladı, ancak herhangi bir soruyu cevaplamanıza izin vermiyor (cevapları önceden belirlediğinizde ve bir komut dosyasından çalıştırırken sorun değil, ancak yeni paketler çalışırken can sıkıcıdır) ). Asıl mesele, ssh ve debconf'un çeşitli öncüllerinin yaptığı varsayımlar arasındaki etkileşimdir.

Ssh ile başlayalım. ssh, bir uzak komut belirtmediğinizde, uzak uçta küçük bir miktar istediğinizi ve bir uzak belirlemediğiniz (varsayımların% 90'ında iyi bir sonuç verdiğinizi) belirttiğinizi varsayar. Bu, -tbir pty'yi zorlayan seçenek veya -Thiçbir pty'yi zorlamayan seçenek (veya karşılık gelen config dosyası seçenekleri) tarafından geçersiz kılınabilir . Ayrıca bir pty kullanıldığında, TERMortam değişkeni kopyalanır (istisnalar, tamamlanmış detaylar ve resmi çekilişler giriş formu için kontrol belgelerini uygulayabilir). Ayrıca, -xseçeneğin X11 iletmeyi devre dışı bıraktığını ve -Xetkinleştirdiğini unutmayın .

Debconf'un kendisi (tasarım yoluyla) etkileşim gereksinimlerine sahip değildir, ancak çeşitli ön uçlar bunu yapar ve her birinin farklı gereksinimleri vardır.

En iyi görünen önyüzün cüce olduğuna inanıyorum (çalışmadığım bir ked ön tarafı da var). Gnome frontend (ve kde one da) bazı varsayılan olmayan kütüphaneler ve bir X11 sunucusu gerektirir, bu nedenle gnome frontend'i zorlamak için komut satırı (uygun kütüphaneler kurulduktan sonra) olacaktır.

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

veya kde'yi tercih ederseniz

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

Diyalog ön ucu (varsayılan) TERM değişkeninde belirtilen minimum işlevsellik seviyesine sahip bir pty ve bir terminal gerektirir (pratikte bu, aptal dışında tam bir terim tanımına sahip herhangi bir şeydir).

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

veya

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

readline frontend'in daha az katı gereksinimleri vardır ve dilsiz terminallerle çalışacaktır, ancak bir miktar lazım.

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

Editör ön ucu, editöre bağlı olarak özel gereksinimleri olan bir editöre bağlıdır.

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"

Etkileyici olmayan ön uçta herhangi bir gereksinim yoktur, ancak herhangi bir soru sormaz (istediğinizi olabilir veya olmayabilir).

ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"

"readline frontend'in daha az katı gereksinimleri var ve dilsiz terminallerle çalışacak, ancak bir miktar gerekecek." Bir miktar nasıl ayarlayabileceğimi açıklayabilir misin?
linuxatico

@ linuxatico, ssh -tdaha fazla ayrıntı ve diğer seçenekler için ssh man sayfasına bakınız. Ayrıca bu cevabın ikinci paragrafını tekrar okuyunuz.
Hildred
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.