我正在处理一个自定义的 Ubuntu 安装程序映像,但有点力不从心。
我们有一个自定义种子文件正在运行以下命令:
d-i preseed/early_command string /cdrom/Snare/update_v5.sh
在该脚本文件中,我添加了一个检查,如果在现有系统上找不到文件,则会引发错误:
if [ ! -f /target/path/to/file.gz ]; then
logger custom-partition error "File not found, upgrade aborted!"
logger custom-partition error "Please run the Upgrade Preparation script first."
exit 1
fi
当检查失败时,它会抛出一个几乎无用的错误消息,并提供选项继续继续安装过程。
我怎样才能让它抛出有用的错误消息并阻止进一步的安装步骤?
答案1
在@CallmeV 的帮助指点下,我找到了解决方案。
在preseed/early_command
脚本中,您可以设置 debconferror
模板并强制无限循环以阻止安装程序进一步进展。
if [ ! -f /target/path/to/file.gz ]; then
. /usr/share/debconf/confmodule
cat > /tmp/Notification.template <<'!EOF!'
Template: snare-upgrade/notification
Type: error
Description: ERROR - Unable to upgrade!
Unable to upgrade your existing system... blah blah blah...
!EOF!
debconf-loadtemplate snare-upgrade /tmp/Notification.template
while [ 1 ]; do
db_input critical snare-upgrade/notification || true
db_go
db_get snare-upgrade/notification
done
fi
正如我所说,非常感谢卡梅维以及以下页面: