如果 Ubuntu 安装程序预置命令中不存在文件,则会抛出错误

如果 Ubuntu 安装程序预置命令中不存在文件,则会抛出错误

我正在处理一个自定义的 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

正如我所说,非常感谢卡梅维以及以下页面:

相关内容