Ubuntu 如何使dpkg/apt获取自动化?

Ubuntu 如何使dpkg/apt获取自动化?,ubuntu,debian,apt,Ubuntu,Debian,Apt,我正在尝试创建一个脚本,自动下载新服务器的软件包。但是,有些东西如“mysql服务器”无法自动安装,因为您需要先在ncurses界面中配置它们。我看了手册页,找不到任何合适的 我不在乎以后是否需要上传/编辑conf文件——我只需要安装适当的软件包 有人知道除了抓起柏油球自己造之外该怎么做吗 更新 发现对于mysql服务器之类的东西,您只需执行以下操作: DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server DEBIAN

我正在尝试创建一个脚本,自动下载新服务器的软件包。但是,有些东西如“mysql服务器”无法自动安装,因为您需要先在ncurses界面中配置它们。我看了手册页,找不到任何合适的

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

有人知道除了抓起柏油球自己造之外该怎么做吗

更新 发现对于mysql服务器之类的东西,您只需执行以下操作:

DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server DEBIAN_FRONTEND='noninteractive'apt get安装-yq mysql服务器
然而,expect看起来像是sun-java6-jdk需要的东西;尚未对其进行评估

我不确定mysql服务器需要什么样的配置,但您可以尝试类似的方法

对于通过debconf(这是显示ncurses的内容)提问的包,您可以预先回答问题。对于sun java,可以按照我将研究的

中的说明预先回答这些问题。我自己也没有试过,但它的包装说明听起来很有希望。

回答:

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

sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed
然后,对于其他安装,您可以在安装软件包之前应用它:

sudo debconf-set-selections ./something.seed

任何使用
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
现在,您可以像往常一样开始安装了

一次性 由于此命令也从stdin读取,因此您可以执行以下操作:

$ 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
包才能使用此命令

样品 来源
  • &
  • 论服务器故障

谢谢你的建议——我记得几年前遇到过这个建议,但我完全没有理会它——看起来这是个热门话题,尽管你帮了我很多。谢谢知道制作Dockerfiles也很棒!
# 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