目的に合わせて新しいUbuntu仮想マシンを自動的に構成するシェルスクリプトがあります。このスクリプトをインストールしてunattended-upgrades
を有効にしたいと思いますが、ユーザーの操作なしでその方法を理解することはできません。
アップグレードを有効にする通常の方法はdpkg-reconfigure unattended-upgrades
ですが、もちろんそれはインタラクティブです。非対話型のフロントエンドは質問を一切回避し、テキストフロントエンドは、stdin/stdoutではなくttyを使用してI/Oを実行するようにバインドおよび決定されているようです。
好きなように設定した後、/ etc/apt/apt.conf.d/20auto-upgradesのコピーを作成し、ターゲットマシンの所定の場所にドロップします。スクリプトに埋め込むことも、サーバーからrsyncまたはwgetすることもできます。
基本的に、スクリプトは次のようになります。
apt-get install unattended-upgrades
wget -O /etc/apt/apt.conf.d/20auto-upgrades http://myserver.mytld/confs/20auto-upgrades
/etc/init.d/unattended-upgrades restart
Dpkg-reconfigureスクリプトを実行する理由はまったくありません。
リモートサーバーからconfファイルを取得したくない場合、それは非常に短くシンプルです-セキュリティアップデートのみを取得してインストールするデフォルトバージョンは次のようになります:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
したがって、次のコマンドを使用すると、これらの行を構成ファイルに直接エコーできます。
echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades
Dpkg-reconfigureを使用する場合は、「debconf-set-selections」を使用して値を設定し、非対話形式で値を再設定できます。
echo "unattended-upgrades unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades
/etc/apt/apt.conf.d/20auto-upgrades
にエコーするにはSudoを使用する必要があります
if [[ ! -f /etc/apt/apt.conf.d/20auto-upgrades.bak ]]; then
Sudo cp /etc/apt/apt.conf.d/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades.bak
Sudo rm /etc/apt/apt.conf.d/20auto-upgrades
echo "APT::Periodic::Update-Package-Lists \"1\";
APT::Periodic::Download-Upgradeable-Packages \"1\";
APT::Periodic::AutocleanInterval \"30\";
APT::Periodic::Unattended-Upgrade \"1\";" | Sudo tee --append /etc/apt/apt.conf.d/20auto-upgrades
fi