如何使用 debcondf 用 debconf-set-selections 显示结果?

Jos*_*osh 9 bash scripts debconf

我想共同了解如何使用 debconf-show 的结果和 debconf 设置选择来通过命令行或在 shell 脚本中预配置 deb 包

例如

如果我使用

sudo debconf-get-selections | grep java7 > result;cat result
Run Code Online (Sandbox Code Playgroud)

我得到以下内容

oracle-java7-installer  shared/present-oracle-license-v1-1  note    
oracle-java7-installer  oracle-java7-installer/local    string  
oracle-java7-installer  shared/accepted-oracle-license-v1-1 boolean true
oracle-java7-installer  shared/error-oracle-license-v1-1    error   
oracle-java7-installer  oracle-java7-installer/not_exist    error
Run Code Online (Sandbox Code Playgroud)

正确的 debconf 设置选择行如何配置安装过程中出现的两个对话框?

一般来说,debconf 集选择的正确语法如何,我假设不仅有 true 或 false 以及 yes 或 no 等布尔值

我想还有更多其他示例,如果 lightdm 和 gdm 通过 bash 脚本安装,则如何选择默认桌面管理器。

是否有一种通用的经过验证的方法来确定 debconf 包的正确值,并编写适当的 bash 脚本来安装 webupt8 java 包之类的东西,并预先选择用户通常会要求的值?

NGR*_*des 2

您需要使用预播种。该debconf-set-selections命令在安装软件包之前预设 debconf 询问的答案。

例如

sudo debconf-set-selections <<< "shared/accepted-oracle-license-v1-1 boolean true"
Run Code Online (Sandbox Code Playgroud)

然后安装该包。

sudo apt-get install -y oracle-java7-installer
Run Code Online (Sandbox Code Playgroud)


小智 0

Debconf 仅接受一组有限的可能类型值,例如 、booleanstringnoteselect等,并且对此非常敏感。

在您的问题中,我假设您想要自动化 Java 许可证 debconf 值,因此您可以运行如下所示的内容:

echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 boolean true" | sudo debconf-set-selections
Run Code Online (Sandbox Code Playgroud)

如果您需要添加字符串值,请运行如下命令:

echo "oracle-java7-installer oracle-java7-installer/local string java" | sudo debconf-set-selections
Run Code Online (Sandbox Code Playgroud)

如果您需要一个选择值,您可以运行:

echo "oracle-java7-installer oracle-java7-installer/legacy select true" | sudo debconf-set-selections
Run Code Online (Sandbox Code Playgroud)

注意:运行这些命令后,请确保使用类似的命令设置正确的值sudo debconf-show oracle-java7-installer,然后,当然,在真实的服务器安装上进行测试。

提示:您可能只是> result;cat result使用| tee result它,它的工作方式非常相似,但不会等到第一个命令完成才向您显示内容