Ich schreibe ein Skript für eine unbeaufsichtigte Installation eines Pakets, das sich in unserem Repository befindet. Es ist ein Softwarepaket mit einer von Debians markierten Konfigurationsdateien. Gibt es eine Option, die ich weitergeben kann apt-get
/aptitude
kann, damit es die neuen Konfigurationsdateien akzeptiert?
Grundsätzlich brauche ich ein apt
/ aptitude
Äquivalent von dpkg --force-confnew
Ich muss die folgende Frage beantworten, die während der apt-get
Installation mit einem Y gestellt wird
Konfigurationsdatei `` / 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.
Zusätzliche Information:
Außerdem übergebe ich das sudo
Passwort in einer Pipe, um den Befehl auszuführen
echo "mysudopass"|sudo -S apt-get mypackage
Dies kennzeichnet einen Fehler in der Installation, wenn sich die Installation in der interaktiven Konfigurationsphase befindet.
Ich bin auf Ubuntu 10.04
apt Version: Apt 0.7.25.3
Warum ich nicht verwenden kann dpkg
: Diese Debians müssen von Repo installiert werden und ich habe keine lokalen Debians auf meinem Computer
Antworten:
Sie können
dpkg
Parameter übergeben, umapt-get
dies zu mögenMit
--force-confdef
wenn alte Konfigurationsdateien noch vorhanden sind , werden sie nicht bekommen außer Kraft gesetzt. Also wirst du es wahrscheinlich nicht benutzen, ich dokumentiere es nur für andere.sudo
fragt nicht nach einem Passwort, wenn Sie die Authentifizierungsoption für den Benutzer negieren oder dasNOPASSWD
Tag in den jeweiligen Eintrag einfügen. z.Bquelle
Sie könnten Folgendes versuchen:
Beachten Sie jedoch, dass dies Auswirkungen hat, z. B. leere Standardkennwörter (möglicherweise möchten Sie ein Deployment- / Konfigurations-Tool wie Marionette, Koch, Stoff ...?).
In sudoers (5) erfahren Sie, wie Sie kennwortlose Aufrufe zulassen
sudo
.quelle
Alternativ zu dem, was forcefsck vorgeschlagen hat, empfehlen wir Ihnen, dies in die APT-Einstellungen aufzunehmen, damit Sie diese schwer zu schreibenden Optionen nicht ständig hinzufügen müssen. Dies ist auch hilfreich für unbeaufsichtigte Upgrades, wenn Sie über diese Einstellungen verfügen.
Erstellen Sie eine
/etc/apt/apt.conf.d/71debconf
Datei mit folgendem Inhalt:Anmerkung (von Geoff): Diese Änderung wäre eine globale Änderung. Wenn Sie andere Pakete auf dem System haben, die Sie unbeaufsichtigt aktualisieren möchten, die Sie jedoch auch manuell konfiguriert haben, ist dies nicht die geeignete Lösung.
quelle
Zusätzlich zu den anderen Antworten müssen Sie möglicherweise auch die Umgebung UCF_FORCE_CONFFNEW = 1 festlegen .
Beispielsweise verwendet openssh in debian stretch ucf (nicht debconf)
openssh-server/openssh-7.4p1/debian/openssh-server.postinst
, um nach der Konfigurationsdatei zu fragen. (Sie können dasopenssh-server.postinst
mit sehendget
gegen http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dsc )Wir mussten alle Tricks auf dieser Seite anwenden, um nicht nur liberale Benutzer von zu sein anwenden Debconf-Voreinstellungen sein .
Wir haben aber halt kurz vor
export DEBIAN_FRONTEND=noninteractive
weil wir wissen wollen, ob wir etwas verpasst haben (das könnte wichtig sein). Unser Anwendungsfall ist ein Bediener, der die Operation startet. Es wird erwartet, dass das Upgrade nicht interaktiv ist. Der Bediener ist jedoch anwesend, wenn ein Fehler auftritt und ein Dialogfeld angezeigt wird. Ihre Situation kann anders sein.Aber
export DEBIAN_FRONTEND=noninteractive
Ist dein sprichwörtlicher Vorschlaghammer.Achtung: Setzen
-o Dpkg::Options::=--force-confnew
und / oderUCF_FORCE_CONFFNEW=1
bedeutet, dass alle Konfigurationsdateien aus installierten Paketen auf die vorgelagerten zurückgesetzt werden. So zum Beispiel im Fallopenssh-server
, Du/etc/ssh/sshd_config
wird auf Werkseinstellungen zurückgesetzt werden. Und zBPermitRootLogin=yes
wird entfernt. Aber natürlich benutzt du das nicht, also wird es dir gut gehen! ;-)quelle