Snippets
Users and groups
Users and groups are dynamically mapped on the target systems at package install time.
prerequires += shadow-utils
script prein
getent group GROUPNAME >/dev/null || groupadd -r GROUPNAME
getent passwd USERNAME >/dev/null || \
useradd -r -g GROUPNAME -d HOMEDIR -s /sbin/nologin \
-c "Useful comment about the purpose of this account" USERNAME
end
HOMEDIR
must be created by the package that is to be installed and be owned by the user with appropriately restrictive permissions. A good location for that would be the application's data directory. Don't ever use /home/USERNAME
for system users.
Systemd
# Just search for new unit files that were just installed.
script postin
systemctl daemon-reload >/dev/null 2>&1 || :
end
# Disable the service that is to be removed and stop it if it is still running.
script preun
systemctl --no-reload disable NAME.service >/dev/null 2>&1 || :
systemctl stop NAME.service >/dev/null 2>&1 || :
end
# Just tell systemd that unitfiles have been removed.
script postun
systemctl daemon-reload >/dev/null 2>&1 || :
end
# Try to restart the service if it is running.
script postup
systemctl daemon-reload >/dev/null 2>&1 || :
systemctl try-restart NAME.service >/dev/null 2>&1 || :
end
Don't ever start a service at install time. This will break the build process and generation of images. In case you want to enable a service by default use the following line in postin
after reloading the daemon:
systemctl --no-reload enable NAME.service >/dev/null 2>&1 || :