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


21

Я пишу сценарій для автоматичного встановлення пакету, який є в нашому РЕПО, це програмний пакет з одним із позначених файлів конфігурації Debian. Чи є якийсь варіант, до якого я можу перейти apt-get/ aptitudeщоб він прийняв нові конфігураційні файли?

В основному мені потрібен apt/ aptitudeеквівалент dpkg --force-confnew

Мені потрібно відповісти на наступне питання, поставлене під час apt-getустановки з Y


Файл конфігурації `` / opt / application / conf / XXX.conf` '

==> File on system created by you or by a script.
==> File also in package provided by package maintainer.

What would you like to do about it ?  Your options are:
Y or I  : install the package maintainer's version
N or O  : keep your currently-installed version
  D     : show the differences between the versions
  Z     : background this process to examine the 

The default action is to keep your current version.

Додаткова інформація:

Також я передаю sudoпароль у трубі для виконання команди

echo "mysudopass"|sudo -S apt-get mypackage

Це позначає помилку в установці, коли інсталяція знаходиться на конфігураційній інтерактивній фазі.

Я на Ubuntu 10.04
apt версія: apt 0.7.25.3

Чому я не можу використовувати dpkg: Ці Debians мають бути встановлені з Repo, і я не маю локальних Debians на своїй машині


Відповіді:


22

Ви можете передавати такі dpkgпараметри, apt-getяк це

apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew install pkgname1 pkgname2 ...

З , --force-confdefякщо старі конфігураційні файли все ще існують, вони не отримають переопределяется. Тож ви, мабуть, не будете використовувати його, я лише документую це для інших.

sudoне буде запитувати пароль, якщо ви скасуєте для користувача опцію автентифікації або додасте NOPASSWDтег до певного запису. напр

someuser ALL = NOPASSWD: /usr/bin/apt-get

7

Ви можете спробувати наступне:

export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install whatever-2

Але зауважте, що це має наслідки, як порожні паролі за замовчуванням (можливо, ви хочете, щоб якийсь інструмент розгортання / налаштування, наприклад, лялька, шеф-кухар, тканина ...?).

Див. Sudoers (5) про те, як дозволити sudoвиклики без пароля .


3

Як альтернатива тому, що запропонував forcefsck, я пропоную вам додати це до налаштувань APT, тому вам не потрібно постійно додавати ці важко записані параметри. Крім того, це може бути корисно для оновлених оновлень, якщо вони встановлені.

Створіть /etc/apt/apt.conf.d/71debconfфайл із таким вмістом:

Dpkg::Options {
  "--force-confnew";
};

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


Це може бути хорошим варіантом, однак важливо зазначити, що це було б глобальною зміною. Якщо у вас є інші пакети в системі, які ви хочете отримати без нагляду оновлення, але також налаштовані, це не буде відповідним рішенням.
Джефф

2

Окрім інших відповідей, можливо, вам також доведеться встановити середовище UCF_FORCE_CONFFNEW = 1 .

Наприклад, OpenSH в Debian stretch використовує ucf (не debconf) openssh-server/openssh-7.4p1/debian/openssh-server.postinstдля запитання про файл-конфігурації. (Ви можете побачити openssh-server.postinst, використовуючи dgetпроти http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dsc )

Нам довелося використовувати всі хитрощі на цій сторінці, крім того, щоб бути ліберальними користувачами попереднього попереднього попередження .

Ми, однак, зупинилися лише коротко, export DEBIAN_FRONTEND=noninteractiveтому що хочемо знати, чи пропустили щось (що може бути важливим). Наш випадок використання - це оператор, який починає роботу. Очікується, що оновлення буде неінтерактивним, але оператор присутній, якщо щось піде не так і з’явиться діалогове вікно. Ваша ситуація може бути різною.

Але export DEBIAN_FRONTEND=noninteractiveце ваш поспішний кувалд.

Просто будьте обережні: налаштування -o Dpkg::Options::=--force-confnewта / або UCF_FORCE_CONFFNEW=1означає, що всі конфігураційні файли з встановлених пакетів повертаються до вихідних. Так, наприклад, у випадку з openssh-serverвами /etc/ssh/sshd_configбуде повернено до заводських налаштувань. І наприклад, PermitRootLogin=yesбуде видалено. Але ви, звичайно, цим не користуєтесь, тож будете добре! ;-)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.