auto-import postgresql-7.3.2-3 from postgresql-7.3.2-3.src.rpm

This commit is contained in:
cvsdist 2004-09-09 10:41:55 +00:00
parent 7fe3c31010
commit 06e8d17f1d
6 changed files with 391 additions and 734 deletions

View File

@ -1,3 +1 @@
migration-scripts.tar.gz
postgresql-7.2.4.tar.gz
postgresql-dump.1.gz
postgresql-7.3.2.tar.gz

View File

@ -1,18 +1,14 @@
README.rpm-dist
-----------------------------------------------------------------------------
Version 4.1, for the PostgreSQL 7.2.1-2PGDG RPMset.
Version 5.0, for the PostgreSQL 7.3-1PGDG RPMset.
Lamar Owen <lamar.owen@wgcr.org>
DISCLAIMER: the following information is provided in the hope that it helps
people install and use PostgreSQL. It is being provided without warranty of
any kind, so, use at your own risk.
-----------------------------------------------------------------------------
Contents:
0.) Quick -i note.
1.) Introduction, QuickStart, and credits
2.) PostgreSQL RPM packages and rationale
3.) Upgrading. (Deprecated. Will be removed in a future README)
3.) Starting multiple postmasters
4.) Regression Testing
5.) Starting postmaster automatically on startup
6.) Grand Unified Configuration(GUC) File.
@ -31,35 +27,47 @@ recommended way to get '-i' functionality back.
INTRODUCTION
-----------------------------------------------------------------------------
This document exists to explain the layout of the RPM's for PostgreSQL, to
explain how to migrate from an older version, and to explain WHY it can be
so difficult to upgrade PostgreSQL.
This document exists to explain the layout of the RPM's for PostgreSQL,to
describe various RPM specifics, and to document special features found
in the RPMset.
This document is written to be applicable to version 7.2.1 of PostgreSQL,
which is the current version of the RPM's as of this writing.
This document is written to be applicable to version 7.3 of PostgreSQL,
which is the current version of the RPM's as of this writing. More to the
point, versions prior to 7.3 are not documented here.
Official PostgreSQL Global Development Group RPM's carry a 'PGDG' after the
release number. Other RPMset's as distributed with Linux distributions may
have a different release number and initials.
Official PostgreSQL Global Development Group RPM's have from version 7.1.2
on carried a 'PGDG' after the release number. Other RPMset's as distributed
with Linux distributions may have a different release number and initials.
It is preferable for the distribution-specific set to be the one used, as
the PGDG set is intentionally generic. So, if your distro has a set of RPMs,
use them in preference. If you want to stay up-to-date on the PostgreSQL
core itself, use the PGDG generic set -- but understand that it is a
GENERIC set. In particular, SuSE and RedHat users that use late-model
distributions should definitely use their RPMs. Trond and Reinhard do a
good job keeping them up to date. The Polish(ed) Linux Distribution also
does an excellent job with the PLD RPM version.
GENERIC set.
These RPMs are designed to be LSB-compliant -- if you find this not to be the
case, please let me know by way of the pgsql-ports@postgresql.org mailing
list.
These RPMs no longer support any sort of upgrading process other than that
documented in the regular documentation. That is, you must dump, upgrade,
initdb, and restore your data. The 7.2 to 7.3 migration can be quite
difficult, even to the point of requiring hand-editing of the dumpfile.
Thus, the 7.3 postgresql-server RPM specifically conflicts with prior
versions. The old server subpackage must be removed first, the new package
installed, and the data restored from dump.
A new section on running multiple postmasters has replaced the old upgrade
instructions.
QUICKSTART
-----------------------------------------------------------------------------
If this is an upgrade, please go to section 3, UPGRADING.
If this is a fresh installation, simply start the postmaster using:
/etc/rc.d/init.d/postgresql start (on RedHat and TurboLinux)
For a fresh installation on a recent Red Hat or similar system, a simple
service postgresql start
as root will prepare a new database (initdb), and start a postmaster that
will listen on Unix socket 5432 only. Edit /var/lib/pgsql/data/postgresql.conf
to enable TCP/IP -- see the section on '-i.'
The file /var/lib/pgsql/.bash_profile is now packaged to help with the
setting of environment variables. You may edit this file, and it won't be
@ -77,7 +85,7 @@ CREDITS
Thomas Lockhart
Uncle George
Ryan Kirkpatrick
Trond Eivind Glomsrød
Trond Eivind Glomsrd
Mark Knox
Mike Mascari
Nicolas Huillard
@ -86,42 +94,38 @@ Roger Luethi
Jeff Johnson
Reinhard Max
Peter Eisentraut
A big THANK YOU to Trond, particularly. He has poured an amazing amount of
work into this package, particularly in cleaning up my errors, as well as
getting the contrib package to actually be useful.
Joe Conway
POSTGRESQL RPM PACKAGES AND RATIONALE.
-----------------------------------------------------------------------------
[This section has been edited. See prior versions for older history]
PostgreSQL is a large, multifaceted program, with many clients and options
that all users will not need. So, several subpackages are built. Here is
the list of the current (7.2.1) packages:
The RPMset is packaged in the following subpackages:
postgresql: Some clients and libraries, and documentation
postgresql-server: Server executables and data files
postgresql-devel: Client-side development libraries
postgresql-perl: PERL client module
postgresql-tcl: TCL/TK client libraries and docs
postgresql-python: The PygreSQL client library
postgresql-odbc: Linux ODBC client (not required to use ODBC from Win95)
postgresql-jdbc: JAR of the JDBC client
postgresql-test: The regression tests and associated files.
postgresql-tk: Tk client and pgaccess.
postgresql-tcl: Tcl client and PL ONLY.
postgresql-libs: client shared libraries.
postgresql-docs: extra documentation,such as the SGML doc sources.
postgresql-contrib: The contrib source tree, as well as selected binaries.
postgresql-pl: PL/Perl (if possible on this dist), PL/Python, and PL/Tcl
The postgresql-libs package is required for all installations. Otherwise, a
mix and match installation may be made. The devel package is required to
do any compilation of a program that uses either the client libs or the
server (SPI) interface.
Note that there is no postgresql-perl, postgresql-odbc, postgresql-tk, or
postgresql-plperl package any longer. This is due to these portions being
removed from the PostgreSQL source tarball. The TK client package 'pgaccess'
was the core of the -tk subpackage -- so the pgtksh client was rolled back
into the -tcl package.
PostgreSQL is split up into multiple packages so that users can 'pick and
choose' what pieces are needed, and what dependencies are required.
RPM FILE LOCATIONS.
-----------------------------------------------------------------------------
In compliance with the LSB, the PostgreSQL RPM's install files in a manner
not consistent with much of the PostgreSQL documentation. According to the
In compliance with the Linux FHS, the PostgreSQL RPM's install files in a manner
not consistent with most of the PostgreSQL documentation. According to the
standard PostgreSQL documentation, PostgreSQL is installed under the directory
/usr/local/pgsql, with executables, source, and data existing in various
subdirectories.
@ -142,7 +146,6 @@ Data: /var/lib/pgsql/data
Backup area: /var/lib/pgsql/backup
Templates: /usr/share/pgsql
Procedural Languages: /usr/lib/pgsql
TK client docs: /usr/share/doc/postgresql-tk-x.y.z
Development Headers: /usr/include/pgsql
Other shared data: /usr/share/pgsql
Regression tests: /usr/lib/pgsql/test/regress (in the -test package)
@ -161,123 +164,31 @@ for you.
These RPM's are meant to be LSB-compliant. If you find errors in them that
cause thembe be non-compliant, please let me know.
UPGRADING.
-----------------------------------------------------------------------------
WARNING: This information is deprecated. Make sure to fully back up
your database files BEFORE upgrading the RPM. Unfortunately, even then
you may have problems -- so be ready to hand-edit dump files.
A pg_upgrade utility is found in the contrib tree -- but it is not really
production quality code. If this lack of easy upgrades bothers you, please
let the developer list (pgsql-hackers@postgresql.org) know about it -- maybe
seamless upgrades can be made a higher prioriy if enough users complain.
Use the following information at your own risk.
CAUTION: While a semi-automatic upgrade process has been implemented, it is
STRONGLY recommended that a full dump of your database (using pg_dumpall) is
performed BEFORE upgrading the RPMs! If you have already done the upgrade
with the RPM, and want to return to your previous version to do the dump,
find the old RPM's and use 'rpm -U --oldpackage' to downgrade.
I cannot overemphasize this precaution.
NOTE: moving your existing data from /var/lib/pgsql to /var/lib/pgsql/data is
not currently automatic -- you will need to do this yourself at this release!
This change occurred between 6.5.3 and 7.0, so upgrading from prior to 7.0 to
7.0 or later might be difficult. The rh-dump script is provided to ease this,
see below.
The single biggest problem with upgrading PostgreSQL RPM's has been the lack
of a reasonably automated upgrade process. PostgreSQL has the property of
the binary on-disk database format changing between major versions (like
between 6.3 and 6.4). However, a change from 6.5 to 6.5.3 does not change
the on-disk format.
This property (feature, misfeature, bug, whatever) has been a known property of
PostgreSQL since before it was called PostgreSQL -- it has always been this
way. However, the means by which an upgrade is performed is not readily
performed in a fully automated fashion, as a "dump-initdb-restore" cycle has
to be performed. This doesn't appear to be too difficult -- however, dumping
the old database requires the old executables -- and, if you've already done
an rpm -U postgresql* (or upgraded from an older version of RedHat and didn't
specifically exclude the postgresql rpms), you no longer have the older
executables to dump your data. And your data is useless (until you reinstall
the old version, that is). All RPM's prior to late releases of version 6.5.
1 have this upgrade issue.
The newest RPM's for PostgreSQL attempt to make your job in upgrading a little
easier. First, during the installation of the new RPM's, a copy is made of
all the executable files and libraries necessary to make a backup of your data.
Second, the initialization script in the new postgresql-server package detects
the version of any database found -- if the version is old, then the startup
of the new version is aborted. However, if no database is found, a new one
is made.
One thing must be remembered -- due to the restructuring of the PostgreSQL
RPM's, you will have to manually select the postgresql-server package if you
want the server -- it is not installed by default in an upgrade. You can either
select it during the upgrade/install, or you can mount your RedHat CD and
install manually with rpm -i.
To facilitate upgrading, the postgresql-dump utility has been provided. Look
at the man page for postgresql-dump to see its usage. All executables to
restore the immediately prior version of the PostgreSQL database are placed in
the directory /usr/lib/pgsql/backup, and are accessed by the postgresql-dump
script. The directory /usr/lib/pgsql/backup is owned by the postgres user --
you can use this directory to hold dump files and preserve directories.
The basic sequence is:
(as user postgres):
postgresql-dump -t /var/lib/pgsql/backup/db.bak -p /var/lib/pgsql/backup/old -d
(you can abort the ASCII dump with 'Q', as it uses more) Then, (as user root):
***** NOTE ***** ***** NOTE *****
The above script is broken. Use "rh-pgdump.sh targetfile" instead, remove the
old databases (/var/lib/pgsql/base) (or safer - move them somewhere else first),
start the database and follow the insert procedure described below.
***** NOTE ***** ***** NOTE *****
service postgresql start
(which will automatically create a new database structure) And finally,
(as user postgres):
psql -e template1 </var/lib/pgsql/backup/db.bak
Once you are satisfied that the data has been restored properly, you may remove
the dump file (/var/lib/pgsql/backup/db.bak) and the preserve directory
(/var/lib/pgsql/backup/old).
EXPLANATION OF STEPS:
MULTIPLE POSTMASTERS
-------------------------------------------------------------------------------
postgresql-dump: dumps the old database structure out, using the postmaster and
the backend saved during the rpm upgrade. This step MUST be done as user
postgres.
The postgresql-server RPM contains an 'initscript' that is used to start the
postmaster. The current version of this script has logic to be able to start
multiple postmasters, with different data areas, listening on different ports,
etc. To use this functionality requires root access.
/etc/rc.d/init.d/postgresql start: initializes the new database structure that
the data from your old version will be restored into, does some sanity
checking, and starts the postmaster. Due to the nature of some of the tasks,
this step must be done as root.
As an example, let us create a secondary postmaster called, creatively enough,
'secondary'. Here are the steps:
1.) create a hard link in /etc/rc.d/init.d (or equivalent location)
to postgresql named 'secondary' : ln postgresql secondary Pick
a name not already used in /etc/rc.d/init.d!
2.) create a file in /etc/sysconfig/pgsql named secondary. This file is
a shell script -- typically you would define PGDATA, PGPORT, and PGOPTS
here. Since $PGDATA/postgresql.conf will override many of these
settings, except PGDATA, you might be surprised on startup.
3.) create the target PGDATA.
4.) Initdb the targe PGDATA as documented in the main documentation.
Automatic initdb may or may not work for you, so a manual one is
preferred. This must be done as user 'postgres'
5.) Edit postgresql.conf to change the port, address, tcpip settings, etc.
6.) Start the postmaster with 'service secondary start'.
psql -e: restores the old database into the new structure created by the
previous step.
NOTE:
-------------------------------------------------------------------------------
If you have added tables, indices, or basically anything to the template1
database which is the default administrative database this script will NOT
upgrade your database. As a matter of fact you will lose your data included
in the template1 database. Please look at www.postgresql.org for information
on upgrading the template1 database. This is a known bug in the PostgreSQL
pg_dump and pg_dumpall utilities.
The above information is considered deprecated. The utilities it mentions
are also considered deprecated and will be removed from a future release of
the RPMset due to the difficulty involved with a dump-restore upgrade and the
hand-editing of dumpfiles that are sometimes necessary.
Note that there may be problems with the standard symlink -- consider this
support experimental at this point in time.
REGRESSION TESTING
-------------------------------------------------------------------------------
@ -316,10 +227,10 @@ STARTING POSTMASTER AUTOMATICALLY AT SYSTEM STARTUP
RedHat Linux uses the System V Init package. A startup script for PostgreSQL
is provided in the server package, as /etc/rc.d/init.d/postgresql. To start
the postmaster, with sanity checking, as root, run
/etc/rc.d/init.d/postgresql start
service postgresql start
to shut postmaster down,
/etc/rc.d/init.d/postgresql stop
There are other parameters to this script -- /etc/rc.d/init.d/postgresql for a
service postgresql stop
There are other parameters to this script -- execute 'service postgresql' for a
listing.
To get this script to run at system startup or any time the system switches into
@ -366,28 +277,22 @@ environment to rebuild the full RPM set.
This release of the RPMset includes the ability to conditionally build
sets of packages. The parameters, their defaults, and the meanings are:
build6x undef #build for RHL 6.x. Define to 1 to build for 6.x,
# undefined otherwise.
#currently, this disables the kerberos, nls, and ssl
# builds, as well as correcting dependencies for 6.x
build6x undef #don't build for Red Hat 6.x. Define it to cause
# other options to be tailored to 6.x.
beta 0 #build with cassert and do not strip the binaries
perl 1 #build the postgresql-perl package.
tcl 1 #build the postgresql-tcl package.
tkpkg 1 #build the postgresql-tk package.
odbc 1 #build the postgresql-odbc package.
jdbc 1 #build the postgresql-jdbc package.
pls 1 #build the postgresql-pl package.
test 1 #build the postgresql-test package.
python 1 #build the postgresql-python package.
pltcl 1 #build the postgresql-pltcl package.
forceplperl 0 #don't force a build of pl/perl over libperl.a
plperl 0 #don't build the postgresql-plperl package.
pltcl 1 #build the pltcl portion of the postgresql-pl package.
plperl 1 #build the plperl portion of the postgresql-pl package.
ssl 1 #use OpenSSL support.
kerberos 1 #use Kerberos 5 support.
nls 1 #build with national language support.
enable_mb 1 #enable multibyte encodings.
pgaccess 1 #build the pgaccess client, part of postgresql-tk.
newintarray 0 #substitute a newer intarray contrib.
pam 1 #build --with-pam
pam 1 #build with PAM support.
To use these defines, invoke a rebuild like this:
rpm --rebuild --define 'perl 0' --define 'tcl 0' --define 'tkpkg 0'\
@ -401,9 +306,11 @@ More of these conditionals will be added in the future.
CONTRIB FILES
-------------------------------------------------------------------------------
The contents of the contrib tree are packaged into the -contrib subpackage
and are compiled and placed into /usr/lib/pgsql/contrib with no further
processing. Please see each directory under contrib for details on how to
install and use.
and are processed with make and make install. There is documentation in
/usr/share/doc/postgresql-contrib-VERSION for these modules. Most of the
modules are in /usr/lib/pgsql for loadable modules, and binaries are in
/usr/bin. In the future these files may be split out, depending upon function
and dependencies.
LOGGING SET UP
-------------------------------------------------------------------------------

3
filter-requires-perl-Pg.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
/usr/lib/rpm/perl.req $* | grep -v 'perl(Pg'

View File

@ -17,7 +17,7 @@
# Changed PGDATA.
#
# Version 7.0.2 Trond Eivind Glomsrød <teg@redhat.com>
# Version 7.0.2 Trond Eivind Glomsrd <teg@redhat.com>
# use functions, add conditional restart
# Version 7.0.3 Lamar Owen <lamar@postgresql.org>
@ -28,7 +28,7 @@
# Version 7.1 Release Candidate Lamar Owen <lamar@postgresql.org>
# initdb parameters have changed.
# Version 7.1.2 Trond Eivind Glomsrød <teg@redhat.com>
# Version 7.1.2 Trond Eivind Glomsrd <teg@redhat.com>
# Specify shell for su
# Handle stop better - kill unwanted output, make it wait until the database is ready
# Handle locales slightly differently - always using "C" isn't a valid option
@ -48,8 +48,11 @@
# Tested the $? return for the stop script -- it does in fact propagate.
# TODO: multiple postmasters.
# PGVERSION is: (note that PGVERSION is the major: 7.2.1 -> PGVERSION 7.2)
PGVERSION=7.2
# VErsion 7.3 Lamar OWen <lamar.owen@ramifordistat.net>
# Multiple postmasters, courtesy Karl DeBisschop
# PGVERSION is:
PGVERSION=7.3
# Source function library.
INITD=/etc/rc.d/init.d
@ -61,30 +64,40 @@ TYPESET=`typeset -f|grep "declare"`
# Get config.
. /etc/sysconfig/network
# Find the name of the script
NAME=`basename $0`
# Set defaults for port and database directory
PGPORT=5432
export PGDATA=/var/lib/pgsql
if [ -f $PGDATA/PG_VERSION ] && [ -d $PGDATA/base/template1 ]
then
echo "Using old-style directory structure"
else
export PGDATA=/var/lib/pgsql/data
fi
# Override defaults from /etc/sysconfig/pgsql if file is present
[ -f /etc/sysconfig/pgsql/${NAME} ] && . /etc/sysconfig/pgsql/${NAME}
export PGDATA
export PGPORT
export PGOPTS
# Check that networking is up.
# Pretty much need it for postmaster.
[ "${NETWORKING}" = "no" ] && exit 0
[ -f /usr/bin/postmaster ] || exit 0
start(){
PSQL_START=$"Starting postgresql service: "
# Check for older PGDATA location.
if [ -f /var/lib/pgsql/PG_VERSION ] && [ -d /var/lib/pgsql/base/template1 ]
then
export PGDATA=/var/lib/pgsql
else
export PGDATA=/var/lib/pgsql/data
fi
PSQL_START=$"Starting ${NAME} service: "
# Check for the PGDATA structure
if [ -f $PGDATA/PG_VERSION ] && [ -d $PGDATA/base ]
then
# Check version of existing PGDATA
if [ `cat $PGDATA/PG_VERSION` != '7.2' ]
if [ `cat $PGDATA/PG_VERSION` != '7.3' ]
then
SYSDOCDIR="(Your System's documentation directory)"
if [ -d /usr/doc/postgresql-$PGVERSION ]
@ -125,6 +138,7 @@ start(){
then
mkdir -p $PGDATA
chown postgres.postgres $PGDATA
chmod go-rwx $PGDATA
fi
# Make sure the locale from the initdb is preserved for later startups...
[ -f /etc/sysconfig/i18n ] && cp /etc/sysconfig/i18n $PGDATA/../initdb.i18n
@ -133,29 +147,31 @@ start(){
# Is expanded this early to be used in the command su runs
echo "export LANG LC_ALL LC_CTYPE LC_COLLATE LC_NUMERIC LC_CTYPE LC_TIME" >> $PGDATA/../initdb.i18n
# Initialize the database
su -l postgres -s /bin/sh -c "/usr/bin/initdb --pgdata=/var/lib/pgsql/data > /dev/null 2>&1" < /dev/null
su -l postgres -s /bin/sh -c "/usr/bin/initdb --pgdata=$PGDATA > /dev/null 2>&1" < /dev/null
[ -f $PGDATA/PG_VERSION ] && echo_success
[ ! -f $PGDATA/PG_VERSION ] && echo_failure
echo
fi
# Check for postmaster already running...
pid=`pidof -s postmaster`
if [ $pid ]
# note that pg_ctl only looks at the data structures in PGDATA
# you really do need the pidof()
pid=`pidof -s /usr/bin/postmaster`
if [ $pid ] && /usr/bin/pg_ctl status -D $PGDATA > /dev/null 2>&1
then
echo $"Postmaster already running."
else
#all systems go -- remove any stale lock files
rm -f /tmp/.s.PGSQL.* > /dev/null
rm -f /tmp/.s.PGSQL.${PGPORT} > /dev/null
echo -n "$PSQL_START"
su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $PGDATA -p /usr/bin/postmaster start > /dev/null 2>&1" < /dev/null
su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $PGDATA -p /usr/bin/postmaster -o '-p ${PGPORT}' start > /dev/null 2>&1" < /dev/null
sleep 1
pid=`pidof -s postmaster`
pid=`pidof -s /usr/bin/postmaster`
if [ $pid ]
then
success "$PSQL_START"
touch /var/lock/subsys/postgresql
echo $pid > /var/run/postmaster.pid
touch /var/lock/subsys/${NAME}
echo $pid > /var/run/postmaster.${PGPORT}.pid
echo
else
failure "$PSQL_START"
@ -165,24 +181,18 @@ start(){
}
stop(){
echo -n $"Stopping postgresql service: "
# Check for older PGDATA location.
if [ -f /var/lib/pgsql/PG_VERSION ] && [ -d /var/lib/pgsql/base/template1 ]
then
export PGDATA=/var/lib/pgsql
else
export PGDATA=/var/lib/pgsql/data
fi
echo -n $"Stopping ${NAME} service: "
su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl stop -D $PGDATA -s -m fast" > /dev/null 2>&1
ret=$?
if [ $ret -eq 0 ]; then
echo_success
else
echo_failure
fi
ret=$?
if [ $ret -eq 0 ]
then
echo_success
else
echo_failure
fi
echo
rm -f /var/run/postmaster.pid
rm -f /var/lock/subsys/postgresql
rm -f /var/run/postmaster.${PGPORT}.pid
rm -f /var/lock/subsys/${NAME}
}
restart(){
@ -191,7 +201,7 @@ restart(){
}
condrestart(){
[ -e /var/lock/subsys/postgresql ] && restart || :
[ -e /var/lock/subsys/${NAME} ] && restart
}
reload(){

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1 @@
5e9beca9c039be1ded2e51a0edcd9fba migration-scripts.tar.gz
b767f204a91097f1b3a6d2b4c39eac7a postgresql-7.2.4.tar.gz
3d2e8223f6bb715659cbecedeae81ccc postgresql-dump.1.gz
23d2762571e8c5bb21eee08aab968ccb postgresql-7.3.2.tar.gz