安装包时提示参数

安装包时提示参数

假设我需要使用安装一个包dpkg -i,它会提示用户输入一些值,例如用户名和密码。

我可以轻松地从终端完成此操作并继续安装。

但是按照这个计划,我无法自动执行安装,例如,如果我想编写一个脚本来安装以交互方式获取参数的包。

所以我想要一个交互式的 dpkg 安装计划(提示输入用户名和密码),但仍然可以从脚本调用,以便安装过程自动化。

我该怎么做?还有其他选择吗?

答案1

您可以使用 debconf-utils 包中的工具创建预配置文件。您可以使用以下命令手动创建预配置文件:

<owner> <question> <type> <value> 

或者例如:

my-package username string Bob
my-package password string I$aN1ceGuy

更简单的方法是将其安装在您的机器上并运行:

debconf-get-selections | grep my-package

使用输出创建文件。

获得文件后,使用:

debconf-set-selections <filename>.  
dpkg -i my-package

文件名中列出的选择将被默认使用,并且软件包将静默安装。

http://www.debian.org/releases/stable/i386/apbs03.html.en

答案2

对于这样的事情你可以写一个expect脚本。处理起来并不困难。

首先你必须安装解释器:

apt-get install expect

然后你可以写类似这样的内容:

#!/usr/bin/expect -f
set timeout 30
set password "pass"
set username "user"

#run the command
spawn dpkg -i package.deb

# Look for username prompt
expect "*?sername:*" #<--- this statement is important it wait's for a prompt "username:"
send "$username\r"

# Look for passwod prompt
expect "*?assword:*" #<--- the same with the "password:" prompt
send "$password\r"

#dpkg -i continues

当然,该脚本必须是可执行的。预计非常适合通过脚本(ssh,ftp,...)控制交互式终端程序

相关内容