Сегодня я работаю над автоматическим развертыванием сервера 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)