Як автоматизувати змінені конфігураційні файли під час оновлення apt-get в Ubuntu 12


13

Мені подобається використовувати "створення ножового сервера cloudstack ..." для створення нового VM. Мій шаблон завантаження починається з "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] ?

Тож справді є дві проблеми:

По-перше, чи можу я заздалегідь зробити так, щоб зробити щось за замовчуванням? Очевидно, що немає способу надати відповідь.

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

Відповіді:


15

Ви можете передавати аргументи, щоб не отримувати підказки. Це працює для мене;

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).

Попередження - деякі модифіковані конфігураційні файли можуть порушити вашу систему, якщо вона не підтримується та не сумісна з оновленою версією пакета. Будь ласка, протестуйте його перед тим, як розгорнути в рішеннях для автоматизації.


5

Якщо ви абсолютно не хочете відповідати на будь-які інтерактивні запитання, то встановіть DEBIAN_FRONTENDзмінну переднього кінця на noninteractive.

Це може бути так само просто DEBIAN_FRONTEND=noninteractive apt-get upgrade.

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

По-друге, я навіть не знаю, якою має бути правильна відповідь на питання

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

Минуле, просто спробуйте спочатку команду в тестовому середовищі. Подивіться, чи все не працює. Якщо ви справді не впевнені, отримайте різницю, і прочитайте документацію для пакета та досліджень.


Ви радите DEBIAN_FRONTEND = неінтерактивне над --force-так? Це здається, що за замовчуванням НІ, і "так" скоріше вірно в цьому випадку. (Я не можу натиснути жодну клавішу, оскільки немає ніякого стину.)
Mojo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.