Обсуждение: 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

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

От
Devrim Gündüz
Дата:
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



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

От
IanB
Дата:
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!?