如何自动化dpkg/apt-get?

eyb*_*erg 8 ubuntu debian apt

我正在尝试创建一个自动下载新服务器包的脚本.但是,某些诸如"mysql-server"之类的东西无法自动安装,因为您需要先在ncurses接口中进行配置.我查看了手册页,找不到合适的东西.

我不在乎以后是否必须上传/编辑conf文件 - 我只需要安装相应的软件包.

任何人都知道该怎么做除了抓住tarball并自己构建它们?

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

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

然而,期望看起来像sun-java6-jdk需要的东西; 尚未评估它

Kev*_*vin 7

ossramblings.com的回答:

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

sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed
Run Code Online (Sandbox Code Playgroud)

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

sudo debconf-set-selections ./something.seed
Run Code Online (Sandbox Code Playgroud)


jpa*_*ugh 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
...
Run Code Online (Sandbox Code Playgroud)

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

$ debconf-set-selections my-selections-file
Run Code Online (Sandbox Code Playgroud)

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

一次性

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

$ echo "man-db man-db/auto-update boolean true" | debconf-set-selections
Run Code Online (Sandbox Code Playgroud)

寻找默认答案

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

$ debconf-get-selections | grep '^man'
Run Code Online (Sandbox Code Playgroud)

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

man-db  man-db/install-setuid   boolean false
man-db  man-db/auto-update      boolean true
Run Code Online (Sandbox Code Playgroud)

您可能需要安装该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
Run Code Online (Sandbox Code Playgroud)

来源


Ant*_*wns 6

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