Как заставить apt-get принять новые файлы конфигурации в автоматической установке Debian из Repo - PullRequest
22 голосов
/ 17 октября 2011

Я пишу сценарий для автоматической установки пакета, который есть в нашем репо. Это программный пакет с одним из конфигураций, помеченных Debian. Есть ли какая-либо опция, которую я могу передать в apt-get / aptitude, чтобы она принимала новые файлы конфигурации.

В основном мне нужен apt / aptitude эквивалент dpkg --force-confnew

Мне нужно ответить на следующий вопрос, заданный при установке apt-get с Y


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

==> Файл в системе, созданный вами или скриптом.

==> Файл также в пакете, предоставленном сопровождающим пакета.

Что бы вы хотели с этим сделать? Ваши варианты:

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 

Действие по умолчанию - сохранить текущую версию.


Дополнительная информация:

Кроме того, я передаю пароль sudo в конвейер для выполнения команды

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

Это означает ошибку установки, когда установка находится на этапе интерактивного конфигурирования.

Я нахожусь на Ubuntu 10.04 apt версия: apt 0.7.25.3

Почему я не могу использовать dpkg: Эти Debian должны быть установлены из Repo, и у меня нет локальных Debian на моей машине

Заранее спасибо, ребята, за помощь !!!!

Ответы [ 3 ]

28 голосов
/ 07 ноября 2011

Я думаю, что необходимая командная строка apt-get

apt-get -o Dpkg::Options::="--force-confnew" install your-package

Что касается вашей проблемы sudo -S, возможно, попробуйте добавить несколько пробелов вокруг '|'персонаж.Нет, вопрос Как передать пароль в su / sudo / ssh без переопределения TTY? может быть полезным.

10 голосов
/ 21 января 2014

Я попробовал предложения в других ответах и ​​обнаружил, что при попытке установить пакет localepurge этого недостаточно.

После использования debconf-set-selections для установки того, что мне нужно, мне пришлось использоватьследующее:

DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confnew" install localepurge

Только с переменной среды DEBIAN_FRONTEND, установленной на неинтерактивный, я мог заставить localepurge делать то, что я просил.Это может быть верно и для других пакетов.

Конечно, с помощью скрипта вы можете экспортировать переменную, если хотите, но помните, что она может связываться с другими пакетами.Например:

#!/bin/sh
export DEBIAN_FRONTEND=noninteractive
apt-get -o Dpkg::Options::="--force-confnew" install -y localepurge foo bar

Где -y говорит apt-get прекратить задавать вопросы (см. Справочную страницу ).

2 голосов
/ 02 мая 2017

Вы также можете настроить apt для этого, создав /etc/apt/apt.conf.d/local и добавив:

Dpkg::Options {
   "--force-confdef";
   "--force-confold";
}
...