I've been given a partially-complete RPM spec for a service we're writing. It gets as far as making the required directories, copying files, setting permissions, etc., but it doesn't make the required system account that the service will run under. I was told that it's best for the RPM to take care of this, so I've added
Requires(pre): /usr/sbin/useradd %pre useradd -r -d /path/to/program -s /bin/false myservice
This succeeds in making the user account (and associated group), so later on when it tries to set ownership / permissions on the service's files, that succeeds as well.
My current problem is, a) if the user account already exists, the RPM install fails because
useradd fails (because the user already exists); and b) I don't know how to have
rpm -e myservice also remove the associated user and group.