web-dev-qa-db-ja.com

Debianを更新/アップグレードし、相互作用をスキップします

一部のDebianマシンを更新およびアップグレードするために小さなスクリプトを実行していますが、数週間後、ターミナルに表示される「ニュース」のために常に停止しました。手動でアップグレードすると、一部のソフトウェアから「フルスクリーン」(下のスクリーンショットを参照)が表示され、「q」を押す必要があります。ソフトウェアを変更したくないので、アップグレード中にすべてのインタラクティブ画面をスキップできるソリューションを見つけたいと思います。

通常、私は以下を使用して大丈夫でした:

Sudo apt-get update -y 
Sudo apt-get upgrade -y

アップグレードプロセスがタイムアウトなしで中断されていることに気付いた後、私もこのソリューションを使用しようとしました post

Sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

しかし、残念ながら同じ結果になります。誰かが中断することなくマシンをアップグレードするだけの解決策を持っていますか?

xorg-server, press q to quit

[〜#〜]更新[〜#〜]

最初に実行したばかりです:

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

残念ながら、別の同様の問題が発生します。

enter image description here

また、/ 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
2
user3191334

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
5
Dababi

更新情報はapt-listchangesによって提供されます。これらの詳細を確認したくない場合は、パッケージを完全に削除できます。それ以外の場合は、/etc/apt/listchanges.confを使用して構成できます。あなたの場合、

frontend=mail

または

frontend=none

インストールが中断されるのを防ぎます。

apt-listchangesはこのような状況で正しいことを行うはずなので、他の方法で修正して、インタラクティブモードでも更新の詳細を表示できるようにする必要があります。特に-qオプションをapt-getに追加してみてください。)

単に実行していることに注意してください

DEBIAN_FRONTEND=noninteractive

何も変更されません。apt-getプロセスの環境に配置されるようにする必要があります。

export DEBIAN_FRONTEND
1
Stephen Kitt