Назад | Перейти на главную страницу

Как автоматизировать измененные файлы конфигурации во время обновления apt-get в Ubuntu 12

Мне нравится использовать команду «Knife cloudstack server create ...» для создания новой виртуальной машины. Мой шаблон начальной загрузки начинается с «apt-get update» и «apt-get -y upgrade».

Затем обновление останавливается:

10.190.113.11 Configuration file `/etc/nscd.conf'
10.190.113.11  ==> Modified (by you or by a script) since installation.
10.190.113.11  ==> Package distributor has shipped an updated version.
10.190.113.11    What would you like to do about it ?  Your options are:
10.190.113.11     Y or I  : install the package maintainer's version
10.190.113.11     N or O  : keep your currently-installed version
10.190.113.11       D     : show the differences between the versions
10.190.113.11       Z     : start a shell to examine the situation
10.190.113.11  The default action is to keep your current version.
10.190.113.11 *** nscd.conf (Y/I/N/O/D/Z) [default=N] ?

Итак, действительно есть две проблемы:

Во-первых, могу ли я заставить apt-get что-то делать по умолчанию? Очевидно, нет возможности дать ответ.

Во-вторых, я даже не знаю, каким должен быть правильный ответ на вопрос. Конфигурационный файл, который он заменяет, взят из шаблона. Я еще не посмотрел, что вообще делает "nscd". (Предположительно "Y" - правильный ответ, но исследования, проведенные на момент постановки вопроса, устрашают.)

Вы можете передавать аргументы, чтобы не получать подсказки. У меня это работает;

apt-get update
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

--force-confold (мой выбор) сделаю это "Что вы хотите сделать с измененным файлом конфигурации" вопросы по умолчанию N (сохраните текущую установленную версию)

--force-confold: do not modify the current configuration file, the new version is installed with a .dpkg-dist suffix. With this option alone, even configuration files that you have not modified are left untouched. You need to combine it with --force-confdef to let dpkg overwrite configuration files that you have not modified.
--force-confnew: always install the new version of the configuration file, the current version is kept in a file with the .dpkg-old suffix.
--force-confdef: ask dpkg to decide alone when it can and prompt otherwise. This is the default behavior of dpkg and this option is mainly useful in combination with --force-confold.
--force-confmiss: ask dpkg to install the configuration file if it’s currently missing (for example because you have removed the file by mistake).

Предупреждение - некоторые измененные файлы конфигурации могут вывести из строя вашу систему, если будут сохранены и несовместимы с обновленной версией пакета. Пожалуйста, проверьте это перед развертыванием в решениях автоматизации.

Если вы совершенно не хотите отвечать на какие-либо интерактивные вопросы, установите DEBIAN_FRONTEND переменная переднего конца для noninteractive.

Это может быть так же просто, как DEBIAN_FRONTEND=noninteractive apt-get upgrade.

Вы не получите никаких сообщений, и будут выбраны значения по умолчанию. В большинстве случаев это означает, что ваши файлы конфигурации не будут изменены, и вы останетесь с файлами, названными как *.dpkg-new для всех мест, где файл конфигурации был нетронутым. Затем вы можете вручную разрешить изменения или передать свою локальную конфигурацию в систему с помощью системы управления конфигурацией или чего-то еще.

Во-вторых, я даже не знаю, каким должен быть правильный ответ на вопрос

Удар по D Клавиша отобразит разницу, которую вы затем сможете проверить. Если вы уверены, что никогда не меняли этот файл вручную, выберите Y заменить его, вероятно, безопасно (вы проверили обновление резервных копий) ПРАВО!!). Выбор N просто сохраняет старый файл, который также безопасен в 95% случаев, если в пакете не были серьезные изменения, которые обычно рассматриваются в журнале изменений / примечаниях к выпуску, которые вы также прочитали перед запуском команды upgrade / dist-upgrade.

После этого просто сначала попробуйте команду в своей тестовой среде. Посмотрите, не работает ли что-нибудь. Если вы действительно не уверены, получите различие и прочтите документацию к пакету и исследованиям.