diff options
Diffstat (limited to 'src/bin/initdb/initdb.sh')
-rw-r--r-- | src/bin/initdb/initdb.sh | 163 |
1 files changed, 102 insertions, 61 deletions
diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh index b986d2e2918..e163b388187 100644 --- a/src/bin/initdb/initdb.sh +++ b/src/bin/initdb/initdb.sh @@ -26,31 +26,32 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.12 1996/10/12 07:49:56 bryanh Exp $ +# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.13 1996/11/14 10:25:33 bryanh Exp $ # #------------------------------------------------------------------------- # ---------------- -# Set paths from environment or default values. # The _fUnKy_..._sTuFf_ gets set when the script is built (with make) # from parameters set in the make file. -# Currently the only thing we look for from the environment is -# PGDATA, PGHOST, and PGPORT. However, we should have environment -# variables for all the paths. # # ---------------- -[ -z "$PGDATA" ] && { PGDATA=_fUnKy_DATADIR_sTuFf_; export PGDATA; } -[ -z "$PGPORT" ] && { PGPORT=_fUnKy_POSTPORT_sTuFf_; export PGPORT; } -[ -z "$PGHOST" ] && { PGHOST=localhost; export PGHOST; } -BINDIR=_fUnKy_BINDIR_sTuFf_ -LIBDIR=_fUnKy_LIBDIR_sTuFf_ + NAMEDATALEN=_fUnKy_NAMEDATALEN_sTuFf_ OIDNAMELEN=_fUnKy_OIDNAMELEN_sTuFf_ -PATH=$BINDIR:$PATH -export PATH CMDNAME=`basename $0` +# Find the default PGLIB directory (the directory that contains miscellaneous +# files that are part of Postgres). The user-written program postconfig +# outputs variable settings like "PGLIB=/usr/lib/whatever". If it doesn't +# output a PGLIB value, then there is no default and the user must +# specify the pglib option. Postconfig may not exist, in which case +# our invocation of it silently fails. + +# The x=x below is to satisfy export if postconfig returns nothing. + +export x=x $(postconfig 2>/dev/null) + # Set defaults: debug=0 noclean=0 @@ -62,45 +63,60 @@ do # ${ARG#--username=} is not reliable or available on all platforms case "$1" in - --debug|-d) - debug=1 - echo "Running with debug mode on." - ;; - --noclean|-n) - noclean=1 - echo "Running with noclean mode on. Mistakes will not be cleaned up." - ;; - --template|-t) - template_only=1 - echo "updating template1 database only." - ;; - --username=*) - POSTGRES_SUPERUSERNAME="`echo $1 | sed s/^--username=//`" - ;; - -u) - shift - POSTGRES_SUPERUSERNAME="$1" - ;; - -u*) - POSTGRES_SUPERUSERNAME="`echo $1 | sed s/^-u//`" - ;; - --pgdata=*) - PGDATA="`echo $1 | sed s/^--pgdata=//`" - ;; - -r) - shift - PGDATA="$1" - ;; - -r*) - PGDATA="`echo $1 | sed s/^-r//`" - ;; - *) - echo "Unrecognized option '$1'. Syntax is:" - echo "initdb [-t | --template] [-d | --debug] [-n | --noclean]" \ - "[-u SUPERUSER | --username=SUPERUSER] [-r DATADIR | --pgdata=DATADIR]" - exit 100 - esac - shift + --debug|-d) + debug=1 + echo "Running with debug mode on." + ;; + --noclean|-n) + noclean=1 + echo "Running with noclean mode on. " + "Mistakes will not be cleaned up." + ;; + --template|-t) + template_only=1 + echo "updating template1 database only." + ;; + --username=*) + POSTGRES_SUPERUSERNAME="`echo $1 | sed s/^--username=//`" + ;; + -u) + shift + POSTGRES_SUPERUSERNAME="$1" + ;; + -u*) + POSTGRES_SUPERUSERNAME="`echo $1 | sed s/^-u//`" + ;; + --pgdata=*) + PGDATA="`echo $1 | sed s/^--pgdata=//`" + ;; + -r) + shift + PGDATA="$1" + ;; + -r*) + PGDATA="`echo $1 | sed s/^-r//`" + ;; + --pglib=*) + PGLIB="`echo $1 | sed s/^--pglib=//`" + ;; + -l) + shift + PGLIB="$1" + ;; + -l*) + PGLIB="`echo $1 | sed s/^-l//`" + ;; + + *) + echo "Unrecognized option '$1'. Syntax is:" + echo "initdb [-t | --template] [-d | --debug]" \ + "[-n | --noclean]" \ + "[-u SUPERUSER | --username=SUPERUSER]" \ + "[-r DATADIR | --pgdata=DATADIR]" \ + "[-l LIBDIR | --pglib=LIBDIR]" + exit 100 + esac + shift done if [ "$debug" -eq 1 ]; then @@ -109,9 +125,34 @@ else BACKENDARGS="-boot -C -F -Q" fi -TEMPLATE=$LIBDIR/local1_template1.bki.source -GLOBAL=$LIBDIR/global1.bki.source -PG_HBA_SAMPLE=$LIBDIR/pg_hba.conf.sample +TEMPLATE=$PGLIB/local1_template1.bki.source +GLOBAL=$PGLIB/global1.bki.source +PG_HBA_SAMPLE=$PGLIB/pg_hba.conf.sample + +#------------------------------------------------------------------------- +# Make sure he told us where to find the Postgres files. +#------------------------------------------------------------------------- +if [ -z $PGLIB ]; then + echo "$CMDNAME does not know where to find the files that make up " + echo "Postgres (the PGLIB directory). You must identify the PGLIB " + echo "directory either with a --pglib invocation option, or by " + echo "setting the PGLIB environment variable, or by having a program " + echo "called 'postconfig' in your search path that sets the PGLIB " + echo "environment variable." + exit 20 +fi + +#------------------------------------------------------------------------- +# Make sure he told us where to build the database system +#------------------------------------------------------------------------- + +if [ -z $PGDATA ]; then + echo "$CMDNAME: You must identify the PGDATA directory, where the data" + echo "for this database system will reside. Do this with either a" + echo "--pgdata invocation option or a PGDATA environment variable." + echo + exit 20 +fi #------------------------------------------------------------------------- # Find the input files @@ -120,7 +161,9 @@ PG_HBA_SAMPLE=$LIBDIR/pg_hba.conf.sample for PREREQ_FILE in $TEMPLATE $GLOBAL $PG_HBA_SAMPLE; do if [ ! -f $PREREQ_FILE ]; then echo "$CMDNAME does not find the file '$PREREQ_FILE'." - echo "This means Postgres95 is incorrectly installed." + echo "This means you have identified an invalid PGLIB directory." + echo "You specify a PGLIB directory with a --pglib invocation " + echo "option, a PGLIB environment variable, or a postconfig program." exit 1 fi done @@ -157,15 +200,13 @@ fi if [ $POSTGRES_SUPERUID -ne `pg_id` -a `pg_id` -ne 0 ]; then echo "Only the unix superuser may initialize a database with a different" echo "Postgres superuser. (You must be able to create files that belong" - echo "to the specified Postgres userid)." + echo "to the specified unix user)." exit 2 fi echo "We are initializing the database system with username" \ "$POSTGRES_SUPERUSERNAME (uid=$POSTGRES_SUPERUID)." -echo "Please be aware that Postgres is not secure. Anyone who can connect" -echo "to the database can act as user $POSTGRES_SUPERUSERNAME" \ - "with very little effort." +echo "This user will own all the files and must also own the server process." echo # ----------------------------------------------------------------------- @@ -182,8 +223,8 @@ if [ -d "$PGDATA" ]; then echo "database system already exists." echo echo "If you want to create a new database system, either remove " - echo "the $PGDATA directory or run initdb with environment variable" - echo "PGDATA set to something other than $PGDATA." + echo "the $PGDATA directory or run initdb with a --pgdata option " + echo "other than $PGDATA." exit 1 fi else |