我正在尝试创建一个自动下载新服务器包的脚本。但是,有些东西(例如“mysql-server”)无法自动安装,因为您需要先在 ncurses 界面中配置它们。我浏览了手册页,找不到任何合适的内容。
我不在乎稍后是否需要上传/编辑conf文件——我只需要安装适当的软件包。
除了抓取 tarball 并自己构建之外,有人知道还能做什么吗?
更新 发现对于像 mysql-server 这样的东西你可以这样做:
DEBIAN_FRONTEND='非交互式' apt-get install -yq mysql-server
然而,expect 看起来像是我需要 sun-java6-jdk 的东西;还没评价过
来自ossramblings.com的回答:
首先,正常安装你的包;然后,从 debconf 数据文件中提取配置答案:
sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed
然后,对于其他安装,您可以在安装包之前应用它:
sudo debconf-set-selections ./something.seed
任何使用
debconf
获取配置值的 Debian 软件包都可以在无人值守的情况下运行。诀窍是 debconf
将首先搜索给定包具有的任何配置 question 的预安装 answers。
只需创建以下格式的文件即可,
# 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
cron-apt。我自己还没有尝试过,但它的包装描述听起来很有希望。
debconf-get-selections
似乎无法处理
note
。为了无法确认它们,请从
apt
或
dpkg
开始,然后使用
DEBIAN_FRONTEND=noninteractive
。例如
sudo DEBIAN_FRONTEND=noninteractive apt install foobar