将默认答案传递给apt-get软件包安装问题?


27

我正在尝试为新服务器编写配置脚本,第一步是安装一系列必需的软件包,例如MySQL,phpMyAdmin等。apt-get install但是,当dpkg尝试配置它们时,它会要求您提供很少的选项,例如MySQL根密码,phpMyAdmin密码,要使用的服务器等。

由于我很可能会将这个脚本传递给不太可能阅读提示的同事,并且我希望直接启动它然后走开,所以我想知道如何传递一系列“默认”答案/要使用的值。这可能包括在命令行上传递的用户名/密码/其他动态值。

-

我意识到在脚本中包含密码是一个安全问题,但是我愿意忽略它,尤其是在更普遍的意义上,安装软件包可能会对此给出答案。

Answers:


44

使用debconf的配置预置。

执行测试安装以获取所需的值:

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

..并在安装过程中提示时设置root密码。

然后,您可以检查刚刚安装的内容的debconf设置是什么样(您可能需要安装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

那里有些杂音,但重要的是密码设置。

然后,对于全新安装,您可以通过预先设置密码来完全避免提示:

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

在安装过程中完全没有提示。


10
sudo apt-get install debconf-utils有必要的。
安德鲁(Andrew)

看起来就像我要找的东西,谢谢!我会尽快尝试。
塔卡2012年

除了一个已知的phpMyAdmin错误,它不接受预先提供的MySQL根密码,这完美地起作用了!
塔卡2012年

1
只是想知道,是否有一种方法可以在不安装软件包的情况下从软件包系统获取可能的debconf设置?
stefan.at.wpf 2012年

17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_

您在阅读$ DEBIAN_FRONTEND时有参考书吗?
安德鲁(Andrew)

长期以来,这一直是Debian的一部分,我认为只有Ian才能真正告诉您何时添加了它。
迈克尔·汉普顿

1
@Andrew由debconf阅读,这实际上是处理问题的方法。
mgorven

@mgorven啊,我之前没有比dpkg更深入。
安德鲁

AFAIK,此解决方案仅允许您跳过提示并接受所有答案的默认值。如果要设置非默认答案,则必须使用其他解决方案,例如debconf-set-selections方法。
MestreLion

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.