使用 apt-get 在 ubuntu 上自动安装 proftpd-basic

使用 apt-get 在 ubuntu 上自动安装 proftpd-basic

我正在尝试构建一个 shell 脚本来自动将几个软件包安装到 Ubuntu 10.04 服务器上,但在使用 proftpd-basic 时遇到了问题。

我正在使用命令行

apt-get -qy install proftpd-basic >/tmp/install.log

对于大多数软件包来说,这种方法都可以很好地工作,但是 proftpd-basic 似乎需要一些交互(它会询问是否执行 inetd 或独立安装)。

我是否可以以某种方式在命令行上预先选择这个选项,因为我不想让用户被这个问题困扰? - 如果需要的话,我想选择“独立”选项。

编辑:

该过程的交互部分不仅需要简单的 y/n 答案,还需要我使用箭头键导航到我想要的选项,然后按 Enter 进行选择。这可能对这个问题的解决方案有一定影响。

答案1

您可以“预先输入”答案,以便 debconf 看到您已经回答了该问题,并且不会再问一遍。

您需要debconf-utils软件包中的一些工具:

sudo apt-get install debconf-utils

安装你的程序并手动回答一次问题。然后,你可以询问 debconf 它在数据库中存储了什么:

debconf-get-selections | grep proftpd-basic

可以输入该信息debconf-set-selections(通过管道或从文件读取)。

华纳的答案更加跨平台(debconf 是 Debian 及其衍生产品独有的技术),但如果问题发生变化,则并不总是适用于不同版本;或者,如果您遇到了一些 debconf 问题,而这些问题只有在您安装了其他软件包时才会被询问。

答案2

对于此类问题,有多种不同的解决方案。我更喜欢使用 shell 脚本,其他人可能更喜欢其他方法。

对于需要输入且没有标志来指定答案的事物的交互,您可以重定向输入。我会读apt-get 手册页在采用此方法之前,请先考虑一下,因为它可能对您要指定的内容具有本机支持。例如:

apt-get -qy install proftpd-basic <<**
RESPONSES GO HERE
**

你也可以使用类似预计. 有些客户端并不总是能够不经过额外努力就能处理输入重定向。

对于日志记录,您可以使用球座并在运行主脚本时重定向 STDERR 和 STDOUT。例如:

bash -x script.sh 2>&1 | tee script.log

set -x我也经常喜欢用 bash 运行。对于构建脚本,我更喜欢冗长的内容而不是更清晰的输出。

相关内容