Thread: SYSCONFDIR, initdb and postgresql.conf
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
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
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