目前我正在尝试构建一个或多或少动态的预置。这意味着我正在创建自定义模板/问题,并根据答案我想设置特定的“di”选项。我的环境是 ubuntu/debian,使用 debian-installer。
这些是使用以下命令执行的:
d-i preseed/early_command string wget -qO preseed_early_command.sh http://myurl/preseed/server/bionic/preseed_early_command.sh && sh preseed_early_command.sh
根据语言选择,我尝试使用设置特定选项debconf-set
,看起来它们已被识别,但early_command
完成后我仍然收到语言对话框(尽管所有设置值都按照提出的问题正确设置)
if [ "$(debconf-get language-select/select)" = "German" ]; then
debconf-set debian-installer/language "de"
debconf-set debian-installer/country "DE"
debconf-set debian-installer/locale "de_DE.UTF-8"
debconf-set console-setup/ask_detect false
debconf-set keyboard-configuration/layoutcode "de"
debconf-set keyboard-configuration/variantcode "nodeadkeys"
fi
尽管已设置,如何防止安装人员再次询问我问题?是否有可能以我想要的方式操纵预置?
根据机器类型选择(即桌面/无头),我想设置taskel/pkgsel选项。但无论我是尝试直接运行它们还是使用它们,它们总是会失败并出现错误debconf-set
if [ "$(debconf-get machine-type/select)" = "Ubuntu Desktop" ]; then
debconf-set tasksel/first multiselect ubuntu-desktop
debconf-set pkgsel/include openssh-server build-essential nano vim hardinfo htop remmina bash-completion dkms dialog
elif [ "$(debconf-get machine-type/select)" = "Ubuntu Headless" ]; then
debconf-set tasksel/first multiselect standard
debconf-set pkgsel/include "openssh-server nano vim htop bash-completion ntp"
fi
如何执行/评估“pkgsel/tasksel”选项? Tasksel 在现阶段似乎不可用,因为 busybox 会抛出异常not found
。
答案1
此答案仅试图涵盖所提出的两个问题中的第一个问题。
debian-installer 中debconf-set
有一个简短的 shell 脚本,它只是源代码配置模块(3)并打电话db_set $1 $2
。更有用的命令是debconf-set-selections
which,可以理解为debconf-设置-选择(1),采用与预置文件格式相同的文件作为其参数。据说它也应该接受标准输入上的数据,但我没能成功地让它在 debian-installer 环境中工作。
例如:
VALUES=`mktemp`
cat > "${VALUES}" << END_OF_DEBCONF
d-i time/zone string Antarctica/Troll
END_OF_DEBCONF
debconf-get-selections "${VALUES}"
还。仅仅preseed/run
使用脚本可能比使用preseed/early_command
.