ubuntu安装软件自动交互

在ubuntu下安装软件过程中可能会出现需要你输入密码或者其他的一些交互类的操作,这样在脚本安装的时候就可能出现阻断,这个在ubuntu里面已经考虑到了这个情况,以前我在安装这个的时候,通过的是脚本传递参数的方式,这里介绍的是原生的控制方式,这个方式更好

以安装mariadb-server-5.5为例

1、查询需要应答的问题

首先通过命令查询这个软件需要问答什么问题

1
2
3
4
5
6
7
8
9
10
root@mytest:/var/cache/apt/archives# debconf-show mariadb-server-5.5 
* mysql-server/root_password: (password omitted)
* mysql-server/root_password_again: (password omitted)
mysql-server/password_mismatch:
mysql-server/error_setting_password:
* mariadb-server/oneway_migration: true
mysql-server-5.5/nis_warning:
mysql-server-5.5/postrm_remove_databases: false
mariadb-server-5.5/really_downgrade: false
mysql-server/no_upgrade_when_using_ndb:

这里可以看到需要处理的是密码的问题

2、执行命令传递参数进去

1
2
debconf-set-selections <<< 'mariadb-server-5.5 mysql-server/root_password password 123456'
debconf-set-selections <<< 'mariadb-server-5.5 mysql-server/root_password_again password 123456'

这个地方实际是把这个值记录到了这个地方,如果要修改可以覆盖或者删除即可

1
2
3
4
5
6
7
8
9
10
11
12
root@mytest:/var/cache/apt/archives# cat /var/cache/debconf/passwords.dat
Name: mysql-server/root_password
Template: mysql-server/root_password
Value: 123456
Owners: mariadb-server-5.5
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: 123456
Owners: mariadb-server-5.5
Flags: seen

然后执行安装的操作:
修改环境变量(这一步不做也没看到有问题)

1
export DEBIAN_FRONTEND=noninteractive

3、安装相应的包

1
dpkg -i mariadb-server-5.5_5.5.46-1ubuntu0.14.04.2_amd64.deb

以上即为ubuntu下的deb包的自动应答的处理