Comment puis-je automatiser dpkg / apt-get?
Question
Je suis en train de créer un script qui télécharge automatiquement les paquets pour les nouveaux serveurs. Cependant, certaines choses comme « serveur MySQL » ne peut pas installé automatiquement parce que vous devez les configurer dans l'interface ncurses premier. Je l'ai regardé à travers les pages de manuel et ne peut pas trouver quoi que ce soit approprié.
Je ne me soucie pas si je dois télécharger / modifier un fichier de configuration plus tard -. J'ai juste besoin les paquets appropriés installés
Quelqu'un sait ce qu'il faut faire en plus saisissant archives tar et construire moi-même?
UPDATE découvert que pour des choses comme mysql-server vous pouvez juste faire:
DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server
attendez cependant ressemble à quelque chose que je vais avoir besoin de soleil java6-jdk; ont pas encore évalué
La solution
Pour les paquets qui posent des questions par debconf (qui est ce qui met l'affichage ncurses), vous pouvez pré-répondre aux questions. Pour le soleil java, les questions peuvent être pré-réponses en suivant les instructions à http://www.davidpashley.com/blog/debian/java-license
Autres conseils
Tout d'abord, installez votre package normalement; puis, extraire les réponses de configuration à partir des fichiers de données debconf:
sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed
Ensuite, pour les autres installations, vous pouvez l'appliquer avant d'installer le paquet:
sudo debconf-set-selections ./something.seed
Tout paquet Debian qui utilise debconf
pour obtenir des valeurs de configuration peut être exécuté sans surveillance. L'astuce est que debconf
recherche d'abord pré-installé réponses à toute configuration question qui a un paquet donné.
réponses de configuration préinstaller
Il suffit de créer un fichier dans le format suivant,
# 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
...
et l'introduire dans le système comme ceci:
$ debconf-set-selections my-selections-file
Maintenant, vous êtes prêt à apt-get install
, comme d'habitude.
One-off
Étant donné que cette commande lit également de stdin, vous pouvez faire:
$ echo "man-db man-db/auto-update boolean true" | debconf-set-selections
Trouver des réponses par défaut
Comment savez-vous quels paquets utiliser ces réponses de configuration? Eh bien, si vous avez déjà installé le paquet en question de manière interactive, vous pouvez interroger votre système local pour voir quelles valeurs sont actuellement configurées. debconf-get-selections
imprime une liste de toutes les réponses de configuration pour le système actuel. Par exemple
$ debconf-get-selections | grep '^man'
renvoie le message suivant sur mon système:
man-db man-db/install-setuid boolean false
man-db man-db/auto-update boolean true
Vous devrez peut-être installer le paquet debconf-utils
pour rendre cette commande disponible.
Exemple
# 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
Sources
- réponse Anthony Villes et lien pourritures bit
- debconf-set-selections ( 1)
- répondre Duplicate sur ServerFault
Je ne sais pas exactement ce que la configuration des besoins mysql-serveur, mais vous pouvez essayer quelque chose comme attendre
Je regarderais dans -apt Cron. Je ne l'ai pas essayé moi-même, mais il est la description du paquet semble prometteur.