Unicon documentation migration is in progress. You might find some broken links or experience minor issues in the documentation. We are working on resolving these issues.

X

Troubleshooting

A log of the image update is written to /setup/eluxman/*.log.

Scripts executed before/during/after installation

The .preInst, .postInst, .preUninst and .postUninst hook scripts are a bit special and need extra care to work properly. The most important things first:

  • you might not see (all) output from your scripts in the eluxman.log, so please take extra care to verify the results and don’t rely on “I don’t see any errors so it works”

  • currently you can expect any shell options (e.g. set -o errexit ) to propagate to all other scripts executed, so don’t use them or unset anything you set on exit

    • it’s harder to properly use set -o errexit  : you need to use set -o errexit,errtrace  and can then use a trap to remove those flags on quit

    • (the propagation of all shell options only happens with the terminal.ini parameter Development=true, but you can’t rely on that not being set)

  • depending on when in the overall install process your script is executed, don’t expect the system to be fully functional: e.g. a script for minsystem cannot expect any applications or libraries from any other FPM to be present

Determining final installation state

If you want to perform certain actions only if a package gets uninstalled and not reinstalled you can check the first argument $1 in any of the post/pre Inst/Uninst scripts: It contains the number of packages that will be left on the system when the action completes, so for example if a package is uninstalled $1 will be 0 in the preUninst and  postUninst scripts. If the package is up- or downgraded it will be first uninstalled and then reinstalled, so $1 should be != 0 in all scripts. Since there can be cases where $1 is 2, you should always check unequality to 0 and not equality to 1.

Special #include

There is a special feature to include scripts in your scripts

#include <path/to/somescript>

and epkg will replace the line with the script that is specified there. This works like the C Preprocessor.

This feature works only in .preInst, .postInst, .preUninst and .postUninst hook scripts, but is not usable for .preCommands and .postCommands hook scripts.

Troubleshooting