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

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

我正在尝试为新服务器编写配置脚本,第一步是安装一系列所需的软件包,例如 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

相关内容