Passer des réponses par défaut aux questions d'installation du package apt-get?

27

J'essaie d'écrire un script de configuration pour de nouveaux serveurs, et l'une des premières étapes consiste à installer une série de packages requis, tels que MySQL, phpMyAdmin, etc. en utilisant apt-get installCependant, lorsque dpkg essaie de les configurer, il vous demande un quelques options, telles que le mot de passe root MySQL, les mots de passe phpMyAdmin, le serveur à utiliser, etc.

Comme je vais probablement transmettre ce script à des collègues qui ne liront probablement pas les invites, et mon désir de simplement le démarrer et de m'en aller, j'aimerais savoir comment transmettre une série de réponses "par défaut" / valeurs à utiliser. Cela peut inclure des noms d'utilisateur / mots de passe / autres valeurs dynamiques transmises sur la ligne de commande.

-

Je me rends compte que la présence de mots de passe dans un script est un problème de sécurité, mais je suis prêt à l'ignorer, en particulier dans le sens plus général de l'installation de packages qu'une réponse à cela impliquerait.

Tarka
la source

Réponses:

44

Utilisez la préconfiguration de configuration de debconf.

Effectuez une installation de test pour obtenir les valeurs souhaitées:

root@test1:~# apt-get install mysql-server

..et définissez le mot de passe root lorsque vous y êtes invité lors de l'installation.

Ensuite, vous pouvez vérifier à quoi ressemblent les paramètres debconf pour ce que vous venez d'installer (vous devrez peut-être installer debconf-utils):

root@test1:~# debconf-get-selections | grep mysql-server
mysql-server-5.5        mysql-server/root_password_again        password
mysql-server-5.5        mysql-server/root_password      password
mysql-server-5.5        mysql-server/error_setting_password     error
mysql-server-5.5        mysql-server-5.5/postrm_remove_databases        boolean false
mysql-server-5.5        mysql-server-5.5/start_on_boot  boolean true
mysql-server-5.5        mysql-server-5.5/nis_warning    note
mysql-server-5.5        mysql-server-5.5/really_downgrade       boolean false
mysql-server-5.5        mysql-server/password_mismatch  error
mysql-server-5.5        mysql-server/no_upgrade_when_using_ndb  error

Il y a du bruit, mais la partie importante est les paramètres du mot de passe.

Ensuite, pour une nouvelle installation, vous pouvez éviter complètement les invites en définissant le mot de passe au préalable:

root@test2:~# echo "mysql-server-5.5 mysql-server/root_password_again password Som3Passw0rd" | debconf-set-selections
root@test2:~# echo "mysql-server-5.5 mysql-server/root_password password Som3Passw0rd" | debconf-set-selections
root@test2:~# apt-get install mysql-server

Aucune invite du tout pendant cette installation.

Shane Madden
la source
10
sudo apt-get install debconf-utilsle cas échéant.
Andrew
Cela ressemble exactement à ce que je cherchais, merci! Je vais l'essayer sous peu.
Tarka
Mis à part une erreur connue avec phpMyAdmin n'acceptant pas un mot de passe racine MySQL pré-amorcé, cela fonctionne parfaitement!
Tarka
1
Je me demande simplement, existe-t-il un moyen d'obtenir des paramètres Debconf possibles à partir du système de paquets sans installer les paquets?
stefan.at.wpf
17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_
Michael Hampton
la source
Avez-vous une référence pour ce qui se lit $ DEBIAN_FRONTEND?
Andrew
Cela fait partie de Debian depuis si longtemps que je pense que seul Ian peut vraiment vous dire quand il a été ajouté.
Michael Hampton
1
@Andrew Il est lu par debconf , c'est ce qui traite réellement les questions.
mgorven
@mgorven Ahh, je ne suis pas allé beaucoup plus loin que dpkg auparavant.
Andrew
AFAIK, cette solution vous permet uniquement d'ignorer l'invite et d'accepter la valeur par défaut pour toutes les réponses. Si vous souhaitez définir une réponse non par défaut, vous devez utiliser une autre solution, telle que la debconf-set-selectionsméthode.
MestreLion