我正在尝试为新服务器编写配置脚本,第一步是安装一系列所需的软件包,例如 MySQL、phpMyAdmin 等。但是apt-get install
,当 dpkg 尝试配置它们时,它会要求您提供一些选项,例如 MySQL 根密码、phpMyAdmin 密码、要使用的服务器等。
由于我可能会把这个脚本传递给不太可能阅读提示的同事,并且我只想开始它然后走开,我想知道如何传递一系列“默认”答案/值供其使用。这可能包括命令行上传递的用户名/密码/其他动态值。
--
我意识到脚本中包含密码是一个安全问题,但我愿意忽略它,特别是从这个问题的答案所暗示的安装包的更一般意义上来说。
答案1
使用 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
安装过程中根本没有任何提示。
答案2
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_
答案3
debconf 软件包包含debconf-show
:
debconf-show package