-
Notifications
You must be signed in to change notification settings - Fork 109
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
system/postgresql15: Added (Object-relational DBMS).
Signed-off-by: Andrew Clemons <[email protected]>
- Loading branch information
Showing
9 changed files
with
574 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,216 @@ | ||
#!/bin/bash | ||
|
||
# Slackware build script for PostgreSQL | ||
# | ||
# Copyright 2007-2018 Adis Nezirovic <adis_at_linux.org.ba> | ||
# Copyright 2024 Willy Sudiarto Raharjo <[email protected]> | ||
# 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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="[email protected]" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
/var/log/@PRGNAM@-@PG_VERSION@ { | ||
daily | ||
rotate 7 | ||
copytruncate | ||
delaycompress | ||
compress | ||
notifempty | ||
missingok | ||
} |
Oops, something went wrong.