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