
POSTGRES95 INSTALLATION INSTRUCTIONS
Copyright (c) 1996 Regents of the University of California

This directory contains the source and documentation for Postgres95
(version 1.01)  Postgres95 is a derivative of POSTGRES 4.2 (the last
release of the UC Berkeley research project).   For copyright terms
for postgres95, please see the file named COPYRIGHT.   It is developed
by Jolly Chen and Andrew Yu. 

Postgres95 has been tested on the following platforms:

 *  Intel X86 machines running Linux, in ELF format:  kernel 1.3.42, gcc 2.7.0
	
 *  Digital Equipment Alpha running DEC OSF/1 3.2 (with gcc and cc).

 *  Digital Equipment DECstation running Ultrix 4.4 (with gcc and cc).

 *  Hewlett-Packard H-P 9000 Series 800 (PA-RISC architecture) 
    machines running HP-UX 9.00, 9.01 and 9.03 (with cc).

 *  Sun Microsystems (SPARC architecture) machines running SunOS 4.1.3_U1,
    and Solaris 2.4 (with gcc).

 *  Intel X86 machines running NetBSD 1.0

 *  IBM RS/6000 running AIX 3.2.5

Postgres95 is also known to work on a number of other platforms that
the authors have not personally tested.

You should have at least 8 MB of memory and at least 50 MB of disk space to
hold the source, binaries, and user databases.

If you would like to migrate your databases from postgres 1.0 to
postgres 1.01, see the file named "MIGRATION_from_1.0_to_1.01".

----------------------------------------------------------------------
To install Postgres95 on UNIX platforms:

1. Create the postgres login.
   
   Create a login called postgres (this requires root privileges). We 
   recommend that you run the postmaster as the user postgres for security 
   reasons.

   If you run the postmaster as yourself, be warned that you essentially
   grant all database users the ability to execute arbitrary C functions
   as you without your password. (In any case, DO NOT run the postmaster 
   as root.)

2. Compile and install Postgres95.

   If you have earlier versions of Postgres installed, you might want
   to install Postgres95 in a different place.

   If you're installing Postgres95 on Ultrix 4.x or Linux, see the 
   porting notes at the end for additional packages that you need to install
   before installing Postgres95.

   Our Makefiles require GNU make (called gmake in this document) and
   also assume that "install" accepts BSD options. The INSTALL
   variable in the Makefiles is set to the BSD-compatible version of
   install. On some systems, you will have to find a BSD-compatible
   install to the location of this program. (eg. bsdinst, which comes
   with the MIT X Window System distribution) 

   Customization can be done by editing src/Makefile.global. You may change
   the various configuration options here, such as where the Postgres95
   executable files are installed and where postgres looks for the database
   directory.  The configuration switches are fairly self-explanatory, but we
   will go over some of the more commonly-changed options:

     -  PORTNAME specifies the platform on which Postgres95 is being build
        (linux is the default). You might need to change it to reflect your 
        platform. (sparc for SunOS 4.1.x, sparc_solaris for Solaris 2.4, 
        ultrix4 for Ultrix 4.4, and hpux for HP-UX 9.0)

     -  POSTGRESLOGIN specifies the user who will be doing initdb and
        running the postmaster (defaults to postgres).  Do not set
	this to root, or any users with UID = 0!

     -  POSTSGRESDIR specifies the top-level directory where Postgres95
        binaries, header files, libraries, and databases are installed.

     -  SRCDIR specifies where the source files are located. (defaults
        to $(POSTGRESDIR)/src.)

     -  NAMEDATALEN and OIDNAMELEN allows you to set the maximum
        length of system identifiers (table names, function names, etc.)
        It defaults to 32.  You may alter this if you like, but
        be aware that databases created with different NAMEDATALEN's
        do not interoperate. 

     -  USE_READLINE specifies whether you want to use the GNU
        readline and history libraries for the psql interactive 
        frontend program.
        GNU readline is not supplied with postgres95 and can be found
        in the usual ftp sites for GNU software.

      - HBA specifies whether you wish to use host-based
        authentication for postgres95.  If you do use host-based
        authentication, after installing, modify the file
        $PGDATA/pg_hba accordingly. 

   After editing src/Makefile.global, you are ready to compile and
   install Postgres95 (it takes about 10 minutes on a 133Mhz Pentium
   running linux):

     % cd src
     % gmake 
     % gmake install

   After the installation is complete, check that you have the following files
   in the top level Postgres95 directory (eg. /usr/local/postgres95).

   You will find the following executables in the bin directory (which
   should be included in the search path of your shell):

     % ls /usr/local/postgres95/bin
     cleardbdir*   destroydb*    monitor*      postgres*
     createdb*     destroyuser*  pg_id*        postmaster@
     createuser*   initdb*       pg_version*   psql*

   You will find the following in the database directory:

     % ls -R /usr/local/postgres95/data
     files/
     pg_hba
	
     data/files:
     global1.bki                   local1_template1.bki
     global1.bki.source            local1_template1.bki.source

3. Initialize the database.

   After you have installed Postgres95, initialize the database by typing:

     % initdb

4. Start the postmaster.

   Now, you are ready to make the system operational by running the
   postmaster daemon. There are a few environment variables which affect
   its operation:
	PGDATA	- location of the database (eg. /usr/local/postgres95/data)
	PGPORT	- TCP port where it listens for connection (eg. 5432)
   You don't have to set these variables if you use the (compile time) 
   default.

     % postmaster -S

   
5. Testing.

   We suggest you run the regression tests to make sure the release
   was installed successfully. The regression tests can be found in
   src/test/regress. 

     % cd /usr/local/postgres95/src/test/regress
     % gmake all runtest

   This will run a whole slew of regression tests and might take a long
   time to run.  When it's done, the output is in the file obj/regress.out.
   You can compare this to a sample run that we supply in the file 
   sample.regress.out. (You should get roughly the same output except
   for some pathnames.) 

     % diff obj/regress.out sample.regress.out

   The regression test takes about half an hour to run on a Sparc 10.

6. Run queries.

   After the database is initialized, you can create a new database. To
   create a database, do the following:

     % createdb foo

   To connect to the postmaster, you have a choice of two front-end programs.
   ("psql" is recommended.  "monitor" is the old terminal monitor
     supplied in earlier versions of Postgres)
   
     % psql foo
Please read the file COPYRIGHT for copyright terms of POSTGRES95

  type \? for help on slash commands
  type \q to quit
  type \g or terminate with semicolon to execute query
You are currently connected to the database: foo

foo=> 

----------------------------------------------------------------------
Questions? Bugs? Feedback?

First, please read the Frequently Asked Questions and answers
in the file called FAQ.

If you still have questions, please send them to
postgres95@postgres95.vnet.net.   

If you have a bug report to make, please send a filled out version of
the file named "bug.template" to postgres95@postgres95.vnet.net.  
Please do not send bug reports directly to the primary authors.  We
already monitor the mailing lists closely.

If you would like to help out with the development and maintenance of
postgres95, send mail to jolly@cs.berkeley.edu.

----------------------------------------------------------------------

Porting Notes:
-------------
Ultrix4.x:
	You need to install the libdl-1.1 package since Ultrix 4.x doesn't
	have a dynamic loader. It's available in
	   s2k-ftp.CS.Berkeley.EDU:pub/personal/andrew/libdl-1.1.tar.Z

Linux:
	The linux port defaults to the ELF binary format. (Note that if you're
	using ELF, you don't need dld because you'll be using the dl library
	that comes with Linux ELF instead.)

	To compile on non-ELF Linux, comment out the LINUX_ELF line in
	src/mk/port/postgres.mk.linux. Also, the dld library MUST be obtained
	and installed on the system. It enables dynamic link loading capability
	to the postgres port. The dld library can be obtained from the sunsite
	linux distributions. The current name is dld-3.2.5.
				(Jalon Q. Zimmerman 
				<sneaker@powergrid.electriciti.com> 5/11/95)

	To compile with flex, you need a recent version (2.5.2 or
	later). Otherwise, you will get a 'yy_flush_buffer' undefined error.

BSD/OS:
	Kurt Lidl (lidl@pix.com) contributed the BSD/OS port.  You can find
	some additional information at http://www.pix.com.
	For BSD/OS 2.0 and 2.01, you will need to get updated version of flex
	as well as the GNU dld library.

NeXT: 
	The NeXT port was supplied by Tom R. Hageman <tom@basil.icce.rug.nl>.
	It requires a SysV IPC emulation library and header files for 
        shared libary and semaphore stuff.   Tom just happens to sell such 
        a product so contact him for information.  He has also indicated that
        binary releases of postgres95 for NEXTSTEP will be made available to
        the general public.  Contact Info@RnA.nl for information.


