Ubuntu 22.04 で APT を実行すると、パッケージ更新中に TUI や入力待ちが表示されることがあります。手動作業なら確認すればよいですが、Ansible などの構成管理や非対話の更新処理では、入力待ちがそのまま停止原因になります。
この記事では、APT 実行時の TUI / 入力待ちを抑止するために、DEBIAN_FRONTEND=noninteractive、dpkg の設定ファイル処理オプション、needrestart を分けて整理します。
なぜ入力待ちが発生するのか
APT の入力待ちは、APT だけが原因ではありません。debconf、dpkg の設定ファイル差分、needrestart など、複数の仕組みが関係します。
| 原因 | 内容 | 対策の方向 |
|---|---|---|
| debconf | パッケージ設定時の質問を表示する | DEBIAN_FRONTEND=noninteractive |
| dpkg conffile | 設定ファイル差分をどう扱うか確認する | --force-confdef / --force-confold |
| needrestart | サービスやカーネル再起動の必要性を確認する | needrestart の設定、再起動運用の整理 |
Ansible の APT 実行ログを見る
Ansible 経由で APT を実行すると、手動実行より入力待ちが発生しにくいことがあります。APT の履歴を見ると、dpkg オプションが付与されていることがあります。
grep -A5 -B2 'Dpkg::Options' /var/log/apt/history.logたとえば、次のようなオプションが使われます。
apt-get -y \
-o Dpkg::Options::=--force-confdef \
-o Dpkg::Options::=--force-confold \
upgrade --with-new-pkgsDEBIAN_FRONTEND=noninteractive
DEBIAN_FRONTEND=noninteractive は、debconf の対話画面を抑止するための環境変数です。パッケージ設定時の質問を非対話に寄せるため、構成管理や自動化ではよく使われます。
sudo DEBIAN_FRONTEND=noninteractive apt install -y package-nameただし、これだけですべての入力待ちが消えるわけではありません。dpkg の設定ファイル差分や needrestart の確認は別に考える必要があります。
dpkg の設定ファイル差分をどう扱うか
パッケージ更新時に、既存の設定ファイルとパッケージ側の新しい設定ファイルが異なる場合、dpkg はどう扱うか確認することがあります。非対話で進めるには方針を指定します。
| オプション | 意味 |
|---|---|
--force-confdef | デフォルトの判断を使う |
--force-confold | 既存の設定ファイルを優先する |
--force-confnew | 新しい設定ファイルを優先する |
サーバー運用では、既存設定を守るために --force-confold を使うことがあります。ただし、新しい設定ファイルに重要な変更が入っている場合、それを見落とすリスクがあります。
非対話更新の基本形
手動でどうしても非対話に寄せて更新する場合の例です。
sudo DEBIAN_FRONTEND=noninteractive apt -y \
-o Dpkg::Options::=--force-confdef \
-o Dpkg::Options::=--force-confold \
upgrade --with-new-pkgsこの形は便利ですが、常に万能というわけではありません。重要な設定変更を確認したいサーバーでは、更新前後に差分やログを確認します。
needrestart の扱い
Ubuntu では、ライブラリやカーネル更新後にサービス再起動が必要か確認するため、needrestart が関係することがあります。手動更新では表示を見て判断できますが、自動化では入力待ちになる場合があります。
自動化する場合は、needrestart の設定で再起動確認の挙動を調整します。ただし、サービスを自動再起動するかどうかは影響が大きいため、運用方針に合わせます。
grep -R "\$nrconf{restart}" /etc/needrestart/needrestart.conf /etc/needrestart/conf.d 2>/dev/null || trueAnsible での考え方
Ansible では、APT モジュールに任せる方が素直です。シェルで APT コマンドを直書きするより、モジュールのオプションで非対話処理を扱う方が管理しやすくなります。
- name: Upgrade packages
become: true
ansible.builtin.apt:
update_cache: true
upgrade: safe
dpkg_options: force-confdef,force-confoldただし、Ansible でも再起動が必要な状態をどう扱うかは別問題です。更新後に /var/run/reboot-required を確認し、必要ならメンテナンス手順として再起動します。
更新後に確認すること
- APT の履歴を確認する
- 保留されたパッケージがないか確認する
- 再起動が必要か確認する
- サービス再起動が必要か確認する
- 設定ファイル差分を無視しすぎていないか確認する
apt list --upgradable
cat /var/log/apt/history.log | tail -n 80
[ -f /var/run/reboot-required ] && cat /var/run/reboot-requiredまとめ
Ubuntu 22.04 の APT 実行時に TUI や入力待ちを抑止するには、DEBIAN_FRONTEND=noninteractive だけでなく、dpkg の設定ファイル処理オプションや needrestart の挙動も理解する必要があります。
非対話化は自動化には重要ですが、設定ファイル差分や再起動の必要性を見ないまま進めると、別の運用リスクになります。入力待ちを避けることと、更新後の確認を省略しないことをセットで考えるのがよいです。
書籍
Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
関連記事
- Ubuntu 22.04 apt update / apt upgrade の基本 – 手動アップデートの確認手順
- Ubuntu 22.04 unattended-upgrades の設定 – セキュリティ更新を自動適用する
- Proxy 環境で apt-key adv –recv-keys がタイムアウトする原因 – GPG 鍵取得と外部通信を切り分ける
- Ubuntu 22.04 設定マニュアル
- Ubuntu 22.04 Netplan ネットワーク設定



