9

我正在尝试创建一个自动下载新服务器包的脚本。但是,像 'mysql-server' 这样的一些东西不能自动安装,因为你需要先在 ncurses 界面中配置它们。我浏览了手册页,找不到任何合适的东西。

我不在乎以后是否必须上传/编辑 conf 文件——我只需要安装适当的软件包。

除了抓取压缩包并自己构建它们之外,任何人都知道该怎么做?

UPDATE 发现对于 mysql-server 之类的东西,你可以这样做:

DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server

但是期望看起来像我需要的东西 sun-java6-jdk; 还没评价

4

5 回答 5

9

来自ossramblings.com的回答:

首先,正常安装你的包;然后,从 debconf 数据文件中提取配置答案:

sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed

然后,对于其他安装,您可以在安装包之前应用它:

sudo debconf-set-selections ./something.seed
于 2011-11-21T20:02:19.053 回答
7

任何debconf用于获取配置值的 Debian 软件包都可以在无人看管的情况下运行。诀窍是首先搜索给定软件包具有的任何配置问题debconf的预安装答案。

预安装配置答案

只需创建以下格式的文件,

# Use one line for each question
package-name question-name question-type answer
package-name question-name question-type really long \
answer here
package-name question-name question-type answer
...

并将其输入系统,如下所示:

$ debconf-set-selections my-selections-file

现在,你准备好了apt-get install,像往常一样。

一次性

由于此命令也从标准输入读取,您可以执行以下操作:

$ echo "man-db man-db/auto-update boolean true" | debconf-set-selections

寻找默认答案

你怎么知道哪些包使用了这些配置答案?好吧,如果您已经以交互方式安装了相关软件包,则可以查询本地系统以查看当前配置了哪些值。debconf-get-selections打印当前系统的所有配置答案的列表。例如

$ debconf-get-selections | grep '^man'

在我的系统上返回以下内容:

man-db  man-db/install-setuid   boolean false
man-db  man-db/auto-update      boolean true

您可能需要安装该debconf-utils软件包才能使该命令可用。

样本

# Preset values to questions which would otherwise be asked while
# installing packages.
# Use debconf-set-selections to install
openssh-server  openssh-server/permit-root-login        boolean false
man-db  man-db/install-setuid   boolean false
man-db  man-db/auto-update      boolean true

来源

于 2016-08-12T02:19:20.080 回答
6

对于通过 debconf 提出问题的软件包(这是 ncurses 显示的内容),您可以预先回答问题。对于 sun-java,可以按照http://www.davidpashley.com/blog/debian/java-license上的说明预先回答问题

于 2009-04-01T12:13:40.977 回答
0

我不确定 mysql-server 到底需要什么配置,但你可以尝试类似 expect

于 2009-03-31T18:08:22.533 回答
0

我会调查cron-apt。我自己没有尝试过,但它的包装描述听起来很有希望。

于 2009-05-22T23:20:02.370 回答