Jak sprawić, aby apt-get akceptował nowe pliki konfiguracyjne w nienadzorowanej instalacji Debiana z Repo

21

Piszę skrypt do instalacji nienadzorowanej pakietu, który znajduje się w naszym repozytorium, jest to pakiet oprogramowania z jednym z oznaczonych plików konfiguracyjnych Debiana. Czy jest jakaś opcja, którą mogę przekazać do apt-get/, aptitudeaby zaakceptować nowe pliki konfiguracyjne?

Zasadniczo potrzebuję apt/ aptitudeekwiwalent dpkg --force-confnew

Muszę odpowiedzieć na następujące pytanie postawione podczas apt-getinstalacji z literą „Y”


Plik konfiguracyjny `` / 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.

Dodatkowe informacje:

Ponadto przekazuję sudohasło w potoku, aby wykonać polecenie

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

Oznacza to błąd instalacji, gdy instalacja jest w interaktywnej fazie konfiguracji.

Jestem na
wersji apt Ubuntu 10.04 : apt 0.7.25.3

Dlaczego nie mogę używać dpkg: Te Debiany mają zostać zainstalowane z repozytorium i nie mam lokalnych Debianów na moim komputerze

Raman
źródło

Odpowiedzi:

22

Możesz przekazać dpkgparametry, aby apt-getto polubić

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

Ze --force-confdefjeśli stare pliki konfiguracyjne wciąż istnieją, nie dostanie nadpisane. Więc prawdopodobnie tego nie użyjesz, po prostu dokumentuję to innym.

sudonie poprosi o hasło, jeśli zignorujesz opcję uwierzytelnienia dla użytkownika lub dodasz NOPASSWDznacznik do określonego wpisu. na przykład

someuser ALL = NOPASSWD: /usr/bin/apt-get
forcefsck
źródło
7

Możesz spróbować:

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

Pamiętaj jednak, że ma to wpływ na środowisko, takie jak puste domyślne hasła (być może potrzebujesz narzędzia do wdrażania / konfiguracji, takiego jak marionetka, szef kuchni, tkanina ...?).

Zobacz sudoers (5) na temat dopuszczania sudowywołań bez hasła .

sr_
źródło
3

Alternatywnie do tego, co sugerował forcefsck , sugeruję dodanie tego do ustawień APT, aby nie było konieczne dodawanie tych trudnych do napisania opcji przez cały czas. Byłoby to również pomocne w przypadku nienadzorowanych aktualizacji, jeśli masz te ustawienia.

Utwórz /etc/apt/apt.conf.d/71debconfplik, aby mieć następującą treść:

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

Uwaga (od Geoffa): ta zmiana byłaby zmianą globalną. Jeśli masz w systemie inne pakiety, które chcesz otrzymywać nienadzorowane uaktualnienia, ale również skonfigurowałeś je ręcznie, nie byłoby to właściwe rozwiązanie.

Te Ri
źródło
To może być dobra opcja, jednak należy pamiętać, że byłaby to GLOBALNA zmiana. Jeśli masz w systemie inne pakiety, które chcesz otrzymywać nienadzorowane aktualizacje, ale również skonfigurowałeś, nie byłoby to odpowiednie rozwiązanie.
Geoff,
2

Oprócz innych odpowiedzi może być konieczne ustawienie środowiska UCF_FORCE_CONFFNEW = 1 .

Np. Openssh w debian stretch używa ucf (nie debconf), openssh-server/openssh-7.4p1/debian/openssh-server.postinstaby zapytać o plik konfiguracyjny. (Możesz zobaczyć openssh-server.postinst, używając dgetprzeciwko http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dsc )

Musieliśmy wykorzystać wszystkie sztuczki z tej strony oprócz tego, że jesteśmy liberalnymi użytkownikami preconsetu debconf .

Zatrzymaliśmy się jednak tylko export DEBIAN_FRONTEND=noninteractivedlatego, że chcemy wiedzieć, czy coś przeoczyliśmy (może to być ważne). Nasz przypadek użycia to operator rozpoczynający operację. Aktualizacja powinna być nieinteraktywna, ale operator jest obecny, jeśli coś pójdzie nie tak i pojawi się okno dialogowe. Twoja sytuacja może być inna.

Ale export DEBIAN_FRONTEND=noninteractiveto twój przysłowiowy młot.

Tylko uważaj: ustawienie -o Dpkg::Options::=--force-confnewi / lub UCF_FORCE_CONFFNEW=1oznacza, że wszystkie pliki konfiguracyjne z zainstalowanych pakietów powracają do wcześniejszych. Tak na przykład w przypadku openssh-server, twój /etc/ssh/sshd_configzostanie zresetowany do ustawień fabrycznych. I np. PermitRootLogin=yesZostaną usunięte. Ale oczywiście tego nie używasz, więc wszystko będzie dobrze! ;-)

Peter V. Mørch
źródło