【问题标题】:How can I automate dpkg/apt-get?如何自动化 dpkg/apt-get?
【发布时间】:2009-03-31 17:53:21
【问题描述】:

我正在尝试创建一个自动为新服务器下载软件包的脚本。但是,像 'mysql-server' 这样的一些东西不能自动安装,因为你需要先在 ncurses 界面中配置它们。我浏览了手册页,找不到任何合适的内容。

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

除了获取压缩包并自己构建它们之外,有谁知道该怎么做?

更新 发现对于 mysql-server 之类的东西,你可以这样做:

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

但是期望看起来像我需要 sun-java6-jdk 的东西;还没评价呢

【问题讨论】:

  • 很高兴知道也可以制作 Dockerfile!

标签: ubuntu debian apt


【解决方案1】:

ossramblings.com的回答:

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

sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed

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

sudo debconf-set-selections ./something.seed

【讨论】:

  • 你帮了我很多。谢谢!
【解决方案2】:

任何使用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

现在,您可以像往常一样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

来源

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我不确定 mysql-server 究竟需要什么配置,但您可以尝试类似expect

      【讨论】:

      • 感谢您的建议——我记得几年前遇到过,完全无视它——看起来这是这里的热门门票
      【解决方案5】:

      我会调查cron-apt。我自己没有尝试过,但它的包装描述听起来很有希望。

      【讨论】:

        猜你喜欢
        • 2021-07-05
        • 1970-01-01
        • 2018-03-20
        • 2014-06-29
        • 1970-01-01
        • 2014-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多