今日、ubuntuサーバーの自動展開に取り組んでいます。新しいカーネルへのアップグレードを試みるapt-get upgrade
を使用したサーバーの自動更新で立ち往生しました。ログは次のようになります。
Setting up linux-image-3.2.0-24-generic (3.2.0-24.39) ...
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
(...)
次に質問が表示されます。
Package configuration
┌─────────────────────────────────┤ ├─────────────────────────────────┐
│ A new version of /boot/grub/menu.lst is available, but the version │
│ installed currently has been locally modified. │
│ │
│ What would you like to do about menu.lst? │
│ │
│ install the package maintainer's version │
│ keep the local version currently installed │
│ show the differences between the versions │
│ show a side-by-side difference between the versions │
│ show a 3-way difference between available versions │
│ do a 3-way merge between available versions (experimental) │
│ start a new Shell to examine the situation │
│ │
│ │
│ <Ok> │
│ │
└──────────────────────────────────────────────────────────────────────┘
望ましい結果は、最初のオプションを選択して続行することです。
Replacing config file /run/grub/menu.lst with new version
Updating /boot/grub/menu.lst ... done
手動でアップグレードを実行した後、debconf-get-selections
を使用して、質問に対する正しい答えを調べました( 他の設定を参照 )。 update_grub_changeprompt_threeway
が答えられるべき質問のようです。ただし、debconf-set-selections
を使用してこれを設定すると、同じ質問が表示されます。
debconf-set-selections <<< "grub grub/update_grub_changeprompt_threeway select install_new"
apt-get -y dist-upgrade
この質問はどのように自動化できますか?
export DEBIAN_FRONTEND=noninteractive
を実行する前に、apt-get upgrade -y
を使用してこれを回避できました。
Ubuntu 16.04では、このシーケンスは対話型ダイアログを回避する必要があります。
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get upgrade -yq
-q
フラグが重要であることに注意してください。
(参照: この質問 devopsで)