一部のDebianマシンを更新およびアップグレードするために小さなスクリプトを実行していますが、数週間後、ターミナルに表示される「ニュース」のために常に停止しました。手動でアップグレードすると、一部のソフトウェアから「フルスクリーン」(下のスクリーンショットを参照)が表示され、「q」を押す必要があります。ソフトウェアを変更したくないので、アップグレード中にすべてのインタラクティブ画面をスキップできるソリューションを見つけたいと思います。
通常、私は以下を使用して大丈夫でした:
Sudo apt-get update -y
Sudo apt-get upgrade -y
アップグレードプロセスがタイムアウトなしで中断されていることに気付いた後、私もこのソリューションを使用しようとしました post :
Sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
しかし、残念ながら同じ結果になります。誰かが中断することなくマシンをアップグレードするだけの解決策を持っていますか?
[〜#〜]更新[〜#〜]:
最初に実行したばかりです:
DEBIAN_FRONTEND=noninteractive
/etc/dpkg/dpkg.cfgファイルを次のように二次編集しました。
# dpkg configuration file
#
# This file can contain default options for dpkg. All command-line
# options are allowed. Values can be specified by putting them after
# the option, separated by whitespace and/or an `=' sign.
#
# Do not enable debsig-verify by default; since the distribution is not using
# embedded signatures, debsig-verify would reject all packages.
no-debsig
# Log status changes and actions to a file.
log /var/log/dpkg.log
force-confold
force-confdef
最後に私は実行しました:
Sudo apt-get upgrade -yq
これは「qを押して終了する」に関するトリックを行いました-素晴らしい!
実行中のコマンドを組み合わせることも機能していると思います。
DEBIAN_FRONTEND=noninteractive
Sudo apt-get -o Dpkg::Options::="--force-confnew --force-confdef" --force-yes -yq upgrade
残念ながら、別の同様の問題が発生します。
また、/ etc/apt/listchanges.confを編集しようとしても、残念ながらうまくいきませんでした。
[apt]
frontend=none
email_address=root
confirm=0
save_seen=/var/lib/apt/listchanges.db
which=news
[〜#〜]ソリューション[〜#〜]:
スクリプトを介してコマンドを実行する場合、コンソールにコマンドを直接入力する場合とは、bashの動作が異なることに気付きました(これが上級Linuxユーザーにとって明らかな場合は申し訳ありません)。
全体として、私のスクリプトソリューションは-ypパラメータを追加し、DEBIAN_FRONTENDを設定するだけで十分でした。安全のために、/ etc/dpkg/dpkg.cfgファイルも編集します。
#!/bin/bash
DEBIAN_FRONTEND=noninteractive
export DEBIAN_FRONTEND
apt-get -yq update
apt-get -yq upgrade
DEBIAN_FRONTEND=noninteractive
を設定する必要があります。これにより、debconfプロンプトが表示されなくなります。
その後、force-confold
ファイルにforce-confdef
と/etc/dpkg/dpkg.cfg
を追加します。次に、-y
オプションを使用します
Sudo apt-get -y update && Sudo apt-get -y upgrade
またはこのコマンドを使用します
apt-get -o Dpkg::Options::="--force-confnew --force-confdef" --force-yes -y upgrade
それがうまくいかない場合は試してみてください
apt-get -o Dpkg::Options::="--force-confnew" --force-yes -y upgrade
更新情報はapt-listchanges
によって提供されます。これらの詳細を確認したくない場合は、パッケージを完全に削除できます。それ以外の場合は、/etc/apt/listchanges.conf
を使用して構成できます。あなたの場合、
frontend=mail
または
frontend=none
インストールが中断されるのを防ぎます。
(apt-listchanges
はこのような状況で正しいことを行うはずなので、他の方法で修正して、インタラクティブモードでも更新の詳細を表示できるようにする必要があります。特に-q
オプションをapt-get
に追加してみてください。)
単に実行していることに注意してください
DEBIAN_FRONTEND=noninteractive
何も変更されません。apt-get
プロセスの環境に配置されるようにする必要があります。
export DEBIAN_FRONTEND