Re: ERROR: Postmaster environment variable 'PGDATA2' not set

Lists: pgsql-fr-generale
From: Jean-Christophe Weis <jcweis(at)melix(dot)net>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: ERROR: Postmaster environment variable 'PGDATA2' not set
Date: 2004-06-30 18:47:26
Message-ID: 20040630184726.GA3152@max.my.domain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale


Salut la liste,

J'ai integre depuis peu le groupe de traduction de la documentation de
PostgreSQL.

Comme je ne comprenais pas la section 18.5 (Server Administration > Managing
Databases > Alternative Locations) que je dois traduire, j'ai voulu essayer
les manips, mais sans succes.

Mon probleme est le suivant:

J'ai une debian woody, <3.0r1>. Ma version de PostgreSQL est <7.2.1-2>.

J'ai cree un repertoire pour une nouvelle aire de stockage de donnees, dans
mon repertoire d'utilisateur lambda, avec les permissions qui vont bien:

| root# ls -ld /home/jc/
| drwxr-xr-x 29 jc jc 4096 Jun 29 19:18 /home/jc/
| root# ls -ld /home/jc/postgres
| drwx------ 3 postgres postgres 4096 Jun 29 19:59 /home/jc/postgres/

Le serveur a l'arret, je definis et j'exporte une variable nommee PGDATA2:

| root# PGDATA2=/home/jc/postgres/data
| root# export PGDATA2

Je cree la nouvelle aire de stockage sous l'identite systeme postgres:

| root# su postgres
| postgres$ /usr/lib/postgresql/bin/initlocation PGDATA2
| The location will be initialized with username "postgres".
| This user will own all the files and must also own the server process.
|
| Creating directory /home/jc/postgres/data
| Creating directory /home/jc/postgres/data/base
|
| initlocation is complete.
| You can now create a database using
| CREATE DATABASE <name> WITH LOCATION = 'PGDATA2'
| in SQL, or
| createdb <name> -D 'PGDATA2'
| from the shell.

Apparemment tout va bien, je relance le serveur:

| postgres$ exit
| root# /etc/init.d/postgresql start
| ...

Mais quand j'essaie de creer une base de donnees dans la nouvelle aire sous
l'identite systeme postgres, ca ne marche pas:

| root# su postgres
| postgres$ createdb testdb -D 'PGDATA2'
| ERROR: Postmaster environment variable 'PGDATA2' not set
| createdb: database creation failed

| postgres$ createdb testdb -D PGDATA2
| ERROR: Postmaster environment variable 'PGDATA2' not set
| createdb: database creation failed

| postgres$ createdb testdb -D $PGDATA2
| ERROR: Absolute paths are not allowed as database locations
| createdb: database creation failed

Le probleme semble etre que je n'arrive pas a passer la variable PGDATA2 dans
l'environnement du serveur... Pourtant je l'ai bien definie et exportee dans
le shell root d'ou je lance le serveur... Une idee?

Merci, JC Weis.


From: Bruno <bruno(dot)leveque(at)net6d(dot)com>
To: Jean-Christophe Weis <jcweis(at)melix(dot)net>
Cc: pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: ERROR: Postmaster environment variable
Date: 2004-06-30 20:10:25
Message-ID: Pine.LNX.4.58.0406302206200.19492@moissac.leveque.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonsoir,

1 - la ligne qu'il "faudrait" utiliser est :
postgres$ createdb testdb -D $PGDATA2

2 - Le seul problème semblerait-il est qu'il faille recompiler postgres pour que ce soit accepté. cf -> man 7 create_database
option ALLOW_ABSOLUTE_DBPATHS lors du configure.

Bruno

On Wed, 30 Jun 2004, Jean-Christophe Weis wrote:

>
> Salut la liste,
>
> J'ai integre depuis peu le groupe de traduction de la documentation de
> PostgreSQL.
>
> Comme je ne comprenais pas la section 18.5 (Server Administration > Managing
> Databases > Alternative Locations) que je dois traduire, j'ai voulu essayer
> les manips, mais sans succes.
>
> Mon probleme est le suivant:
>
> J'ai une debian woody, <3.0r1>. Ma version de PostgreSQL est <7.2.1-2>.
>
> J'ai cree un repertoire pour une nouvelle aire de stockage de donnees, dans
> mon repertoire d'utilisateur lambda, avec les permissions qui vont bien:
>
> | root# ls -ld /home/jc/
> | drwxr-xr-x 29 jc jc 4096 Jun 29 19:18 /home/jc/
> | root# ls -ld /home/jc/postgres
> | drwx------ 3 postgres postgres 4096 Jun 29 19:59 /home/jc/postgres/
>
> Le serveur a l'arret, je definis et j'exporte une variable nommee PGDATA2:
>
> | root# PGDATA2=/home/jc/postgres/data
> | root# export PGDATA2
>
> Je cree la nouvelle aire de stockage sous l'identite systeme postgres:
>
> | root# su postgres
> | postgres$ /usr/lib/postgresql/bin/initlocation PGDATA2
> | The location will be initialized with username "postgres".
> | This user will own all the files and must also own the server process.
> |
> | Creating directory /home/jc/postgres/data
> | Creating directory /home/jc/postgres/data/base
> |
> | initlocation is complete.
> | You can now create a database using
> | CREATE DATABASE <name> WITH LOCATION = 'PGDATA2'
> | in SQL, or
> | createdb <name> -D 'PGDATA2'
> | from the shell.
>
> Apparemment tout va bien, je relance le serveur:
>
> | postgres$ exit
> | root# /etc/init.d/postgresql start
> | ...
>
> Mais quand j'essaie de creer une base de donnees dans la nouvelle aire sous
> l'identite systeme postgres, ca ne marche pas:
>
> | root# su postgres
> | postgres$ createdb testdb -D 'PGDATA2'
> | ERROR: Postmaster environment variable 'PGDATA2' not set
> | createdb: database creation failed
>
> | postgres$ createdb testdb -D PGDATA2
> | ERROR: Postmaster environment variable 'PGDATA2' not set
> | createdb: database creation failed
>
> | postgres$ createdb testdb -D $PGDATA2
> | ERROR: Absolute paths are not allowed as database locations
> | createdb: database creation failed
>
> Le probleme semble etre que je n'arrive pas a passer la variable PGDATA2 dans
> l'environnement du serveur... Pourtant je l'ai bien definie et exportee dans
> le shell root d'ou je lance le serveur... Une idee?
>
>
> Merci, JC Weis.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html
>

Bruno LEVEQUE
Net6D
http://www.net6d.com
bruno(dot)leveque(at)net6d(dot)com


From: Francois Suter <dba(at)paragraf(dot)ch>
To: Jean-Christophe Weis <jcweis(at)melix(dot)net>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: ERROR: Postmaster environment variable 'PGDATA2' not set
Date: 2004-07-01 07:08:20
Message-ID: 6F27BCCC-CB2D-11D8-B935-000393427520@paragraf.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

> | root# PGDATA2=/home/jc/postgres/data
> | root# export PGDATA2
>
> Je cree la nouvelle aire de stockage sous l'identite systeme postgres:
>
> | root# su postgres
> | postgres$ /usr/lib/postgresql/bin/initlocation PGDATA2

Je ne suis pas un grand spécialiste Unix, mais il me semble que,
lorsque tu fais le "su postgres", tu ouvres un nouveau process, dans
lequel PGDATA2 n'existe donc pas. Ne faudrait-il pas faire
"PGDATA2=/home/jc/postgres/data" et "export PGDATA2" après le "su
postgres"?

---------------
Francois

Home page: http://www.monpetitcoin.com/

"Nous sommes peu à penser trop, trop à penser peu." - Françoise Sagan


From: Jean-Christophe Weis <jcweis(at)melix(dot)net>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: ERROR: Postmaster environment variable 'PGDATA2' not set
Date: 2004-07-02 16:06:23
Message-ID: 20040702160623.GA1879@max.my.domain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Salut la liste,

Apres une petite discussion sur pgsql-admin(at)postgresql(dot)org, il apparait que
mon probleme etait que le script d'init du serveur ('/etc/init.d/postgresql')
fait un 'su - postgres' et non pas un 'su postgres'. Il ne sert donc a rien
que la variable PGDATA2 soit definie et marquee pour exportation dans le shell
root d'ou l'on lance le serveur, parce qu'a cause du tiret de 'su -'
l'environnement courant n'est pas passe au nouveau shell. L'environnement du
nouveau shell est celui que l'on aurait si l'on se loguait directement comme
utilisateur 'postgres' (ce que je ne sais pas faire d'ailleurs, sans mot de
passe...).

Donc la solution, c'est soit de virer le tiret dans le script d'init, mais ca
me parait ose (et de toute facon il faudrait definir PGDATA2 quelque part),
soit de definir et marquer pour exportation la variable PGDATA2 dans le
'.profile' de l'utilisateur 'postgres' ('/var/lib/postgres/.profile').

La traduction va pouvoir reprendre apres une petite pause, vu le temps que ca
m'a pris...

--
JC Weis <jcweis(at)melix(dot)net>