我正在设置一个bash脚本来自动构建LAMP环境。
我在安装mysql,phpmyadmin等之前使用debconf-set-selections
来设置选项......
它主要起作用。但问题是我必须为mysql设置一个空密码,并且在安装过程中它仍然要求输入密码,即使是之前键入的行:
echo "mysql-server-5.5 mysql-server/root_password password" | debconf-set-selections
echo "mysql-server-5.5 mysql-server/root_password_again password" | debconf-set-selections
答案 0 :(得分:10)
目前, 可以做到这一点,但这有点棘手。
您必须明确设置引号以标记空密码,如下所示:
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password \"''\""
刚刚在Ubuntu 15.10上测试过,就像魅力一样。
答案 1 :(得分:8)
编辑: This answer below建议可能适用于Ubuntu 15.10的解决方案,但在Ubuntu 14.04上我失败了。
目前无法使用mysql-server
在debconf-set-selections
的安装过程中直接为config
设置空密码,但仍有办法绕过此问题并强行输入空密码。
将密码预配置为空字符串的直接方法失败,原因是:
一旦检测到密码设置为空字符串,从数据库中读取密码的seen
脚本会立即将其false
标志设置为db_input high mysql-server/root_password || true
db_go
db_get mysql-server/root_password
# if password isn't empty we ask for password verification
if [ -z "$RET" ]; then
db_fset mysql-server/root_password seen false
db_fset mysql-server/root_password_again seen false
break
fi
:
config
config
脚本在安装过程中执行多次。
因此,将密码预先配置为空字符串只会影响seen
脚本的首次执行,因为true
标志在该时间点设置为seen
,而进一步同一脚本的调用会向用户显示问题,因为false
标志的值在执行时已设置为debconf
。
但是,可以通过其他方式阻止debconf
完全提问,但这些方法适用于所有问题,而不仅仅是与密码相关的问题。例如,以下任何一项都会将密码留空:
将noninteractive
的前端设为DEBIAN_FRONTEND=noninteractive apt-get install [-y] [-q] mysql-server
:
debconf
将critical
的优先级设为DEBIAN_PRIORITY=critical apt-get install [-y] [-q] mysql-server
:
{{1}}
这可能更好,因为它允许显示关键信息。
答案 2 :(得分:3)
我认为您的问题是在“密码”之前,您需要像这样添加“字符串”这个词:
echo "mysql-server-5.5 mysql-server/root_password string password" | debconf-set-selections
顺便说一下,这是做同样的事情,但我觉得很酷:
debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password string password"
答案 3 :(得分:0)
尝试实际添加空参数
echo mysql-server-5.5 mysql-server/root_password password "" | debconf-set-selections
echo mysql-server-5.5 mysql-server/root_password_again password "" | debconf-set-selections