我正在尝试创建一个自动下载新服务器包的脚本.但是,某些诸如"mysql-server"之类的东西无法自动安装,因为您需要先在ncurses接口中进行配置.我查看了手册页,找不到合适的东西.
我不在乎以后是否必须上传/编辑conf文件 - 我只需要安装相应的软件包.
任何人都知道该怎么做除了抓住tarball并自己构建它们?
UPDATE 发现,对于像mysql-server这样的东西,你可以这样做:
DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server
然而,期望看起来像sun-java6-jdk需要的东西; 尚未评估它
首先,正常安装包裹; 然后,从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)
任何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)
对于通过 debconf 提问的包(这就是 ncurses 显示的内容),您可以预先回答问题。对于 sun-java,可以按照http://www.davidpashley.com/blog/debian/java-license 上的说明预先回答这些问题
| 归档时间: |
|
| 查看次数: |
5152 次 |
| 最近记录: |