diff options
Diffstat (limited to 'www/openacs/files/adjust_pgsql_conf.sh.in')
-rw-r--r-- | www/openacs/files/adjust_pgsql_conf.sh.in | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/www/openacs/files/adjust_pgsql_conf.sh.in b/www/openacs/files/adjust_pgsql_conf.sh.in new file mode 100644 index 000000000000..8674e5b9a034 --- /dev/null +++ b/www/openacs/files/adjust_pgsql_conf.sh.in @@ -0,0 +1,74 @@ +#!/bin/sh +# $FreeBSD$ +# +# This script modifies the default "postgresql.conf" in PostgreSQL 8.1 and 8.2 +# installations, to suit the needs of OpenACS / .LRN +# +# Manual instructions: +# http://openacs.org/xowiki/How_to_install_in_Postgres_8.x +# +# Usage: adjust_pgsql_conf.sh [path_to_postgresql.conf] +# +PGUSER=%%PGUSER%% +LOCALBASE=%%LOCALBASE%% +# +AWK=%%AWK%% +CP=%%CP%% +GREP=%%GREP%% +PW=%%PW%% +SU=%%SU%% + +# Check if PostgreSQL version is >= 8.1.0 +if ! `${LOCALBASE}/bin/postmaster -V | ${AWK} -F '[ .]' '{if ($3==8 && $4>=1) {exit 0} else {exit 1}}'`; then + echo "You need PostgreSQL server 8.1 or higher installed." + exit 1 +fi + +# Check if user supplied a path or look for default postgresql.conf +if [ "x${1}" = "x" ]; then + PGCONF=`${PW} usershow ${PGUSER} | ${AWK} -F: '{ print $9 }'`/data/postgresql.conf +else + PGCONF=${1} +fi + +if ! [ -f "${PGCONF}" ]; then + echo "ERROR: no such file: ${PGCONF}"; echo "" + echo "Maybe you use a different datadir or your database is not yet initialized" + echo "You can initialize your database with:" + echo "${LOCALBASE}/etc/rc.d/postgresql initdb"; echo "" + echo "Usage: $0 [path_to_postgresql.conf]" + exit 1 +fi + +# Very simple check if the file is a standard PostgreSQL configuration file +if ! `${GREP} -qe '^# PostgreSQL configuration file' ${PGCONF}`; then + echo "ERROR: ${PGCONF} doesn't appear to be a default PostgreSQL database configuration file" + exit 1 +fi + +echo "Found ${PGCONF}" +echo -n "Checking ... " + +MODIFY=no +MISSING_FROM=no +REGEX_FLAVOR=no +WITH_OIDS=no + +# Check if we need to add anything +if ! `${GREP} -qe '^add_missing_from = on' ${PGCONF}`; then MISSING_FROM=yes; MODIFY=yes; fi +if ! `${GREP} -qe '^regex_flavor = extended' ${PGCONF}`; then REGEX_FLAVOR=yes; MODIFY=yes; fi +if ! `${GREP} -qe '^default_with_oids = on' ${PGCONF}`; then WITH_OIDS=yes; MODIFY=yes; fi + +# Backup file and add configuration lines, if necessary +if [ ${MODIFY} = "no" ]; then + echo "no modifications necessary" +else + echo "needs to be modified" + echo "Backing up old configuration file to ${PGCONF}.bak" + ${CP} -p ${PGCONF} ${PGCONF}.bak + if [ ${MISSING_FROM} = "yes" ]; then echo "add_missing_from = on" >> ${PGCONF}; fi + if [ ${REGEX_FLAVOR} = "yes" ]; then echo "regex_flavor = extended" >> ${PGCONF}; fi + if [ ${WITH_OIDS} = "yes" ]; then echo "default_with_oids = on" >> ${PGCONF}; fi + echo "File successfully modified." + echo "Please restart your PostgreSQL server (if running)." +fi |