Wie kann ich dpkg / apt-get automatisieren?
Frage
Ich versuche, ein Skript zu erstellen, die automatisch Pakete für neue Server herunterlädt. Allerdings können einige Dinge wie ‚mysql-server‘ nicht automatisch installiert, weil du sie in der ncurses-Schnittstelle zuerst konfigurieren. Ich habe den Mann Seiten durchgesehen und kann nichts für angemessen.
ist mir egal, wenn ich hochladen müssen / später eine conf-Datei bearbeiten. - Ich brauche nur die entsprechenden Pakete installiert
Wer weiß, was außer zu tun tarballs greifen und sie selbst bauen?
UPDATE fand heraus, dass für Dinge wie mysql-Server können Sie einfach tun:
DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server
jedoch erwarten, sieht aus wie etwas, das ich für sonnen java6-jdk benötigen; habe es noch nicht ausgewertet
Lösung
Für Pakete, die Fragen über Debconf fragen (was den ncurses-Display aufstellt), können Sie die Fragen vorab beantworten. Für Sonnen-java können die Fragen nach den Anweisungen unter http://www.davidpashley.com/blog/debian/java-license
Andere Tipps
Antwort von ossramblings.com :
Zuerst installieren Sie Ihr Paket normal; dann die Konfigurations Antworten der Debconf-Daten-Dateien extrahieren:
sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed
Dann wird für andere Einrichtungen, können Sie es anwenden, bevor das Paket installiert haben:
sudo debconf-set-selections ./something.seed
Jedes Debian-Paket, das debconf
verwendet Konfigurationswerte erhalten kann unbeaufsichtigt ausgeführt werden. Der Trick besteht darin, dass debconf
wird zunächst für die Suche vorinstalliert Antworten zu jeder Config Frage , die ein bestimmtes Paket hat.
Pre-install Config Antworten
Erstellen Sie einfach eine Datei in folgendem Format,
# Use one line for each question
package-name question-name question-type answer
package-name question-name question-type really long \
answer here
package-name question-name question-type answer
...
und ihn in das System wie folgt:
$ debconf-set-selections my-selections-file
Nun sind Sie bereit zu apt-get install
, wie üblich.
One-off
Da dieser Befehl auch von stdin liest, können Sie tun:
$ echo "man-db man-db/auto-update boolean true" | debconf-set-selections
Die Suche nach Standardantworten
Wie wissen Sie, welche Pakete diese Konfigurations Antworten verwenden? Nun, wenn Sie bereits das Paket in Frage interaktiv installiert haben, können Sie Ihr lokales System abfragen, um zu sehen, welche Werte sind zur Zeit konfiguriert. debconf-get-selections
druckt eine Liste aller Konfigurations Antworten für das aktuelle System. Zum Beispiel
$ debconf-get-selections | grep '^man'
gibt die folgende auf meinem System:
man-db man-db/install-setuid boolean false
man-db man-db/auto-update boolean true
Sie müssen möglicherweise das debconf-utils
Paket installieren Sie diesen Befehl zur Verfügung zu stellen.
Beispiel
# Preset values to questions which would otherwise be asked while
# installing packages.
# Use debconf-set-selections to install
openssh-server openssh-server/permit-root-login boolean false
man-db man-db/install-setuid boolean false
man-db man-db/auto-update boolean true
Quellen
- Anthony Towns' Antwort & Bit-Fäulnis Link
- Man debconf-set-Auswahlen ( 1)
- Doppelte beantworten auf ServerFault
Ich bin nicht genau sicher, was Konfiguration mysql-Server braucht, aber man könnte versuchen, so etwas wie erwarten
Ich würde schauen Sie in cron-apt . Ich habe es selbst nicht ausprobiert, aber es ist Paketbeschreibung klingt vielversprechend.