apt-get アップデートとアップグレードを自動化し、無人化します。

apt-get アップデートとアップグレードを自動化し、無人化します。

私は約7台のDebianサーバーを管理しており、自動的に更新されるように設定したいと思います。だから私は次のスクリプトを作成しました。

#!/bin/sh
apt-get update
apt-get upgrade

rootそしてcrontabのリストに入れてください。残念ながら、アップグレードセクションに引き続きアップグレードするかどうかを尋ねる質問が表示されます。これはクローン操作なので、電子メールで失敗したことを知らせるまで出力を見ることはできません。このメッセージをスキップして自動的にアップグレードする方法はありますか?

答え1

確認しない場合は、apt-getの-yオプションを使用してください。からman apt-get

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts and
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

DEBIAN_FRONTEND 環境変数を設定することもできます。

DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

答え2

まあ、おそらく間違ったツールを使っているかもしれません。unattended-upgradesパッケージは毎日セキュリティアップグレードをインストールし(設定可能)、アップグレードするパッケージ、アップグレードしないパッケージなどを設定できます。以下を使用してインストールできます。

sudo apt-get install unattended-upgrades

からman unattended-upgrades

構成は、適切な構成メカニズムによって実行されます。デフォルトの設定ファイルは /etc/apt/apt.conf.d/50unattended-upgrades にあります。

答え3

以前の答えは有益ですが、プロセス中に人間の手段に必要な入力の問題を回避しませんupgrade。だから私は以下を使用しています:

export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
sudo -E apt-get -qy update
sudo -E apt-get -qy -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade
sudo -E apt-get -qy autoclean

「配布」アップグレード(カーネルなど)を含めるには、このdist-upgradeコマンドを使用します。

よりマニュアルページdpkgこれらのパラメータに関する詳細情報です。

重要なヒント: 通貨sudoを含む-E必須パラメータ:

Indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the user does not have permission to preserve the environment.

そうでなければ、このEXPORTステートメントは何の効果もありませんapt-get

クレジットは次のとおりですレミヴァンエルスト!ありがとうございます!

答え4

彼の投稿について@diegocnに感謝します。GitHubの問題、対話型機能を無効にする次のコマンドが見つかりました。

echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections

debconf-set-selectionsdebconf データベースに回答を追加したり、データベースで回答を変更したりできます。各質問は、debconf が対話式に質問するのを防ぐために表示されるように表示されます。

警告する

このコマンドは、インストールされるパッケージまたはすでにインストールされているパッケージの debconf 値をシードするためにのみ使用します。そうしないと、削除されていないデータベースのパッケージ値が残るか、共有値に関連するより深刻な問題が発生する可能性があります。ソースマシンに同じインストールがある場合にのみデータベースをシードするために使用することをお勧めします。

debconf-set-selections

関連情報