Re: BUG #14083: 'postgresql95-setup initdb' breaks inside docker container

From: IanB <porjo38(at)yahoo(dot)com(dot)au>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #14083: 'postgresql95-setup initdb' breaks inside docker container
Date: 2016-04-14 22:49:53
Message-ID: 57101E91.50706@yahoo.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs


On 14/04/16 21:13, Devrim Gündüz wrote:
>>
>> # /usr/pgsql-9.5/bin/postgresql95-setup initdb
>> Failed to get D-Bus connection: Operation not permitted
>> failed to find PGDATA setting in postgresql-9.5.service
>
> Are you running these as root or postgres user?
>
> I think they need to be run with root.

Yes, it is running as postgres user. Looking at postgresql95-setup I can
see that the only reason it is running 'systemctl' is to determine the
PGDATA path, as follows:

PGDATA=`systemctl show -p Environment "${SERVICE_NAME}.service" |
sed 's/^Environment=//' | tr ' ' '\n' |
sed -n 's/^PGDATA=//p' | tail -n 1`
if [ x"$PGDATA" = x ]; then
echo "failed to find PGDATA setting in ${SERVICE_NAME}.service"
exit 1
fi

Further down it gets PGDATA again as follows:

# Get data directory from the service file
PGDATA=`sed -n 's/Environment=PGDATA=//p' "${SERVICE_FILE}"`

When I comment out the first method, PGDATA is set from second method
and the script runs successfully *without* needing root privileges. Is
the first method even necessary!?

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2016-04-14 23:20:12 Re: Bus error in pg_logical_slot_get_changes (9.4.7, sparc)
Previous Message Andres Freund 2016-04-14 22:22:42 Re: Bus error in pg_logical_slot_get_changes (9.4.7, sparc)