Thread: SYSCONFDIR, initdb and postgresql.conf

SYSCONFDIR, initdb and postgresql.conf

From
KM
Date:
On an OpenBSD machine I just compiled and installed 9.0.1.  The
./configure arguments included '--sysconfdir=/etc'.  Running
'pg_config --sysconfdir' returns '/etc/postgresql'.  The cluster is
running and I can create a database and connect to it.

However, initdb put the config files in the directory named by the
--pgdata option.  There is no directory /etc/postgresql.

Should I expect this?  How do I persuade postgres to put its config
under /etc?

Thanks
--
KM

Re: SYSCONFDIR, initdb and postgresql.conf

From
Tom Lane
Date:
KM <km@xacrasis.netx> writes:
> On an OpenBSD machine I just compiled and installed 9.0.1.  The
> ./configure arguments included '--sysconfdir=/etc'.  Running
> 'pg_config --sysconfdir' returns '/etc/postgresql'.  The cluster is
> running and I can create a database and connect to it.

> However, initdb put the config files in the directory named by the
> --pgdata option.  There is no directory /etc/postgresql.

> Should I expect this?  How do I persuade postgres to put its config
> under /etc?

SYSCONFDIR is only used for global configuration files, like the default
psqlrc or pg_service.conf.  It would be pretty inappropriate to put
postgresql.conf there because postgresql.conf is a per-cluster
configuration file.

Having said that, you don't have to put postgresql.conf in the data
directory if you don't want to.  Just move it to where you do want it
(along with the other cluster config files) and add an entry to it to
point to the actual data directory.  Beware that this arrangement isn't
supported as fully as the default --- in particular, I think pg_ctl
will have some trouble with it.

            regards, tom lane

Re: SYSCONFDIR, initdb and postgresql.conf

From
KM
Date:
On 2010-11-21, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> SYSCONFDIR is only used for global configuration files, like the default
> psqlrc or pg_service.conf.

OK, so it doesn't regard postgresql.conf and friends as conf files in
that sense.

> It would be pretty inappropriate to put postgresql.conf there
> because postgresql.conf is a per-cluster configuration file.

Debian does it with a hierarchy under /etc/postgres that reflects the
versions and clusters installed.  E.g. /etc/postgres/8.4/main holds
the cluster-conf files for the 'main' cluster running 8.4.

> Having said that, you don't have to put postgresql.conf in the data
> directory if you don't want to.  Just move it to where you do want it
> (along with the other cluster config files) and add an entry to it to
> point to the actual data directory.  Beware that this arrangement isn't
> supported as fully as the default --- in particular, I think pg_ctl
> will have some trouble with it.

It wants a '-o' to tell postgres where its config is.  Debian uses a
system of ingenious wrapper scripts that automatically set it.  My
poor man's version seems to be working in my /etc/rc.local,

     su -l _postgresql -c "nohup /usr/local/bin/pg_ctl start \
         -D /var/postgresql/9.0/main -l /var/postgresql/logfile \
         -o '-D /var/postgresql/9.0/main' \
         -o '-c config_file=/etc/postgresql/9.0/main/postgresql.conf' \
         >/dev/null"

>             regards, tom lane

Thanks
--
KM