[Linux-HA] heartbeat-2.1.3 spec file attempts to re-add hacluster
UID under CentOS 5
Brian Reichert
reichert at numachi.com
Thu Apr 3 13:42:43 MDT 2008
I've been having difficulties getting a heartbeat 2.1.3 RPM to
install under CentOS 5.1. This issue surrounds the %pre logic of
managing the creation of the haclient UID.
# grep hacluster /etc/passwd
# rpm -i /var/tmp/heartbeat-2.1.3-3.el5.centos.i386.rpm
warning: /var/tmp/heartbeat-2.1.3-3.el5.centos.i386.rpm: Header V3 DSA
signature: NOKEY, key ID e8562897
useradd: user hacluster exists
error: %pre(heartbeat-2.1.3-3.el5.centos.i386) scriptlet failed, exit
status 9
error: install: %pre scriptlet failed (2), skipping
heartbeat-2.1.3-3.el5.centos
Under CentOS 5.1, that scriptlet snippet looks like this:
if
getent passwd hacluster >/dev/null
then
: OK user hacluster already present
else
USEROPT="-g haclient -u 498 -d /var/lib/heartbeat/cores/hacluster"
if
/usr/sbin/useradd $USEROPT hacluster 2>/dev/null \
|| /usr/sbin/useradd -M $USEROPT hacluster 2>/dev/null
# -M to suppress creation of home directory on Red Hat
then
: OK we were able to add user hacluster
else
/usr/sbin/useradd hacluster
fi
fi
The problem I see is that the first command does create the UID,
but exits with a non-zero status:
# userdel hacluster
# /usr/sbin/useradd -g haclient -u 498 -d /var/lib/heartbeat/cores/hacluster
hacluster
useradd: cannot create directory /var/lib/heartbeat/cores/hacluster
# echo $?
12
# grep hacluster /etc/passwd
hacluster:x:498:496::/var/lib/heartbeat/cores/hacluster:/bin/bash
The rest of the OR clause continues:
# /usr/sbin/useradd -M -g haclient -u 498 -d /var/lib/heartbeat/cores/hacluster hacluster
useradd: user hacluster exists
9
Because they both fail, the 'else' clause is run:
# /usr/sbin/useradd hacluster
useradd: user hacluster exists
# echo $?
9
The home directory doesn't exist until the payload is delivered by
the RPM.
This is an extention of this bug:
http://developerbugs.linux-foundation.org/show_bug.cgi?id=960
My proposal is to _not_ supply '-d /var/lib/heartbeat/cores/hacluster'
clause in the %pre section, and to then use a 'usermod' command in
the %post section:
# usermod -d /var/lib/heartbeat/cores/hacluster hacluster
The first 'useradd' failure mode also exists in RHEL4. I expect
this has been breaking for a while...
--
Brian Reichert <reichert at numachi.com>
55 Crystal Ave. #286 Daytime number: (603) 434-6842
Derry NH 03038-1725 USA BSD admin/developer at large
More information about the Linux-HA
mailing list