Come posso automatizzare dpkg / apt-get?
Domanda
Sto cercando di creare uno script che scarica automaticamente i pacchetti per nuovi server. Tuttavia, alcune cose come 'mysql-server' non possono automaticamente installato causa è necessario configurarli nell'interfaccia ncurses prima. Ho guardato attraverso le pagine man e non riesco a trovare niente di appropriato.
Non mi interessa se devo caricare / modificare un file di configurazione in seguito -. Ho solo bisogno i pacchetti appropriati installati
Qualcuno sa cosa fare oltre afferrare tarball e costruire io stesso?
UPDATE scoperto che per cose come mysql-server che si può fare solo:
DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server
tuttavia aspettarsi assomiglia a qualcosa che avrò bisogno per sun-java6-jdk; non hanno ancora valutato che
Soluzione
Per i pacchetti che chiedono domande attraverso debconf (che è quello che mette il display ncurses), è possibile pre-rispondere alle domande. Per sun-java, le domande possono essere pre-risposta seguendo le istruzioni all'indirizzo http://www.davidpashley.com/blog/debian/java-license
Altri suggerimenti
Risposta da ossramblings.com :
Per prima cosa, installare il pacchetto normalmente; poi, estrarre le risposte di configurazione dal file di dati debconf:
sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed
Poi, per altri impianti, è possibile applicare prima di installare il pacchetto:
sudo debconf-set-selections ./something.seed
Ogni pacchetto Debian che usa debconf
per ottenere i valori di configurazione può essere eseguito senza sorveglianza. Il trucco è che debconf
per prima cosa cercare di pre-installato risposte a qualsiasi configurazione di questione , che un determinato pacchetto ha.
Pre-install risposte config
Basta creare un file nel formato seguente,
# 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
...
e inserirlo nel sistema in questo modo:
$ debconf-set-selections my-selections-file
Ora, si è pronti per apt-get install
, come al solito.
una tantum
Dal momento che questo comando legge anche dallo standard input, si può fare:
$ echo "man-db man-db/auto-update boolean true" | debconf-set-selections
Trovare le risposte predefinite
Come si fa a sapere quali pacchetti utilizzare queste risposte di configurazione? Beh, se avete già installato il pacchetto in questione in modo interattivo, è possibile interrogare il sistema locale per vedere quali valori sono attualmente configurate. debconf-get-selections
stampa un elenco di tutte le risposte di configurazione per il sistema attuale. Ad esempio
$ debconf-get-selections | grep '^man'
restituisce il seguente sul mio sistema:
man-db man-db/install-setuid boolean false
man-db man-db/auto-update boolean true
Potrebbe essere necessario installare il pacchetto debconf-utils
per rendere questo comando disponibile.
Esempio
# 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
Fonti
Non sono sicuro di quello che di configurazione esigenze mysql-server, ma si potrebbe provare qualcosa di simile aspettare
Vorrei guardare in cron-apt . Non ho provato io stesso, ma è descrizione del pacchetto sembra promettente.