फ़्रंट प्रारंभ करने में असमर्थ: ssh का उपयोग करते समय संवाद


52

मैं एक परीक्षण वातावरण में ssh पर निम्नलिखित कमांड को रूट के रूप में निष्पादित कर रहा हूं:

ssh <remote_srv> "apt-get autoremove"

मेरे sshd_config में मेरे पास "PermitRootLogin without-password" है और मैंने रिमोट सर्वर पर अधिकृत_की फ़ाइल में रूट की id_rsa.pub जोड़ा है।

फिर भी मुझे निम्नलिखित त्रुटियां हैं:

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

मैंने ssh के डी मैन पेजों में इसे देखा है, लेकिन छद्म शर्तों और ट्टीज़ पर स्पष्टीकरण के बारे में अपने दिमाग को लपेट नहीं सका।

क्या कोई है जो त्रुटियों के ऊपर व्याख्या कर सकता है? मुझे लगता है कि यह एक लापता विकल्प है, लेकिन कौन सा?

दोनों प्लेटफॉर्म Ubuntu 14.04 LTS हैं।

जवाबों:


62

मेरा मानना ​​है कि इस तथ्य के साथ कुछ करना है जो apt-get autoremoveएक गैर-इंटरैक्टिव शेल में चलाया जा रहा है। देखें कि क्या डॉकटर के तहत इंस्टॉल करते समय संवाद प्रश्नों का उत्तर देना है?

समाधान के साथ कमांड को उपसर्ग करना प्रतीत होता है DEBIAN_FRONTEND=noninteractive:

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

12
ऐसा तब होता है जब डॉकटर स्थापित करने के दौरान एप्टी-गेट का उपयोग करते हुए, उपसर्ग जोड़ना, महान काम करता है
नील मैकगिल

टिप्पणी के लिए धन्यवाद नील। मुझे ऐसा लगा जैसे मैंने अपना रास्ता खो दिया है लेकिन मैं एक ही मुद्दे में भाग गया जब apt-get का उपयोग docker install के दौरान किया गया।
Qcom

13

एलेक्स का समाधान त्रुटियों को दबाता है, और उसे लगभग कारण सही मिला है, लेकिन यह आपको किसी भी प्रश्न का उत्तर देने की अनुमति नहीं देता है (जो कि ठीक है जब आपने उत्तरों की भविष्यवाणी की है और एक स्क्रिप्ट से चल रहे हैं, लेकिन असली कष्टप्रद है जब आप नए पैकेजों की कोशिश कर रहे हैं )। मुख्य मुद्दा ssh और debconf के विभिन्न दृष्टिकोणों द्वारा बनाई गई मान्यताओं के बीच की बातचीत है।

चलो ssh से शुरू करते हैं। ssh मानता है कि जब आप एक दूरस्थ कमांड निर्दिष्ट नहीं करते हैं जिसे आप दूरस्थ छोर पर एक pty चाहते हैं और आप एक दूरस्थ निर्दिष्ट करते हैं जो आप नहीं करते हैं (जो समय के 90% अच्छी तरह से काम करता है, बस यह एक नहीं है)। यह उस -tविकल्प द्वारा ओवरराइड किया जा सकता है जो किसी पीटीआई को मजबूर करता है या वह -Tविकल्प जो किसी पीटीआई (या संबंधित कॉन्फिगर फाइल विकल्प) को बाध्य करता है। आगे जब पीटीआई का उपयोग किया जाता है तो TERMपर्यावरण चर की नकल की जाती है (अपवाद पूर्ण विवरण और आधिकारिक स्वीपस्टेक प्रवेश फॉर्म के लिए चेक प्रलेखन लागू कर सकते हैं)। यह भी ध्यान दें कि -xविकल्प X11 अग्रेषण को अक्षम करता है और -Xइसे सक्षम करता है।

देबॉन्फ़ की खुद की कोई अन्तरक्रियाशीलता आवश्यकताएँ नहीं हैं (डिज़ाइन के अनुसार), लेकिन विभिन्न दृष्टिकोण करते हैं, और हर एक की अलग-अलग आवश्यकताएँ होती हैं।

मेरा मानना ​​है कि सबसे अच्छा दिखने वाला दृश्य सम्मोहन है (एक केड फ्रंट एंड भी है जिसे मुझे काम नहीं मिला)। सूक्ति दृश्य (और kde एक के रूप में अच्छी तरह से) कुछ गैर-डिफ़ॉल्ट पुस्तकालयों और एक X11 सर्वर की आवश्यकता होती है, इसलिए सूक्ति सीमा को लागू करने के लिए कमांड लाइन (एक बार उपयुक्त लाइब्रेरी स्थापित होने के बाद) होगी

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

या यदि आप kde पसंद करते हैं

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

डायलॉग फ्रंटेंड (डिफॉल्ट) को पीटीई और टर्मिनल की आवश्यकता होती है, जिसमें TERM वेरिएबल में निर्दिष्ट न्यूनतम स्तर की कार्यक्षमता होती है (व्यवहार में यह डम्ब को छोड़कर पूर्ण टर्मोफ विवरण के साथ कुछ भी है)।

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

या

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

रीडलाइन फ्रंटेंड की कम कठोर आवश्यकताएं हैं और यह डंबल टर्मिनलों के साथ काम करेगा, लेकिन इसके लिए एक पैटी की आवश्यकता होगी।

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

संपादक का दृश्य संपादक पर निर्भर करता है जिसकी संपादक के आधार पर विशिष्ट आवश्यकताएं होंगी।

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"

नॉनटेनेक्टिव फ्रंटेंड की कोई आवश्यकता नहीं है लेकिन यह कोई प्रश्न नहीं पूछता है (जो आप चाहते हैं या नहीं हो सकता है)।

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

"रीडलाइन फ्रंटेंड की कम कठोर आवश्यकताएं हैं और यह डंबल टर्मिनलों के साथ काम करेगा, लेकिन इसके लिए एक पैटी की आवश्यकता होगी।" क्या आप बता सकते हैं कि मैं एक पेंटी कैसे सेट कर सकता हूं?
linuxatico

ssh -tअधिक विवरण और अन्य विकल्पों के लिए @linuxatico, ssh मैन पेज पर देखें। इस उत्तर के दूसरे पैराग्राफ को भी फिर से पढ़ें।
hildred
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.