web-dev-qa-db-fra.com

Lancer une erreur si un fichier n'existe pas dans les commandes prédéfinies du programme d'installation d'Ubuntu

Je travaille sur une image d'installation Ubuntu personnalisée et je suis un peu au-dessus de ma tête.

Nous avons un fichier de départ personnalisé qui exécute cette commande:

d-i preseed/early_command string /cdrom/Snare/update_v5.sh

Dans ce fichier de script, j'ai ajouté une vérification qui génère une erreur s'il ne trouve pas de fichier sur le système existant:

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

Lorsque la vérification échoue, elle génère un message d'erreur généralement inutile et fournit l'option continuer avec le processus d'installation.

preseed-failure

Comment puis-je lui faire lancer un message d'erreur utile et bloquer les étapes d'installation supplémentaires?

3
Stephen RC

Avec des conseils utiles de @CallmeV, j'ai trouvé une solution.

Dans le preseed/early_command script, vous pouvez configurer un modèle debconf error et forcer une boucle illimitée pour empêcher toute nouvelle progression dans le programme d'installation.

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

Comme je l'ai dit, merci à CallmeV , et à ces pages:

3
Stephen RC