Convert to systemd startup support
This commit is contained in:
parent
7de7a32f91
commit
72893f4818
@ -36,18 +36,24 @@ QUICKSTART
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
For a fresh installation, you will need to initialize the cluster first. Run:
|
For a fresh installation, you will need to initialize the cluster first. Run:
|
||||||
|
|
||||||
service postgresql initdb
|
postgresql-setup initdb
|
||||||
|
|
||||||
as root, and it will prepare a new database cluster for you. Then you will
|
as root, and it will prepare a new database cluster for you. Then you will
|
||||||
need to start PostgreSQL. Again as root, run:
|
need to start PostgreSQL. Again as root, run:
|
||||||
|
|
||||||
service postgresql start
|
systemctl start postgresql.service
|
||||||
|
|
||||||
This command will start a postmaster that willl listen on localhost and Unix
|
This command will start a postmaster that willl listen on localhost and Unix
|
||||||
socket 5432 only. Edit /var/lib/pgsql/data/postgresql.conf and pg_hba.conf
|
socket 5432 only. Edit /var/lib/pgsql/data/postgresql.conf and pg_hba.conf
|
||||||
if you want to allow remote access -- see the section on Grand Unified
|
if you want to allow remote access -- see the section on Grand Unified
|
||||||
Configuration.
|
Configuration.
|
||||||
|
|
||||||
|
You will probably also want to do
|
||||||
|
|
||||||
|
systemctl enable postgresql.service
|
||||||
|
|
||||||
|
so that the postmaster is automatically started during future reboots.
|
||||||
|
|
||||||
The file /var/lib/pgsql/.bash_profile is packaged to help with the
|
The file /var/lib/pgsql/.bash_profile is packaged to help with the
|
||||||
setting of environment variables. You may edit this file, and it won't be
|
setting of environment variables. You may edit this file, and it won't be
|
||||||
overwritten during an upgrade. However, enhancements and bugfixes may
|
overwritten during an upgrade. However, enhancements and bugfixes may
|
||||||
@ -78,15 +84,15 @@ In some major releases, the RPMs also support in-place upgrade from the
|
|||||||
immediately previous major release. Currently, you can upgrade in-place
|
immediately previous major release. Currently, you can upgrade in-place
|
||||||
from 8.4.x to 9.0.x. This is much faster than a dump and reload.
|
from 8.4.x to 9.0.x. This is much faster than a dump and reload.
|
||||||
To do an in-place upgrade:
|
To do an in-place upgrade:
|
||||||
* shut down the old postmaster
|
* shut down the old postmaster ("systemctl stop postgresql.service")
|
||||||
* optionally make a backup of /var/lib/pgsql/data/
|
* optionally make a backup of /var/lib/pgsql/data/
|
||||||
* install the new version's RPMs (install all the ones you had before,
|
* install the new version's RPMs (install all the ones you had before,
|
||||||
plus postgresql-upgrade)
|
plus postgresql-upgrade)
|
||||||
* as root, run "service postgresql upgrade"
|
* as root, run "postgresql-setup upgrade"
|
||||||
* update the configuration files /var/lib/pgsql/data/*.conf with any
|
* update the configuration files /var/lib/pgsql/data/*.conf with any
|
||||||
customizations you had before (your old configuration files are in
|
customizations you had before (your old configuration files are in
|
||||||
/var/lib/pgsql/data-old/)
|
/var/lib/pgsql/data-old/)
|
||||||
* as root, run "service postgresql start"
|
* as root, run "systemctl start postgresql.service"
|
||||||
* postgresql-upgrade can be removed after the update is complete
|
* postgresql-upgrade can be removed after the update is complete
|
||||||
|
|
||||||
NOTE: The in-place upgrade process is new and relatively poorly tested,
|
NOTE: The in-place upgrade process is new and relatively poorly tested,
|
||||||
@ -163,24 +169,29 @@ mailing list.
|
|||||||
|
|
||||||
MULTIPLE POSTMASTERS
|
MULTIPLE POSTMASTERS
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
The postgresql-server RPM contains an 'initscript' that is used to start the
|
The postgresql-server RPM contains a systemd "unit" file, postgresql.service,
|
||||||
postmaster. The current version of this script has logic to be able to start
|
that is used to start the PostgreSQL postmaster. If you need to run multiple
|
||||||
multiple postmasters, with different data areas, listening on different ports,
|
postmasters on one machine, you should clone this file and modify it as
|
||||||
etc. To use this functionality requires root access.
|
necessary.
|
||||||
|
|
||||||
As an example, let us create a secondary postmaster called, creatively enough,
|
As an example, let us create a secondary postmaster called, creatively enough,
|
||||||
'secondary'. Here are the steps:
|
'secondary'. Here are the steps:
|
||||||
1.) create a hard link in /etc/rc.d/init.d (or equivalent location)
|
1.) Copy /lib/systemd/system/postgresql.service to
|
||||||
to postgresql named 'secondary' : ln postgresql secondary Pick
|
/etc/systemd/system/secondary.service.
|
||||||
a name not already used in /etc/rc.d/init.d!
|
(Note that user-created unit files must go into /etc not /lib!)
|
||||||
2.) create a file in /etc/sysconfig/pgsql named secondary. This file is
|
2.) Edit /etc/systemd/system/secondary.service to change the PGDATA and
|
||||||
a shell script -- typically you would define PGDATA, PGPORT, and PGOPTS
|
PGPORT settings so they don't conflict with any other postmaster.
|
||||||
here. Since $PGDATA/postgresql.conf will override many of these
|
3.) Create the target PGDATA directory.
|
||||||
settings, except PGDATA, you might be surprised on startup.
|
4.) Initdb the target PGDATA with 'postgresql-setup initdb secondary'.
|
||||||
3.) create the target PGDATA.
|
5.) Edit postgresql.conf in the target PGDATA to change settings as needed.
|
||||||
4.) Initdb the target PGDATA with 'service secondary initdb'.
|
6.) Start the new postmaster with 'systemctl start secondary.service'.
|
||||||
5.) Edit postgresql.conf to change the port, address, tcpip settings, etc.
|
You will probably also want to do 'systemctl enable secondary.service'
|
||||||
6.) Start the postmaster with 'service secondary start'.
|
so that the new postmaster is automatically started in future reboots.
|
||||||
|
|
||||||
|
When doing a major-version upgrade of a secondary postmaster, mention the
|
||||||
|
service name in the postgresql-setup command, for example 'postgresql-setup
|
||||||
|
upgrade secondary'. This will let postgresql-setup find the correct data
|
||||||
|
directory from the service file.
|
||||||
|
|
||||||
REGRESSION TESTING
|
REGRESSION TESTING
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -189,10 +200,11 @@ regression tests. These tests stress your database installation and produce
|
|||||||
results that give you assurances that the installation is complete, and that
|
results that give you assurances that the installation is complete, and that
|
||||||
your database machine is up to the task.
|
your database machine is up to the task.
|
||||||
|
|
||||||
To run the regression tests under the RPM installation, make sure that
|
To run the regression tests under the RPM installation, make sure that the
|
||||||
postmaster has been started (if not, su to root and do "service postgresql
|
postmaster has been started (if not, su to root and do "systemctl start
|
||||||
start"), cd to /usr/lib/pgsql/test/regress (or /usr/lib64/pgsql/test/regress),
|
postgresql.service"), cd to /usr/lib/pgsql/test/regress (or
|
||||||
su to postgres, and execute "make check".
|
/usr/lib64/pgsql/test/regress on a 64-bit machine), su to postgres,
|
||||||
|
and execute "make check".
|
||||||
This command will start the regression tests and will both show the
|
This command will start the regression tests and will both show the
|
||||||
results to the screen and store the results in the file regress.out.
|
results to the screen and store the results in the file regress.out.
|
||||||
|
|
||||||
@ -207,24 +219,20 @@ script.
|
|||||||
|
|
||||||
STARTING POSTMASTER AUTOMATICALLY AT SYSTEM STARTUP
|
STARTING POSTMASTER AUTOMATICALLY AT SYSTEM STARTUP
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Fedora / Red Hat / CentOS use the System V Init package. A startup
|
Fedora / Red Hat / CentOS use the systemd package to manage server startup.
|
||||||
script for PostgreSQL is provided in the server package, as
|
A systemd unit file for PostgreSQL is provided in the server package, as
|
||||||
/etc/rc.d/init.d/postgresql. To start the postmaster manually,
|
/lib/systemd/system/postgresql.service. To start the postmaster manually,
|
||||||
as root run
|
as root run
|
||||||
service postgresql start
|
systemctl start postgresql.service
|
||||||
To shut the postmaster down,
|
To shut the postmaster down,
|
||||||
service postgresql stop
|
systemctl stop postgresql.service
|
||||||
There are other possible commands to this script -- execute
|
These two commands only change the postmaster's current status. If you
|
||||||
'service postgresql' for a listing.
|
want the postmaster to be started automatically during future system startups,
|
||||||
|
run
|
||||||
To get this script to run at system startup or any time the system switches
|
systemctl enable postgresql.service
|
||||||
into runlevels 3, 4, or 5, run:
|
To undo that again,
|
||||||
chkconfig --add postgresql
|
systemctl disable postgresql.service
|
||||||
chkconfig --level 345 postgresql on
|
See "man systemctl" for other possible subcommands.
|
||||||
and the proper symlinks will be created. See the chkconfig man page for more
|
|
||||||
information. Note that this is manual -- while the startup script can include
|
|
||||||
tags to allow chkconfig to automatically perform the symlinking, this is not
|
|
||||||
done at this time.
|
|
||||||
|
|
||||||
GRAND UNIFIED CONFIGURATION (GUC) FILE
|
GRAND UNIFIED CONFIGURATION (GUC) FILE
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -232,7 +240,7 @@ The PostgreSQL server has many tunable parameters -- the file
|
|||||||
/var/lib/pgsql/data/postgresql.conf is the master configuration file for the
|
/var/lib/pgsql/data/postgresql.conf is the master configuration file for the
|
||||||
whole system.
|
whole system.
|
||||||
|
|
||||||
The RPM ships with the default file -- you will need to tune the
|
The RPM ships with a mostly-default file -- you will need to tune the
|
||||||
parameters for your installation. In particular, you might want to allow
|
parameters for your installation. In particular, you might want to allow
|
||||||
nonlocal TCP/IP socket connections -- in order to allow these, you will need
|
nonlocal TCP/IP socket connections -- in order to allow these, you will need
|
||||||
to edit the postgresql.conf file. The line in question contains the string
|
to edit the postgresql.conf file. The line in question contains the string
|
||||||
|
33
postgresql-pgctl-timeout.patch
Normal file
33
postgresql-pgctl-timeout.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
Back-port a PG 9.1 logic change to allow "pg_ctl start -w" to fail in
|
||||||
|
less than the -t timeout interval if the postmaster has clearly failed.
|
||||||
|
This is the minimum needed to make it sane to use this method of launching
|
||||||
|
the postmaster from a systemd service file. 9.1 will make this area
|
||||||
|
considerably more robust.
|
||||||
|
|
||||||
|
|
||||||
|
diff -Naur postgresql-9.0.4.orig/src/bin/pg_ctl/pg_ctl.c postgresql-9.0.4/src/bin/pg_ctl/pg_ctl.c
|
||||||
|
--- postgresql-9.0.4.orig/src/bin/pg_ctl/pg_ctl.c 2011-04-14 23:15:53.000000000 -0400
|
||||||
|
+++ postgresql-9.0.4/src/bin/pg_ctl/pg_ctl.c 2011-07-27 18:32:05.547066731 -0400
|
||||||
|
@@ -538,6 +538,22 @@
|
||||||
|
#endif
|
||||||
|
print_msg(".");
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * The postmaster should create postmaster.pid very soon after
|
||||||
|
+ * being started. If it's not there after we've waited 5 or more
|
||||||
|
+ * seconds, assume startup failed and give up waiting. (This
|
||||||
|
+ * won't cover cases where the postmaster crashes after creating
|
||||||
|
+ * the file, nor where there's a pre-existing postmaster, but
|
||||||
|
+ * it's better than nothing.)
|
||||||
|
+ */
|
||||||
|
+ if (i >= 5)
|
||||||
|
+ {
|
||||||
|
+ struct stat statbuf;
|
||||||
|
+
|
||||||
|
+ if (stat(pid_file, &statbuf) != 0)
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
pg_usleep(1000000); /* 1 sec */
|
||||||
|
}
|
||||||
|
}
|
199
postgresql-setup
Normal file
199
postgresql-setup
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# postgresql-setup Initialization and upgrade operations for PostgreSQL
|
||||||
|
|
||||||
|
# PGVERSION is the full package version, e.g., 9.0.2
|
||||||
|
# Note: the specfile inserts the correct value during package build
|
||||||
|
PGVERSION=xxxx
|
||||||
|
# PGENGINE is the directory containing the postmaster executable
|
||||||
|
# Note: the specfile inserts the correct value during package build
|
||||||
|
PGENGINE=xxxx
|
||||||
|
# PREVMAJORVERSION is the previous major version, e.g., 8.4, for upgrades
|
||||||
|
# Note: the specfile inserts the correct value during package build
|
||||||
|
PREVMAJORVERSION=xxxx
|
||||||
|
# PREVPGENGINE is the directory containing the previous postmaster executable
|
||||||
|
# Note: the specfile inserts the correct value during package build
|
||||||
|
PREVPGENGINE=xxxx
|
||||||
|
|
||||||
|
# Absorb configuration settings from the specified systemd service file,
|
||||||
|
# or the default "postgresql" service if not specified
|
||||||
|
SERVICE_NAME="$2"
|
||||||
|
if [ x"$SERVICE_NAME" = x ]
|
||||||
|
then
|
||||||
|
SERVICE_NAME=postgresql
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "/etc/systemd/system/${SERVICE_NAME}.service" ]
|
||||||
|
then
|
||||||
|
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||||
|
elif [ -f "/lib/systemd/system/${SERVICE_NAME}.service" ]
|
||||||
|
then
|
||||||
|
SERVICE_FILE="/lib/systemd/system/${SERVICE_NAME}.service"
|
||||||
|
else
|
||||||
|
echo "Could not find systemd unit file ${SERVICE_NAME}.service"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get port number and data directory from the service file
|
||||||
|
PGPORT=`sed -n 's/Environment=PGPORT=//p' "${SERVICE_FILE}"`
|
||||||
|
PGDATA=`sed -n 's/Environment=PGDATA=//p' "${SERVICE_FILE}"`
|
||||||
|
|
||||||
|
# Log file for initdb
|
||||||
|
PGLOG=/var/lib/pgsql/initdb.log
|
||||||
|
|
||||||
|
# Log file for pg_upgrade
|
||||||
|
PGUPLOG=/var/lib/pgsql/pgupgrade.log
|
||||||
|
|
||||||
|
export PGPORT
|
||||||
|
export PGDATA
|
||||||
|
|
||||||
|
# For SELinux we need to use 'runuser' not 'su'
|
||||||
|
if [ -x /sbin/runuser ]
|
||||||
|
then
|
||||||
|
SU=runuser
|
||||||
|
else
|
||||||
|
SU=su
|
||||||
|
fi
|
||||||
|
|
||||||
|
script_result=0
|
||||||
|
|
||||||
|
# code shared between initdb and upgrade actions
|
||||||
|
perform_initdb(){
|
||||||
|
if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]
|
||||||
|
then
|
||||||
|
mkdir -p "$PGDATA" || return 1
|
||||||
|
chown postgres:postgres "$PGDATA"
|
||||||
|
chmod go-rwx "$PGDATA"
|
||||||
|
fi
|
||||||
|
# Clean up SELinux tagging for PGDATA
|
||||||
|
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"
|
||||||
|
|
||||||
|
# Create the initdb log file if needed
|
||||||
|
if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
|
||||||
|
then
|
||||||
|
touch "$PGLOG" || return 1
|
||||||
|
chown postgres:postgres "$PGLOG"
|
||||||
|
chmod go-rwx "$PGLOG"
|
||||||
|
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Initialize the database
|
||||||
|
$SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null
|
||||||
|
|
||||||
|
# Create directory for postmaster log files
|
||||||
|
mkdir "$PGDATA/pg_log"
|
||||||
|
chown postgres:postgres "$PGDATA/pg_log"
|
||||||
|
chmod go-rwx "$PGDATA/pg_log"
|
||||||
|
|
||||||
|
if [ -f "$PGDATA/PG_VERSION" ]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
initdb(){
|
||||||
|
if [ -f "$PGDATA/PG_VERSION" ]
|
||||||
|
then
|
||||||
|
echo $"Data directory is not empty!"
|
||||||
|
echo
|
||||||
|
script_result=1
|
||||||
|
else
|
||||||
|
echo -n $"Initializing database ... "
|
||||||
|
if perform_initdb
|
||||||
|
then
|
||||||
|
echo $"OK"
|
||||||
|
else
|
||||||
|
echo $"failed, see $PGLOG"
|
||||||
|
script_result=1
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
upgrade(){
|
||||||
|
# must see previous version in PG_VERSION
|
||||||
|
if [ ! -f "$PGDATA/PG_VERSION" -o \
|
||||||
|
x`cat "$PGDATA/PG_VERSION"` != x"$PREVMAJORVERSION" ]
|
||||||
|
then
|
||||||
|
echo
|
||||||
|
echo $"Cannot upgrade because database is not of version $PREVMAJORVERSION."
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -x "$PGENGINE/pg_upgrade" ]
|
||||||
|
then
|
||||||
|
echo
|
||||||
|
echo $"Please install the postgresql-upgrade RPM."
|
||||||
|
echo
|
||||||
|
exit 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure service is stopped
|
||||||
|
# Using service here makes it work both with systemd and other init systems
|
||||||
|
service "$SERVICE_NAME" stop
|
||||||
|
|
||||||
|
# Set up log file for pg_upgrade
|
||||||
|
rm -f "$PGUPLOG"
|
||||||
|
touch "$PGUPLOG" || exit 1
|
||||||
|
chown postgres:postgres "$PGUPLOG"
|
||||||
|
chmod go-rwx "$PGUPLOG"
|
||||||
|
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGUPLOG"
|
||||||
|
|
||||||
|
# Move old DB to PGDATAOLD
|
||||||
|
PGDATAOLD="${PGDATA}-old"
|
||||||
|
rm -rf "$PGDATAOLD"
|
||||||
|
mv "$PGDATA" "$PGDATAOLD" || exit 1
|
||||||
|
|
||||||
|
echo -n $"Upgrading database: "
|
||||||
|
|
||||||
|
# Create empty new-format database
|
||||||
|
if perform_initdb
|
||||||
|
then
|
||||||
|
# Do the upgrade
|
||||||
|
$SU -l postgres -c "$PGENGINE/pg_upgrade \
|
||||||
|
'--old-bindir=$PREVPGENGINE' \
|
||||||
|
'--new-bindir=$PGENGINE' \
|
||||||
|
'--old-datadir=$PGDATAOLD' \
|
||||||
|
'--new-datadir=$PGDATA' \
|
||||||
|
--link \
|
||||||
|
'--old-port=$PGPORT' '--new-port=$PGPORT' \
|
||||||
|
--user=postgres" >> "$PGUPLOG" 2>&1 < /dev/null
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
# pg_upgrade failed
|
||||||
|
script_result=1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# initdb failed
|
||||||
|
script_result=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $script_result -eq 0 ]
|
||||||
|
then
|
||||||
|
echo $"OK"
|
||||||
|
else
|
||||||
|
# Clean up after failure
|
||||||
|
rm -rf "$PGDATA"
|
||||||
|
mv "$PGDATAOLD" "$PGDATA"
|
||||||
|
|
||||||
|
echo $"failed"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
echo $"See $PGUPLOG for details."
|
||||||
|
}
|
||||||
|
|
||||||
|
# See how we were called.
|
||||||
|
case "$1" in
|
||||||
|
initdb)
|
||||||
|
initdb
|
||||||
|
;;
|
||||||
|
upgrade)
|
||||||
|
upgrade
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo $"Usage: $0 {initdb|upgrade} [ service_name ]"
|
||||||
|
exit 2
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit $script_result
|
337
postgresql.init
337
postgresql.init
@ -1,337 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# postgresql This is the init script for starting up the PostgreSQL
|
|
||||||
# server.
|
|
||||||
#
|
|
||||||
# This script is slightly unusual in that the name of the daemon (postmaster)
|
|
||||||
# is not the same as the name of the subsystem (postgresql)
|
|
||||||
#
|
|
||||||
# chkconfig: - 64 36
|
|
||||||
# description: PostgreSQL database server.
|
|
||||||
# processname: postmaster
|
|
||||||
# pidfile: /var/run/postmaster.PORT.pid
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: postgresql
|
|
||||||
# Required-Start: $local_fs $remote_fs $network $named $syslog $time
|
|
||||||
# Required-Stop: $local_fs $remote_fs $network $named $syslog $time
|
|
||||||
# Short-Description: start and stop PostgreSQL server
|
|
||||||
# Description: PostgreSQL database server
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
# PGVERSION is the full package version, e.g., 9.0.2
|
|
||||||
# Note: the specfile inserts the correct value during package build
|
|
||||||
PGVERSION=xxxx
|
|
||||||
# PGMAJORVERSION is major version, e.g., 9.0 (this should match PG_VERSION)
|
|
||||||
PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'`
|
|
||||||
# PREVMAJORVERSION is the previous major version, e.g., 8.4, for upgrades
|
|
||||||
# Note: the specfile inserts the correct value during package build
|
|
||||||
PREVMAJORVERSION=xxxx
|
|
||||||
# PREVPGENGINE is the directory containing the previous postmaster executable
|
|
||||||
# Note: the specfile inserts the correct value during package build
|
|
||||||
PREVPGENGINE=xxxx
|
|
||||||
# PGDOCDIR is the directory containing the package's documentation
|
|
||||||
# Note: the specfile inserts the correct value during package build
|
|
||||||
PGDOCDIR=xxxx
|
|
||||||
|
|
||||||
# Source function library.
|
|
||||||
. /etc/rc.d/init.d/functions
|
|
||||||
|
|
||||||
# Get network config.
|
|
||||||
. /etc/sysconfig/network
|
|
||||||
|
|
||||||
# Find the name of the script
|
|
||||||
NAME=`basename $0`
|
|
||||||
if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ]
|
|
||||||
then
|
|
||||||
NAME=${NAME:3}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For SELinux we need to use 'runuser' not 'su'
|
|
||||||
if [ -x /sbin/runuser ]
|
|
||||||
then
|
|
||||||
SU=runuser
|
|
||||||
else
|
|
||||||
SU=su
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Set defaults for configuration variables
|
|
||||||
PGENGINE=/usr/bin
|
|
||||||
PGPORT=5432
|
|
||||||
PGDATA=/var/lib/pgsql/data
|
|
||||||
PGLOG=/var/lib/pgsql/pgstartup.log
|
|
||||||
# Value to set as postmaster process's oom_adj
|
|
||||||
PG_OOM_ADJ=-17
|
|
||||||
|
|
||||||
# Override defaults from /etc/sysconfig/pgsql if file is present
|
|
||||||
[ -f /etc/sysconfig/pgsql/${NAME} ] && . /etc/sysconfig/pgsql/${NAME}
|
|
||||||
|
|
||||||
export PGDATA
|
|
||||||
export PGPORT
|
|
||||||
|
|
||||||
lockfile="/var/lock/subsys/${NAME}"
|
|
||||||
pidfile="/var/run/postmaster.${PGPORT}.pid"
|
|
||||||
|
|
||||||
script_result=0
|
|
||||||
|
|
||||||
start(){
|
|
||||||
[ -x "$PGENGINE/postmaster" ] || exit 5
|
|
||||||
|
|
||||||
PSQL_START=$"Starting ${NAME} service: "
|
|
||||||
|
|
||||||
# Make sure startup-time log file is valid
|
|
||||||
if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
|
|
||||||
then
|
|
||||||
touch "$PGLOG" || exit 4
|
|
||||||
chown postgres:postgres "$PGLOG"
|
|
||||||
chmod go-rwx "$PGLOG"
|
|
||||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for the PGDATA structure
|
|
||||||
if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ]
|
|
||||||
then
|
|
||||||
# Check version of existing PGDATA
|
|
||||||
if [ x`cat "$PGDATA/PG_VERSION"` = x"$PGMAJORVERSION" ]
|
|
||||||
then
|
|
||||||
: A-OK
|
|
||||||
elif [ x`cat "$PGDATA/PG_VERSION"` = x"$PREVMAJORVERSION" ]
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo $"An old version of the database format was found."
|
|
||||||
echo $"Use \"service postgresql upgrade\" to upgrade to version $PGMAJORVERSION."
|
|
||||||
echo $"See $PGDOCDIR/README.rpm-dist for more information."
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo
|
|
||||||
echo $"An old version of the database format was found."
|
|
||||||
echo $"You need to dump and reload before using PostgreSQL $PGMAJORVERSION."
|
|
||||||
echo $"See $PGDOCDIR/README.rpm-dist for more information."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# No existing PGDATA! Warn the user to initdb it.
|
|
||||||
echo
|
|
||||||
echo $"$PGDATA is missing. Use \"service postgresql initdb\" to initialize the cluster first."
|
|
||||||
echo_failure
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -n "$PSQL_START"
|
|
||||||
test x"$PG_OOM_ADJ" != x && echo "$PG_OOM_ADJ" > /proc/self/oom_adj
|
|
||||||
$SU -l postgres -c "$PGENGINE/postmaster -p '$PGPORT' -D '$PGDATA' ${PGOPTS} &" >> "$PGLOG" 2>&1 < /dev/null
|
|
||||||
sleep 2
|
|
||||||
pid=`head -n 1 "$PGDATA/postmaster.pid" 2>/dev/null`
|
|
||||||
if [ "x$pid" != x ]
|
|
||||||
then
|
|
||||||
success "$PSQL_START"
|
|
||||||
touch "$lockfile"
|
|
||||||
echo $pid > "$pidfile"
|
|
||||||
echo
|
|
||||||
else
|
|
||||||
failure "$PSQL_START"
|
|
||||||
echo
|
|
||||||
script_result=1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
stop(){
|
|
||||||
echo -n $"Stopping ${NAME} service: "
|
|
||||||
if [ -e "$lockfile" ]
|
|
||||||
then
|
|
||||||
$SU -l postgres -c "$PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast" > /dev/null 2>&1 < /dev/null
|
|
||||||
ret=$?
|
|
||||||
if [ $ret -eq 0 ]
|
|
||||||
then
|
|
||||||
echo_success
|
|
||||||
rm -f "$pidfile"
|
|
||||||
rm -f "$lockfile"
|
|
||||||
else
|
|
||||||
echo_failure
|
|
||||||
script_result=1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# not running; per LSB standards this is "ok"
|
|
||||||
echo_success
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
restart(){
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
}
|
|
||||||
|
|
||||||
condrestart(){
|
|
||||||
[ -e "$lockfile" ] && restart || :
|
|
||||||
}
|
|
||||||
|
|
||||||
reload(){
|
|
||||||
$SU -l postgres -c "$PGENGINE/pg_ctl reload -D '$PGDATA' -s" > /dev/null 2>&1 < /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
# code shared between initdb and upgrade actions
|
|
||||||
perform_initdb(){
|
|
||||||
if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]
|
|
||||||
then
|
|
||||||
mkdir -p "$PGDATA" || return 1
|
|
||||||
chown postgres:postgres "$PGDATA"
|
|
||||||
chmod go-rwx "$PGDATA"
|
|
||||||
fi
|
|
||||||
# Clean up SELinux tagging for PGDATA
|
|
||||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"
|
|
||||||
|
|
||||||
# Make sure the startup-time log file is OK, too
|
|
||||||
if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
|
|
||||||
then
|
|
||||||
touch "$PGLOG" || return 1
|
|
||||||
chown postgres:postgres "$PGLOG"
|
|
||||||
chmod go-rwx "$PGLOG"
|
|
||||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Initialize the database
|
|
||||||
$SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null
|
|
||||||
|
|
||||||
# Create directory for postmaster log
|
|
||||||
mkdir "$PGDATA/pg_log"
|
|
||||||
chown postgres:postgres "$PGDATA/pg_log"
|
|
||||||
chmod go-rwx "$PGDATA/pg_log"
|
|
||||||
|
|
||||||
if [ -f "$PGDATA/PG_VERSION" ]
|
|
||||||
then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
initdb(){
|
|
||||||
if [ -f "$PGDATA/PG_VERSION" ]
|
|
||||||
then
|
|
||||||
echo -n $"Data directory is not empty!"
|
|
||||||
echo_failure
|
|
||||||
echo
|
|
||||||
script_result=1
|
|
||||||
else
|
|
||||||
echo -n $"Initializing database: "
|
|
||||||
if perform_initdb
|
|
||||||
then
|
|
||||||
echo_success
|
|
||||||
else
|
|
||||||
echo_failure
|
|
||||||
script_result=1
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
upgrade(){
|
|
||||||
# must see previous version in PG_VERSION
|
|
||||||
if [ ! -f "$PGDATA/PG_VERSION" -o \
|
|
||||||
x`cat "$PGDATA/PG_VERSION"` != x"$PREVMAJORVERSION" ]
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo $"Cannot upgrade because database is not of version $PREVMAJORVERSION."
|
|
||||||
echo_failure
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ ! -x "$PGENGINE/pg_upgrade" ]
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo $"Please install the postgresql-upgrade RPM."
|
|
||||||
echo_failure
|
|
||||||
echo
|
|
||||||
exit 5
|
|
||||||
fi
|
|
||||||
# Make sure service is stopped
|
|
||||||
stop
|
|
||||||
|
|
||||||
echo -n $"Upgrading database: "
|
|
||||||
|
|
||||||
# Set up log file for pg_upgrade
|
|
||||||
PGUPLOG=/var/lib/pgsql/pgupgrade.log
|
|
||||||
rm -f "$PGUPLOG"
|
|
||||||
touch "$PGUPLOG" || exit 1
|
|
||||||
chown postgres:postgres "$PGUPLOG"
|
|
||||||
chmod go-rwx "$PGUPLOG"
|
|
||||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGUPLOG"
|
|
||||||
|
|
||||||
# Move old DB to PGDATAOLD
|
|
||||||
PGDATAOLD="${PGDATA}-old"
|
|
||||||
rm -rf "$PGDATAOLD"
|
|
||||||
mv "$PGDATA" "$PGDATAOLD" || exit 1
|
|
||||||
|
|
||||||
# Create empty new-format database
|
|
||||||
if perform_initdb
|
|
||||||
then
|
|
||||||
# Do the upgrade
|
|
||||||
$SU -l postgres -c "$PGENGINE/pg_upgrade \
|
|
||||||
'--old-bindir=$PREVPGENGINE' \
|
|
||||||
'--new-bindir=$PGENGINE' \
|
|
||||||
'--old-datadir=$PGDATAOLD' \
|
|
||||||
'--new-datadir=$PGDATA' \
|
|
||||||
--link \
|
|
||||||
'--old-port=$PGPORT' '--new-port=$PGPORT' \
|
|
||||||
--user=postgres" >> "$PGUPLOG" 2>&1 < /dev/null
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
# pg_upgrade failed
|
|
||||||
script_result=1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# initdb failed
|
|
||||||
script_result=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $script_result -eq 0 ]
|
|
||||||
then
|
|
||||||
echo_success
|
|
||||||
else
|
|
||||||
# Clean up after failure
|
|
||||||
rm -rf "$PGDATA"
|
|
||||||
mv "$PGDATAOLD" "$PGDATA"
|
|
||||||
|
|
||||||
echo_failure
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
echo $"See $PGUPLOG for details."
|
|
||||||
}
|
|
||||||
|
|
||||||
# See how we were called.
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
start
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
stop
|
|
||||||
;;
|
|
||||||
status)
|
|
||||||
status -p "$pidfile" postmaster
|
|
||||||
script_result=$?
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
restart
|
|
||||||
;;
|
|
||||||
condrestart|try-restart)
|
|
||||||
condrestart
|
|
||||||
;;
|
|
||||||
reload)
|
|
||||||
reload
|
|
||||||
;;
|
|
||||||
force-reload)
|
|
||||||
restart
|
|
||||||
;;
|
|
||||||
initdb)
|
|
||||||
initdb
|
|
||||||
;;
|
|
||||||
upgrade)
|
|
||||||
upgrade
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|initdb|upgrade}"
|
|
||||||
exit 2
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit $script_result
|
|
36
postgresql.service
Normal file
36
postgresql.service
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=PostgreSQL database server
|
||||||
|
After=syslog.target
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
|
||||||
|
User=postgres
|
||||||
|
Group=postgres
|
||||||
|
|
||||||
|
# Note: avoid inserting whitespace in these Environment= lines, or you may
|
||||||
|
# break postgresql-setup.
|
||||||
|
|
||||||
|
# Port number for server to listen on
|
||||||
|
Environment=PGPORT=5432
|
||||||
|
|
||||||
|
# Location of database directory
|
||||||
|
Environment=PGDATA=/var/lib/pgsql/data
|
||||||
|
|
||||||
|
# Where to send early-startup messages from the server (before the logging
|
||||||
|
# options of postgresql.conf take effect)
|
||||||
|
StandardOutput=syslog
|
||||||
|
|
||||||
|
# Disable OOM kill on the postmaster
|
||||||
|
OOMScoreAdjust=-1000
|
||||||
|
|
||||||
|
ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
|
||||||
|
ExecStop=/usr/bin/pg_ctl stop -D ${PGDATA} -s -m fast
|
||||||
|
ExecReload=/usr/bin/pg_ctl reload -D ${PGDATA} -s
|
||||||
|
|
||||||
|
# Give a reasonable amount of time for the server to start up/shut down
|
||||||
|
TimeoutSec=300
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
@ -54,7 +54,10 @@ Summary: PostgreSQL client programs
|
|||||||
Name: postgresql
|
Name: postgresql
|
||||||
%global majorversion 9.0
|
%global majorversion 9.0
|
||||||
Version: 9.0.4
|
Version: 9.0.4
|
||||||
Release: 7%{?dist}
|
Release: 8%{?dist}
|
||||||
|
# Update this whenever F15 gets rebased; it must be NVR-greater than F15 pkg:
|
||||||
|
%global first_systemd_version 9.0.4-8
|
||||||
|
|
||||||
# The PostgreSQL license is very similar to other MIT licenses, but the OSI
|
# The PostgreSQL license is very similar to other MIT licenses, but the OSI
|
||||||
# recognizes it as an independent license, so we do as well.
|
# recognizes it as an independent license, so we do as well.
|
||||||
License: PostgreSQL
|
License: PostgreSQL
|
||||||
@ -73,11 +76,12 @@ Source1: postgresql-%{version}-US.pdf
|
|||||||
# generate-pdf.sh is not used during RPM build, but include for documentation
|
# generate-pdf.sh is not used during RPM build, but include for documentation
|
||||||
Source2: generate-pdf.sh
|
Source2: generate-pdf.sh
|
||||||
Source3: ftp://ftp.postgresql.org/pub/source/v%{prevversion}/postgresql-%{prevversion}.tar.bz2
|
Source3: ftp://ftp.postgresql.org/pub/source/v%{prevversion}/postgresql-%{prevversion}.tar.bz2
|
||||||
Source4: postgresql.init
|
|
||||||
Source5: Makefile.regress
|
Source5: Makefile.regress
|
||||||
Source6: pg_config.h
|
Source6: pg_config.h
|
||||||
Source7: ecpg_config.h
|
Source7: ecpg_config.h
|
||||||
Source8: README.rpm-dist
|
Source8: README.rpm-dist
|
||||||
|
Source9: postgresql-setup
|
||||||
|
Source10: postgresql.service
|
||||||
Source14: postgresql.pam
|
Source14: postgresql.pam
|
||||||
Source15: postgresql-bashprofile
|
Source15: postgresql-bashprofile
|
||||||
|
|
||||||
@ -87,12 +91,12 @@ Patch2: postgresql-logging.patch
|
|||||||
Patch3: postgresql-perl-rpath.patch
|
Patch3: postgresql-perl-rpath.patch
|
||||||
Patch4: postgresql-gcc-workaround.patch
|
Patch4: postgresql-gcc-workaround.patch
|
||||||
Patch5: postgresql-perl-5.14.patch
|
Patch5: postgresql-perl-5.14.patch
|
||||||
|
Patch6: postgresql-pgctl-timeout.patch
|
||||||
|
|
||||||
BuildRequires: perl(ExtUtils::MakeMaker) glibc-devel bison flex gawk
|
BuildRequires: perl(ExtUtils::MakeMaker) glibc-devel bison flex gawk
|
||||||
BuildRequires: perl(ExtUtils::Embed), perl-devel
|
BuildRequires: perl(ExtUtils::Embed), perl-devel
|
||||||
# for /sbin/ldconfig
|
BuildRequires: readline-devel zlib-devel
|
||||||
Requires(post): glibc initscripts
|
BuildRequires: systemd-units
|
||||||
Requires(postun): glibc initscripts
|
|
||||||
|
|
||||||
%if %plpython
|
%if %plpython
|
||||||
BuildRequires: python-devel
|
BuildRequires: python-devel
|
||||||
@ -105,9 +109,6 @@ BuildRequires: tcl-devel
|
|||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
BuildRequires: readline-devel
|
|
||||||
BuildRequires: zlib-devel >= 1.0.4
|
|
||||||
|
|
||||||
%if %ssl
|
%if %ssl
|
||||||
BuildRequires: openssl-devel
|
BuildRequires: openssl-devel
|
||||||
%endif
|
%endif
|
||||||
@ -167,6 +168,9 @@ if you're installing the postgresql-server package.
|
|||||||
Summary: The shared libraries required for any PostgreSQL clients
|
Summary: The shared libraries required for any PostgreSQL clients
|
||||||
Group: Applications/Databases
|
Group: Applications/Databases
|
||||||
Provides: libpq.so = %{version}-%{release}
|
Provides: libpq.so = %{version}-%{release}
|
||||||
|
# for /sbin/ldconfig
|
||||||
|
Requires(post): glibc
|
||||||
|
Requires(postun): glibc
|
||||||
|
|
||||||
%description libs
|
%description libs
|
||||||
The postgresql-libs package provides the essential shared libraries for any
|
The postgresql-libs package provides the essential shared libraries for any
|
||||||
@ -180,11 +184,18 @@ Group: Applications/Databases
|
|||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||||
Requires(pre): /usr/sbin/useradd
|
Requires(pre): /usr/sbin/useradd
|
||||||
|
# for /sbin/ldconfig
|
||||||
|
Requires(post): glibc
|
||||||
|
Requires(postun): glibc
|
||||||
|
# pre/post stuff needs systemd too
|
||||||
|
Requires(post): systemd-units
|
||||||
|
Requires(preun): systemd-units
|
||||||
|
Requires(postun): systemd-units
|
||||||
|
# This is actually needed for the %%triggerun script but Requires(triggerun)
|
||||||
|
# is not valid. We can use post because this particular %%triggerun script
|
||||||
|
# should fire just after this package is installed.
|
||||||
|
Requires(post): systemd-sysv
|
||||||
Requires(post): chkconfig
|
Requires(post): chkconfig
|
||||||
Requires(preun): chkconfig
|
|
||||||
# This is for /sbin/service
|
|
||||||
Requires(preun): initscripts
|
|
||||||
Requires(postun): initscripts
|
|
||||||
|
|
||||||
%description server
|
%description server
|
||||||
The postgresql-server package includes the programs needed to create
|
The postgresql-server package includes the programs needed to create
|
||||||
@ -306,6 +317,7 @@ system, including regression tests and benchmarks.
|
|||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5 -p1
|
%patch5 -p1
|
||||||
|
%patch6 -p1
|
||||||
|
|
||||||
# We used to run autoconf here, but there's no longer any real need to,
|
# We used to run autoconf here, but there's no longer any real need to,
|
||||||
# since Postgres ships with a reasonably modern configure script.
|
# since Postgres ships with a reasonably modern configure script.
|
||||||
@ -388,7 +400,6 @@ CFLAGS="$CFLAGS -DLINUX_OOM_ADJ=0"
|
|||||||
--enable-thread-safety \
|
--enable-thread-safety \
|
||||||
%endif
|
%endif
|
||||||
--with-system-tzdata=/usr/share/zoneinfo \
|
--with-system-tzdata=/usr/share/zoneinfo \
|
||||||
--sysconfdir=/etc/sysconfig/pgsql \
|
|
||||||
--datadir=/usr/share/pgsql
|
--datadir=/usr/share/pgsql
|
||||||
|
|
||||||
make %{?_smp_mflags} world
|
make %{?_smp_mflags} world
|
||||||
@ -452,14 +463,16 @@ esac
|
|||||||
install -d -m 755 $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
|
install -d -m 755 $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
|
||||||
cp src/tutorial/* $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
|
cp src/tutorial/* $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
|
||||||
|
|
||||||
# prep the initscript, including insertion of some values it needs
|
# prep the setup script, including insertion of some values it needs
|
||||||
install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
|
|
||||||
sed -e 's|^PGVERSION=.*$|PGVERSION=%{version}|' \
|
sed -e 's|^PGVERSION=.*$|PGVERSION=%{version}|' \
|
||||||
|
-e 's|^PGENGINE=.*$|PGENGINE=%{_bindir}|' \
|
||||||
-e 's|^PREVMAJORVERSION=.*$|PREVMAJORVERSION=%{prevmajorversion}|' \
|
-e 's|^PREVMAJORVERSION=.*$|PREVMAJORVERSION=%{prevmajorversion}|' \
|
||||||
-e 's|^PREVPGENGINE=.*$|PREVPGENGINE=%{_libdir}/pgsql/postgresql-%{prevmajorversion}/bin|' \
|
-e 's|^PREVPGENGINE=.*$|PREVPGENGINE=%{_libdir}/pgsql/postgresql-%{prevmajorversion}/bin|' \
|
||||||
-e 's|^PGDOCDIR=.*$|PGDOCDIR=%{_docdir}/%{name}-%{version}|' \
|
<%{SOURCE9} >postgresql-setup
|
||||||
<%{SOURCE4} >postgresql.init
|
install -m 755 postgresql-setup $RPM_BUILD_ROOT%{_bindir}/postgresql-setup
|
||||||
install -m 755 postgresql.init $RPM_BUILD_ROOT/etc/rc.d/init.d/postgresql
|
|
||||||
|
install -d $RPM_BUILD_ROOT%{_unitdir}
|
||||||
|
install -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_unitdir}/postgresql.service
|
||||||
|
|
||||||
%if %pam
|
%if %pam
|
||||||
install -d $RPM_BUILD_ROOT/etc/pam.d
|
install -d $RPM_BUILD_ROOT/etc/pam.d
|
||||||
@ -475,9 +488,6 @@ install -d -m 700 $RPM_BUILD_ROOT/var/lib/pgsql/backups
|
|||||||
# postgres' .bash_profile
|
# postgres' .bash_profile
|
||||||
install -m 644 %{SOURCE15} $RPM_BUILD_ROOT/var/lib/pgsql/.bash_profile
|
install -m 644 %{SOURCE15} $RPM_BUILD_ROOT/var/lib/pgsql/.bash_profile
|
||||||
|
|
||||||
# Create the multiple postmaster startup directory
|
|
||||||
install -d -m 700 $RPM_BUILD_ROOT/etc/sysconfig/pgsql
|
|
||||||
|
|
||||||
|
|
||||||
%if %upgrade
|
%if %upgrade
|
||||||
pushd postgresql-%{prevversion}
|
pushd postgresql-%{prevversion}
|
||||||
@ -593,19 +603,36 @@ cat psql-%{majorversion}.lang >>main.lst
|
|||||||
-c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || :
|
-c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || :
|
||||||
|
|
||||||
%post server
|
%post server
|
||||||
/sbin/chkconfig --add postgresql
|
|
||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
if [ $1 -eq 1 ] ; then
|
||||||
|
# Initial installation
|
||||||
|
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run this when upgrading from SysV initscript to native systemd unit
|
||||||
|
%triggerun server -- postgresql-server < %{first_systemd_version}
|
||||||
|
# Save the current service runlevel info
|
||||||
|
# User must manually run systemd-sysv-convert --apply postgresql
|
||||||
|
# to migrate them to systemd targets
|
||||||
|
/usr/bin/systemd-sysv-convert --save postgresql >/dev/null 2>&1 || :
|
||||||
|
|
||||||
|
# Run these because the SysV package being removed won't do them
|
||||||
|
/sbin/chkconfig --del postgresql >/dev/null 2>&1 || :
|
||||||
|
/bin/systemctl try-restart postgresql.service >/dev/null 2>&1 || :
|
||||||
|
|
||||||
%preun server
|
%preun server
|
||||||
if [ $1 = 0 ] ; then
|
if [ $1 -eq 0 ] ; then
|
||||||
/sbin/service postgresql stop >/dev/null 2>&1
|
# Package removal, not upgrade
|
||||||
/sbin/chkconfig --del postgresql
|
/bin/systemctl --no-reload disable postgresql.service >/dev/null 2>&1 || :
|
||||||
|
/bin/systemctl stop postgresql.service >/dev/null 2>&1 || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
%postun server
|
%postun server
|
||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
|
||||||
if [ $1 -ge 1 ] ; then
|
if [ $1 -ge 1 ] ; then
|
||||||
/sbin/service postgresql condrestart >/dev/null 2>&1 || :
|
# Package upgrade, not uninstall
|
||||||
|
/bin/systemctl try-restart postgresql.service >/dev/null 2>&1 || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
%if %plperl
|
%if %plperl
|
||||||
@ -734,17 +761,17 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
|
|
||||||
%files server -f server.lst
|
%files server -f server.lst
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
/etc/rc.d/init.d/postgresql
|
%{_unitdir}/postgresql.service
|
||||||
%if %pam
|
%if %pam
|
||||||
%config(noreplace) /etc/pam.d/postgresql
|
%config(noreplace) /etc/pam.d/postgresql
|
||||||
%endif
|
%endif
|
||||||
%attr (755,root,root) %dir /etc/sysconfig/pgsql
|
|
||||||
%{_bindir}/initdb
|
%{_bindir}/initdb
|
||||||
%{_bindir}/pg_controldata
|
%{_bindir}/pg_controldata
|
||||||
%{_bindir}/pg_ctl
|
%{_bindir}/pg_ctl
|
||||||
%{_bindir}/pg_resetxlog
|
%{_bindir}/pg_resetxlog
|
||||||
%{_bindir}/postgres
|
%{_bindir}/postgres
|
||||||
%{_bindir}/postmaster
|
%{_bindir}/postmaster
|
||||||
|
%{_bindir}/postgresql-setup
|
||||||
%{_mandir}/man1/initdb.*
|
%{_mandir}/man1/initdb.*
|
||||||
%{_mandir}/man1/pg_controldata.*
|
%{_mandir}/man1/pg_controldata.*
|
||||||
%{_mandir}/man1/pg_ctl.*
|
%{_mandir}/man1/pg_ctl.*
|
||||||
@ -824,6 +851,10 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jul 27 2011 Tom Lane <tgl@redhat.com> 9.0.4-8
|
||||||
|
- Convert to systemd startup support
|
||||||
|
Resolves: #696427
|
||||||
|
|
||||||
* Thu Jul 21 2011 Petr Sabata <contyk@redhat.com> - 9.0.4-7
|
* Thu Jul 21 2011 Petr Sabata <contyk@redhat.com> - 9.0.4-7
|
||||||
- Perl mass rebuild
|
- Perl mass rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user