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
/, aptitude
aby zaakceptować nowe pliki konfiguracyjne?
Zasadniczo potrzebuję apt
/ aptitude
ekwiwalent dpkg --force-confnew
Muszę odpowiedzieć na następujące pytanie postawione podczas apt-get
instalacji 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ę sudo
hasł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
Odpowiedzi:
Możesz przekazać
dpkg
parametry, abyapt-get
to polubićZe
--force-confdef
jeśli stare pliki konfiguracyjne wciąż istnieją, nie dostanie nadpisane. Więc prawdopodobnie tego nie użyjesz, po prostu dokumentuję to innym.sudo
nie poprosi o hasło, jeśli zignorujesz opcję uwierzytelnienia dla użytkownika lub dodaszNOPASSWD
znacznik do określonego wpisu. na przykładźródło
Możesz spróbować:
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
sudo
wywołań bez hasła .źródło
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/71debconf
plik, aby mieć następującą treść: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.
źródło
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.postinst
aby zapytać o plik konfiguracyjny. (Możesz zobaczyćopenssh-server.postinst
, używającdget
przeciwko 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=noninteractive
dlatego, ż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=noninteractive
to twój przysłowiowy młot.Tylko uważaj: ustawienie
-o Dpkg::Options::=--force-confnew
i / lubUCF_FORCE_CONFFNEW=1
oznacza, że wszystkie pliki konfiguracyjne z zainstalowanych pakietów powracają do wcześniejszych. Tak na przykład w przypadkuopenssh-server
, twój/etc/ssh/sshd_config
zostanie zresetowany do ustawień fabrycznych. I np.PermitRootLogin=yes
Zostaną usunięte. Ale oczywiście tego nie używasz, więc wszystko będzie dobrze! ;-)źródło