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

Tar*_*rka 33 scripting configuration apt

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

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

——

我意识到在脚本中使用密码是一个安全问题,但我愿意忽略它,特别是在安装包的更一般意义上,这是一个答案所暗示的。

Sha*_*den 46

使用 debconf 的配置预置。

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

root@test1:~# apt-get install mysql-server
Run Code Online (Sandbox Code Playgroud)

..并在安装过程中出现提示时设置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
Run Code Online (Sandbox Code Playgroud)

那里有一些噪音,但重要的部分是密码设置。

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

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
Run Code Online (Sandbox Code Playgroud)

在安装过程中根本没有提示。

  • 根据需要`sudo apt-get install debconf-utils`。 (11认同)

Mic*_*ton 19

export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_
Run Code Online (Sandbox Code Playgroud)