SSH経由の「aptアップグレード」: このフロントエンドには制御ttyが必要です

SSH経由の「aptアップグレード」: このフロントエンドには制御ttyが必要です

Linux サーバーをアップグレードする場合、管理サーバーの 1 つから次のようなコマンドを発行します。

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 アップグレードを実行するのは、良い方法ではないようです。ダイアログがポップアップしたときに「apt アップグレード」などを中止する方法があるでしょうか? または、さらに良い方法として、SSH 接続のクライアント側、つまり ssh しているサーバーにポップアップを表示する方法があるかもしれません。から?

答え1

ターミナルが必要です。これは、 -tpty を強制するパラメータ、または-Tpty を強制しないパラメータ (または対応する設定ファイル オプション) のいずれかを使用して設定できます。

さらに、pty を使用する場合、TERM環境変数がコピーされます (例外が適用される場合があります。完了した詳細と公式の懸賞応募フォームについてはドキュメントを確認してください)。

要件がなく、質問もしない非対話型フロントエンドを指定することもできます (これが必要な場合とそうでない場合があります)。

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

詳細については、Ask Ubuntuの投稿をご覧ください。 フロントエンドを初期化できません: ssh 使用時のダイアログ

関連情報