
升級 Linux 伺服器時,我從其中一台管理伺服器發出以下命令:
ssh server1.mycompany.com apt upgrade
在某些情況下,我從命令中得到以下輸出:
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.)
由於我無法與對話框交互,所以我猜選擇了預設值。其他人如何處理這個問題?登入每個伺服器來運行 apt Upgrade,以防萬一彈出對話框,這聽起來不像是正確的方法。也許有辦法在彈出對話框時中止“apt升級”或其他什麼?或者甚至更好,也許有一種方法可以讓彈出視窗顯示在 SSH 連接的客戶端上,即在我正在 ssh 的伺服器上從?
答案1
-t
您需要一個終端,您可以透過強制使用 pty 或-T
強制不使用 pty的參數(或對應的設定檔選項)來設定該終端 。
此外,使用 pty 時,TERM
會複製環境變數(例外情況可能適用於檢查文件以獲取完整的詳細資訊和官方抽獎報名表)。
您可以指定沒有任何要求且不會提出任何問題的非互動式前端(這可能是也可能不是您想要的):
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"
有關更多信息,請參閱詢問 Ubuntu 帖子 使用 ssh 時無法初始化前端:對話框。