Обсуждение: BUG #14083: 'postgresql95-setup initdb' breaks inside docker container
BUG #14083: 'postgresql95-setup initdb' breaks inside docker container
От
porjo38@yahoo.com.au
Дата:
The following bug has been logged on the website: Bug reference: 14083 Logged by: Ian Email address: porjo38@yahoo.com.au PostgreSQL version: 9.5.2 Operating system: Centos7 Description: # /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 If I comment out the lines from 'postgresql95-setup' that call 'systemctl', initdb executes succesfully. I'm using RPM packages from http://yum.postgresql.org/: # rpm -qa | grep postgres postgresql95-libs-9.5.2-1PGDG.rhel7.x86_64 postgresql95-9.5.2-1PGDG.rhel7.x86_64 postgresql95-server-9.5.2-1PGDG.rhel7.x86_64
Hi, On Thu, 2016-04-14 at 03:58 +0000, porjo38@yahoo.com.au wrote: > Description: > > # /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. Regards, -- Devrim GÜNDÜZ Principal Systems Engineer @ EnterpriseDB: http://www.enterprisedb.com PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer Twitter: @DevrimGunduz , @DevrimGunduzTR
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!?