From 03980607942daf16eb53249ce8a9fff9c69c551b Mon Sep 17 00:00:00 2001 From: Willy Sudiarto Raharjo Date: Sun, 8 Dec 2024 22:11:13 +0700 Subject: [PATCH] system/postgresql15: Added (Object-relational DBMS). Signed-off-by: Andrew Clemons --- system/postgresql15/README | 14 ++ system/postgresql15/README.SBo | 60 ++++++ system/postgresql15/doinst.sh | 40 ++++ system/postgresql15/postgresql15.SlackBuild | 216 ++++++++++++++++++++ system/postgresql15/postgresql15.info | 10 + system/postgresql15/postgresql15.logrotate | 9 + system/postgresql15/rc.postgresql15.new | 171 ++++++++++++++++ system/postgresql15/setup.postgresql15 | 35 ++++ system/postgresql15/slack-desc | 19 ++ 9 files changed, 574 insertions(+) create mode 100644 system/postgresql15/README create mode 100644 system/postgresql15/README.SBo create mode 100644 system/postgresql15/doinst.sh create mode 100644 system/postgresql15/postgresql15.SlackBuild create mode 100644 system/postgresql15/postgresql15.info create mode 100644 system/postgresql15/postgresql15.logrotate create mode 100644 system/postgresql15/rc.postgresql15.new create mode 100644 system/postgresql15/setup.postgresql15 create mode 100644 system/postgresql15/slack-desc diff --git a/system/postgresql15/README b/system/postgresql15/README new file mode 100644 index 00000000000..5e488da2242 --- /dev/null +++ b/system/postgresql15/README @@ -0,0 +1,14 @@ +PostgreSQL is an advanced object-relational database management +system (ORDBMS) based on POSTGRES. With more than 15 years of +development history, it is quickly becoming the de facto +database for enterprise level open source solutions. + +Before you can run postgresql you'll need to create the database; +please see README.SBo. + +You need a "postgres" user and group prior to building postgresql. +Something like this will suffice for most systems: + groupadd -g 209 postgres + useradd -u 209 -g 209 -d /var/lib/pgsql postgres +Feel free to use a different uid and gid if desired, but 209 is +recommended to avoid conflicts with other stuff from SlackBuilds.org. diff --git a/system/postgresql15/README.SBo b/system/postgresql15/README.SBo new file mode 100644 index 00000000000..3fe4ac4d400 --- /dev/null +++ b/system/postgresql15/README.SBo @@ -0,0 +1,60 @@ +Before you can run postgresql you'll need to create the +database files in /var/lib/pgsql. The following should do +the trick. + # su postgres -c "initdb -D /var/lib/pgsql/15/data --locale=en_US.UTF-8 -A md5 -W" + +Additionally, a logrotation script and init script are included. +For production level log file handling please read +https://www.postgresql.org/docs/15/logfile-maintenance.html + +In order to start postgresql at boot and stop it properly at shutdown, +make sure rc.postgresql is executable and add the following lines to +the following files: + + /etc/rc.d/rc.local + ================== + # Startup postgresql + if [ -x /etc/rc.d/rc.postgresql ]; then + /etc/rc.d/rc.postgresql start + fi + + /etc/rc.d/rc.local_shutdown + =========================== + # Stop postgres + if [ -x /etc/rc.d/rc.postgresql ]; then + /etc/rc.d/rc.postgresql stop + fi + +Additionally, rc.postgresql script has additional modes for stop/restart: + force-stop|force-restart (i.e. pg_ctl 'fast' mode) + unclean-stop|unclean-restart (i.e. pg_ctl 'immediate' mode) +See https://www.postgresql.org/docs/15/app-pg-ctl.html + +From PostgreSQL 9.3 we support in place database upgrades using pg_upgrade: + https://www.postgresql.org/docs/15/pgupgrade.html + +A few hints for PostgreSQL 14.x -> 15.x upgrade: + - Don't remove old PostgreSQL 14.x package (yet) + - Install PostgreSQL 15.x, note that binaries are in + '/usr/lib64/postgresql15/15/bin' + - Create database file for postgresql 15 + # su postgres -c "initdb -D /var/lib/pgsql/15/data --locale=en_US.UTF-8 -A md5 -W" + - Adjust the pg_hba.conf in postgresql 15 to allow postgres user to connect + - Run pg_upgrade (as postgres user) + $ pg_upgrade --old-datadir /var/lib/pgsql/14/data/ --new-datadir /var/lib/pgsql/15/data/ --old-bindir /usr/lib64/postgresql/14/bin/ --new-bindir /usr/lib64/postgresql15/15/bin/ -U postgres + - Start postgresql 15 service + - Optionally, vacuum all database + /usr/lib{64}/postgresql15/15/bin/vacuumdb -U postgres --all --analyze-in-stages + To remove old's cluster data files, run: + ./delete_old_cluster.sh + - Remove old package when transition is over, or read comments in + rc.postgresql if you want to run multiple PostgreSQL versions in parallel + +This script builds postgresql with some useful extension modules from +the contrib directory, see PG_EXTENSIONS in SlackBuild file. +To build PostgreSQL with all extensions, use the following command: + + # PG_EXTENSIONS=ALL ./postgresql.SlackBuild + +Please note that in order to actually use extension, you must execute +'CREATE EXTENSION [ IF NOT EXISTS ] extension_name' for each extension. diff --git a/system/postgresql15/doinst.sh b/system/postgresql15/doinst.sh new file mode 100644 index 00000000000..d43b4d21f80 --- /dev/null +++ b/system/postgresql15/doinst.sh @@ -0,0 +1,40 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +preserve_perms() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + if [ -e $OLD ]; then + cp -a $OLD ${NEW}.incoming + cat $NEW > ${NEW}.incoming + mv ${NEW}.incoming $NEW + fi + config $NEW +} + +preserve_perms etc/rc.d/rc.postgresql15.new +config etc/logrotate.d/postgresql15.new + +# Create default program symlinks in /usr/bin +( + cd usr/bin + for pg_binary in ../lib@LIBDIRSUFFIX@/@PRGNAM@/@PG_VERSION@/bin/*; do + pg_prog=$(basename $pg_binary) + if [ -L $pg_prog ]; then + ln -sf $pg_binary + elif [ ! -e $pg_prog ]; then + # make sure we don't overwrite actual binaries + ln -s $pg_binary + fi + done +) + diff --git a/system/postgresql15/postgresql15.SlackBuild b/system/postgresql15/postgresql15.SlackBuild new file mode 100644 index 00000000000..227a2f7ca6a --- /dev/null +++ b/system/postgresql15/postgresql15.SlackBuild @@ -0,0 +1,216 @@ +#!/bin/bash + +# Slackware build script for PostgreSQL +# +# Copyright 2007-2018 Adis Nezirovic +# Copyright 2024 Willy Sudiarto Raharjo +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PRGNAM=postgresql15 +SRCNAM=postgresql +VERSION=${VERSION:-15.10} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} +PKGTYPE=${PKGTYPE:-tgz} + +PG_VERSION=${PG_VERSION:-15} +PG_PORT=${PG_PORT:-5432} +PG_UID=${PG_UID:-209} +PG_GID=${PG_GID:-209} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" + exit 0 +fi + +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +# Bail out if user or group isn't valid on your system +# For slackbuilds.org, assigned postgres uid/gid are 209/209 +# See http://slackbuilds.org/uid_gid.txt +# Other popular choice is 26/26 +if ! grep ^postgres: /etc/group > /dev/null 2>&1 ; then + echo " You must have a postgres group to run this script." + echo " # groupadd -g $PG_GID postgres" + exit 1 +elif ! grep ^postgres: /etc/passwd > /dev/null 2>&1 ; then + echo " You must have a postgres user to run this script." + echo " # useradd -u $PG_UID -g $PG_GID -d /var/lib/pgsql postgres" + exit 1 +fi + +# Enable NLS builds using 'ENABLE_NLS=1 ./postgresql.SlackBuild' +if [ ! -z $ENABLE_NLS ];then + NLS=enable +else + NLS=disable +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +rm -rf $TMP/$SRCNAM-$VERSION $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +tar xvf $CWD/$SRCNAM-$VERSION.tar.gz +cd $SRCNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +PYTHON="/usr/bin/python3" \ +./configure \ + --prefix=/usr/lib${LIBDIRSUFFIX}/$PRGNAM/$PG_VERSION \ + --sysconfdir=/etc/$PRGNAM/$PG_VERSION \ + --includedir=/usr/include \ + --datarootdir=/usr/share \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PRGNAM-$VERSION \ + --datadir=/usr/share/$PRGNAM-$PG_VERSION \ + --with-openssl \ + --with-tcl \ + --with-perl \ + --with-python \ + --with-libxml \ + --with-libxslt \ + --enable-thread-safety \ + --with-system-tzdata=/usr/share/zoneinfo \ + --$NLS-nls \ + --build=$ARCH-slackware-linux + +make +make install-strip DESTDIR=$PKG +make install-docs DESTDIR=$PKG + +# 20220414 bkw: this one binary wasn't getting stripped... +strip $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/$PG_VERSION/bin/pg_config + +# create symlinks to shared library for other programs to link against +( cd $PKG/usr/lib${LIBDIRSUFFIX} + for i in $(ls $PRGNAM/$PG_VERSION/lib/lib*.so*) ; do ln -sf $i ; done +) + +# create symlinks to pkg-config scripts +( mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig + cd $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig + for i in $(ls ../$PRGNAM/$PG_VERSION/lib/pkgconfig/*) ; do ln -sf $i ; done +) + +# Some interesting additional modules: +# https://www.postgresql.org/docs/15/contrib.html +# +# adminpack - helper extension for pgAdmin +# pgcrypto - extension for some business applications +# ltree, xml2 - useful extensions for developers +# postgres_fdw - foreign-data wrapper for access to external PostgreSQL servers +# file_fdw - foreign-data wrapper for access to data files on filesystem + +PG_EXTENSIONS=${PG_EXTENSIONS:-"adminpack pgcrypto ltree xml2 postgres_fdw file_fdw hstore citext"} + +if [ "$PG_EXTENSIONS" = "ALL" ];then + cd $TMP/$SRCNAM-$VERSION/contrib + make all + make install-strip DESTDIR=$PKG +else + for ext in $PG_EXTENSIONS; do + cd $TMP/$SRCNAM-$VERSION/contrib/$ext + make + make install-strip DESTDIR=$PKG + done +fi + +cd $TMP/$SRCNAM-$VERSION + +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +cp -a COPYRIGHT HISTORY README doc/KNOWN_BUGS doc/MISSING_FEATURES doc/TODO $PKG/usr/doc/$PRGNAM-$VERSION/ +rm -rf $PKG/usr/doc/$PRGNAM-$VERSION/{man.tar.gz,man1,manl,man7,postgres.tar.gz} +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +cat $CWD/README.SBo > $PKG/usr/doc/$PRGNAM-$VERSION/README.SBo + +# base database directory +# assumes you are using /var/lib/pgsql as a homedir for postgres user +mkdir -p $PKG/var/lib/pgsql/$PG_VERSION/data +chown -R postgres:postgres $PKG/var/lib/pgsql +chmod 700 $PKG/var/lib/pgsql +# permissions for DATADIR should be u=rwx (0700) +chmod 700 $PKG/var/lib/pgsql/$PG_VERSION/data + +# Install init script +mkdir -p $PKG/etc/rc.d +sed -e "s%@PG_VERSION@%$PG_VERSION%" \ + -e "s%@PRGNAM@%$PRGNAM%" \ + -e "s%@PG_PORT@%$PG_PORT%" \ + -e "s%@LIBDIRSUFFIX@%$LIBDIRSUFFIX%" \ + $CWD/rc.$PRGNAM.new > $PKG/etc/rc.d/rc.$PRGNAM.new +chmod 0755 $PKG/etc/rc.d/rc.$PRGNAM.new + +# Install logrotate script +mkdir -p $PKG/etc/logrotate.d +sed -e "s%@PG_VERSION@%$PG_VERSION%" \ + -e "s%@PRGNAM@%$PRGNAM%" \ + $CWD/$PRGNAM.logrotate > $PKG/etc/logrotate.d/$PRGNAM.new + +mkdir -p $PKG/var/log/setup +sed -e "s%@UID@%$PG_UID%" \ + -e "s%@GID@%$PG_GID%" \ + -e "s%@PG_VERSION@%$PG_VERSION%" \ + $CWD/setup.$PRGNAM > $PKG/var/log/setup/setup.$PRGNAM +chmod 755 $PKG/var/log/setup/setup.$PRGNAM + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +sed -e "s%@PG_VERSION@%$PG_VERSION%" \ + -e "s%@PRGNAM@%$PRGNAM%" \ + -e "s%@LIBDIRSUFFIX@%$LIBDIRSUFFIX%" \ + $CWD/doinst.sh > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE diff --git a/system/postgresql15/postgresql15.info b/system/postgresql15/postgresql15.info new file mode 100644 index 00000000000..11d0d3288e0 --- /dev/null +++ b/system/postgresql15/postgresql15.info @@ -0,0 +1,10 @@ +PRGNAM="postgresql15" +VERSION="15.10" +HOMEPAGE="https://www.postgresql.org" +DOWNLOAD="https://ftp.postgresql.org/pub/source/v15.10/postgresql-15.10.tar.gz" +MD5SUM="5dbee44cb2cca9e02694f9b0438e254c" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="" +MAINTAINER="Willy Sudiarto Raharjo" +EMAIL="willysr@slackbuilds.org" diff --git a/system/postgresql15/postgresql15.logrotate b/system/postgresql15/postgresql15.logrotate new file mode 100644 index 00000000000..489effe6423 --- /dev/null +++ b/system/postgresql15/postgresql15.logrotate @@ -0,0 +1,9 @@ +/var/log/@PRGNAM@-@PG_VERSION@ { + daily + rotate 7 + copytruncate + delaycompress + compress + notifempty + missingok +} diff --git a/system/postgresql15/rc.postgresql15.new b/system/postgresql15/rc.postgresql15.new new file mode 100644 index 00000000000..3105ad108e9 --- /dev/null +++ b/system/postgresql15/rc.postgresql15.new @@ -0,0 +1,171 @@ +#!/bin/bash + +# PostgreSQL startup script for Slackware Linux +# +# $Revision$ +# $Date$ +# +# Copyright 2007-2018 Adis Nezirovic +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Do not source this script (since it contains exit() calls) +# +# Since version 9.3 this startup script can run multiple PostgreSQL +# versions on different ports and with different data dirs. +# +# e.g. PG_VERSION=14 PG_PORT=6432 /etc/rc.d/rc.@PRGNAM@ start + +PG_VERSION=${PG_VERSION:-@PG_VERSION@} +PG_PORT=${PG_PORT:-@PG_PORT@} +LIBDIRSUFFIX="@LIBDIRSUFFIX@" +LOGFILE=/var/log/@PRGNAM@-$PG_VERSION +DATADIR=/var/lib/pgsql/$PG_VERSION/data +POSTGRES=/usr/lib${LIBDIRSUFFIX}/@PRGNAM@/$PG_VERSION/bin/postgres +PG_CTL=/usr/lib${LIBDIRSUFFIX}/@PRGNAM@/$PG_VERSION/bin/pg_ctl +PIDFILE=$DATADIR/postmaster.pid + +# oom-killer score +# +# https://www.postgresql.org/docs/15/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT +PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj +PG_MASTER_OOM_SCORE_ADJ=-1000 +PG_CHILD_OOM_SCORE_ADJ=0 +PG_ENV="PG_OOM_ADJUST_FILE=$PG_OOM_ADJUST_FILE PG_OOM_ADJUST_VALUE=$PG_CHILD_OOM_SCORE_ADJ" + +# Return values (according to LSB): +# 0 - success +# 1 - generic or unspecified error +# 2 - invalid or excess argument(s) +# 3 - unimplemented feature (e.g. "reload") +# 4 - insufficient privilege +# 5 - program is not installed +# 6 - program is not configured +# 7 - program is not running + +pg_ctl() +{ + CMD="$PG_CTL -o '-p $PG_PORT' $@" + su - postgres -c "$PG_ENV $CMD" +} + +if [ ! -f $POSTGRES ]; then + echo "Could not find 'postgres' binary. Maybe PostgreSQL is not installed properly?" + exit 5 +fi + +case "$1" in + + "start") + echo "Starting PostgreSQL" + touch $LOGFILE + chown postgres:wheel $LOGFILE + chmod 0640 $LOGFILE + + if [ ! -e $DATADIR/PG_VERSION ]; then + echo "You should initialize the PostgreSQL database at location $DATADIR" + echo "e.g. su postgres -c \"initdb -D $DATADIR --locale=en_US.UTF-8 -A md5 -W\"" + exit 6 + fi + + if [ $(pgrep -f $POSTGRES) ]; then + + echo "PostgreSQL daemon already running" + if [ ! -f $PIDFILE ]; then + echo "Warning: Missing pid file $PIDFILE" + fi + exit 1 + + else + test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" + pg_ctl start -w -l $LOGFILE -D $DATADIR + exit 0 + fi + ;; + + "stop") + echo "Shutting down PostgreSQL..." + pg_ctl stop -l $LOGFILE -D $DATADIR -m smart + ;; + + "force-stop") + # Take care! This will kill _all_ client connections + # and rollback current transactions. + echo "Shutting down PostgreSQL (fast)..." + pg_ctl stop -l $LOGFILE -D $DATADIR -m fast + ;; + + "unclean-stop") + # Take care! This will abort server process itself + # resulting with database recovery on next start. + echo "Shutting down PostgreSQL (immediate)..." + pg_ctl stop -l $LOGFILE -D $DATADIR -m immediate + ;; + + "restart") + echo "Restarting PostgreSQL..." + test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" + pg_ctl restart -l $LOGFILE -D $DATADIR -m smart + ;; + + "force-restart") + # Take care! This will kill _all_ client connections + # and rollback current transactions. + echo "Restarting PostgreSQL (fast)..." + pg_ctl restart -l $LOGFILE -D $DATADIR -m fast + ;; + + "unclean-restart") + # Take care: This will abort server process itself + # resulting with database recovery on start. + echo "Restarting PostgreSQL (immediate)..." + pg_ctl restart -l $LOGFILE -D $DATADIR -m immediate + ;; + + "reload") + echo "Reloading configuration for PostgreSQL..." + pg_ctl reload -l $LOGFILE -D $DATADIR -m smart + ;; + + "status") + if [ $(pgrep -f $POSTGRES) ]; then + echo "PostgreSQL is running" + + if [ ! -e $PIDFILE ]; then + echo "Warning: Missing pid file $PIDFILE" + fi + + exit 0 + else + echo "PostgreSQL is stopped" + + if [ -e $PIDFILE ]; then + echo "Detected stale pid file $PIDFILE" + fi + + exit 0 + fi + ;; + + *) + # unclean-stop and unclean-restart are not documented on purpose. + echo "Usage: $0 {start|stop|force-stop|status|restart|force-restart|reload}" + exit 1 + ;; +esac diff --git a/system/postgresql15/setup.postgresql15 b/system/postgresql15/setup.postgresql15 new file mode 100644 index 00000000000..2f0ec5f5496 --- /dev/null +++ b/system/postgresql15/setup.postgresql15 @@ -0,0 +1,35 @@ +#!/bin/bash +#BLURB="PostgreSQL @PG_VERSION@" + +PG_HOME=/var/lib/pgsql +PG_USER=postgres +PG_USER_ID=@UID@ +PG_GROUP=postgres +PG_GROUP_ID=@GID@ +PG_VERSION=@PG_VERSION@ + +echo "Adding PostgreSQL user and group..." +groupadd -g $PG_GROUP_ID $PG_GROUP +useradd -g $PG_GROUP -u $PG_USER_ID -d $PG_HOME -c PostgreSQL $PG_USER +mkdir -p $PG_HOME/$PG_VERSION/data + +## default permissions +echo "Setting up permissions..." +chown -R $PG_USER:$PG_GROUP $PG_HOME +chmod 700 $PG_HOME +chmod 700 $PG_HOME/$PG_VERSION +chmod 700 $PG_HOME/$PG_VERSION/data + +## database cluster +if [ ! -f $PG_HOME/$PG_VERSION/data/PG_VERSION ]; then + echo "Creating database cluster in $PG_HOME/$PG_VERSION/data..." + su $PG_USER -c "initdb -D $PG_HOME/$PG_VERSION/data --locale=en_US.UTF-8 -A md5 -W" +else + echo "*** WARNING ***" >&2 + echo " There is already a database cluster in $PG_HOME/$PG_VERSION/data." >&2 + echo " If you are upgrading from an older version of PostgreSQL" >&2 + echo " you will have to 'dump' and 'restore' your database." >&2 + echo " See PostgreSQL manual for more details." >&2 +fi + +echo "PostgreSQL post-installation setup completed" diff --git a/system/postgresql15/slack-desc b/system/postgresql15/slack-desc new file mode 100644 index 00000000000..12babadd39a --- /dev/null +++ b/system/postgresql15/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +postgresql15: postgresql15 (object-relational database management system) +postgresql15: +postgresql15: PostgreSQL is an advanced object-relational database management +postgresql15: system (ORDBMS) based on POSTGRES. With more than 15 years of +postgresql15: development history, it is quickly becoming the de facto +postgresql15: database for enterprise level open source solutions. +postgresql15: +postgresql15: Homepage: https://www.postgresql.org +postgresql15: +postgresql15: +postgresql15: