Package: postgresql-7.4 Version: 1:7.4.8-4 Severity: normal
pg_ctrlcluster get the postmaster uid and gid from the cluster. It was 31:32 when i created it. I had deleted and recreated the postgres account to update it (you removed its shell and maybe other things so not to miss any part i used the postinst adduser command to recreate it). The new uid/gid where (fake ones) 122:122. Thus running the postgresql-7.4 init script fired pg_ctrcluster which retrieved the old uid/gid from the cluster (31:32) and changed the process uid/gid to match the cluster one before calling pg_ctl. pg_ctl was running with an inexistant account. This leads to this error: * Starting PostgreSQL 7.4 database server: main /usr/lib/postgresql/7.4/bin/pg_id: Success /usr/lib/postgresql/7.4/bin/pg_ctl: line 114: [: -eq: unary operator expected the problem is that in pg_id code, l.105: if (!pw) { perror(argv[0]); exit(1); } perror returns pg_id program name and success as (!pw) is true and no other errors happened. And in pg_ctl , l.114 : if [ `$PGPATH/pg_id -u` -eq 0 ] then echo "$CMDNAME: cannot be run as root" 1>&2 (...) here `$PGPATH/pg_id -u` is not a integer anymore but ".../pg_id: Success". A quick hack to let it work would be to use: if $PGPATH/pg_id -u; then echo "$CMDNAME: cannot be run as root" 1>&2 though it would be better if it errors in case the cluster is in fact owned by "no account". I though about: uid=$( $PGPATH/pg_id -u 2>/dev/null); $status=$? if [ $status -eq 0 ] then if [ $uid -eq 0 ]; then echo "$CMDNAME: cannot be run as root" 1>&2 (...) exit 1 fi else echo "This user does not exists . You may have changed the uid of the account used to create this database cluster. You should dump, drop and reinit a the cluster." fi This is a matter of talks as i wonder if pg_id should not return the uid even if the account does not exists. uid=31(invalid user) and let us manage the error in pg_ctl as we wish. Maybe all this is too much for a special case which may not appear often as the problem never arise as far as i searched for this error. Please close this bug if you think so. Regards Alban -- System Information: Debian Release: 3.1 APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.12-rc5usb-serial Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=UTF-8) Versions of packages postgresql-7.4 depends on: ii libc6 2.3.5-1 GNU C Library: Shared libraries an ii libcomerr2 1.37+1.38-WIP-0509-1 common error description library ii libkrb53 1.3.6-3 MIT Kerberos runtime libraries ii libpam0g 0.76-22 Pluggable Authentication Modules l ii libpq3 1:7.4.8-4 PostgreSQL C client library ii libreadline4 4.3-15 GNU readline and history libraries ii libssl0.9.7 0.9.7g-1 SSL shared libraries ii postgresql-client-7 1:7.4.8-4 front-end programs for PostgreSQL ii postgresql-common 12 manager for PostgreSQL database cl ii zlib1g 1:1.2.2-4 compression library - runtime -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]