0

Initial commit

This commit is contained in:
eleksir
2023-11-19 18:01:40 +03:00
commit 80ec8a7529
586 changed files with 29486 additions and 0 deletions

14
postgresql/README Normal file
View File

@@ -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.

64
postgresql/README.SBo Normal file
View File

@@ -0,0 +1,64 @@
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/10.2/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
http://www.postgresql.org/docs/10.2/interactive/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 http://www.postgresql.org/docs/10.2/static/app-pg-ctl.html
From PostgreSQL 9.3 we support in place database upgrades using pg_upgrade:
http://www.postgresql.org/docs/10.2/static/pgupgrade.html
A few hints for PostgreSQL 9.6 -> 10.2 upgrade:
- Don't remove old PostgreSQL 9.6.x package
- Install PostgreSQL 10.2.x, note that binaries are in
'/usr/lib64/postgresql/10.2/bin'
- Follow regular pg_upgrade docs
- Remove old package when transition is over, or read comments in
rc.postgresql if you want to run multiple PostgreSQL versions in parallel
- Check the /usr/bin for stale symlinks for old binaries_
e.g. in v10.0 pg_xlogdump got renamed to pg_waldump.
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.
OpenLDAP Notes
With OpenLDAP versions 2.4.24 through 2.4.31, inclusive, each backend
process that loads libpq (via WAL receiver, dblink, or postgres_fdw) and
also uses LDAP will crash on exit.
The LDAP wont be enabled (regardless of '--with-ldap' flag in slackbuild)
for affected OpenLDAP versions, so we've removed that build flag alltogether.
(OpenLDAP 2.4.31 is the version included in Slackware 14.1)

40
postgresql/doinst.sh Normal file
View File

@@ -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.postgresql.new
config etc/logrotate.d/postgresql.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
)

View File

@@ -0,0 +1,206 @@
#!/bin/sh
# Slackware build script for PostgreSQL
#
# Copyright 2007-2018 Adis Nezirovic <adis_at_linux.org.ba>
# 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.
# Modified by the SlackBuilds.org Project
PRGNAM=postgresql
VERSION=${VERSION:-10.21}
BUILD=${BUILD:-1}
TAG=${TAG:-_EXs}
PG_VERSION=${PG_VERSION:-10}
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
CWD=$(pwd)
TMP=${TMP:-/tmp/EXs}
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 2>&1 > /dev/null; 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 2>&1 > /dev/null; 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="-g3 -O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $TMP/$PRGNAM-$VERSION $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
tar xf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$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" \
LDFLAGS="-flto -rdynamic -Wl,--export-dynamic -Wl,-E -Wl,--no-as-needed -Wl,-O2" \
./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 -j$(nproc)
make install-strip DESTDIR=$PKG
make install-docs DESTDIR=$PKG
# 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:
# http://www.postgresql.org/docs/10.2/static/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 [ "x$PG_EXTENSIONS" = "xALL" ];then
cd $TMP/$PRGNAM-$VERSION/contrib
make all
make install-strip DESTDIR=$PKG
else
for ext in $PG_EXTENSIONS; do
cd $TMP/$PRGNAM-$VERSION/contrib/$ext
make
make install-strip DESTDIR=$PKG
done
fi
cd $TMP/$PRGNAM-$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:-tgz}

View File

@@ -0,0 +1,10 @@
PRGNAM="postgresql"
VERSION="10.21"
HOMEPAGE="https://www.postgresql.org"
DOWNLOAD="https://ftp.postgresql.org/pub/source/v10.21/postgresql-10.21.tar.gz"
MD5SUM="30b9587bb863cf798304a664d1ad60d7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Adis Nezirovic"
EMAIL="adis_at_linux.org.ba"

View File

@@ -0,0 +1,9 @@
/var/log/@PRGNAM@-@PG_VERSION@ {
daily
rotate 7
copytruncate
delaycompress
compress
notifempty
missingok
}

View File

@@ -0,0 +1,171 @@
#!/bin/bash
# PostgreSQL startup script for Slackware Linux
#
# $Revision$
# $Date$
#
# Copyright 2007-2018 Adis Nezirovic <adis_at_linux.org.ba>
# 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=10.10 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
#
# http://www.postgresql.org/docs/10.2/static/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

View File

@@ -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"

19
postgresql/slack-desc Normal file
View File

@@ -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------------------------------------------------------|
postgresql: postgresql (object-relational database management system)
postgresql:
postgresql: PostgreSQL is an advanced object-relational database management
postgresql: system (ORDBMS) based on POSTGRES. With more than 15 years of
postgresql: development history, it is quickly becoming the de facto
postgresql: database for enterprise level open source solutions.
postgresql:
postgresql: Homepage: https://www.postgresql.org
postgresql:
postgresql:
postgresql: