mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-05 04:16:46 +02:00
main/postgresql: split data and configs
Configuration files belong to /etc, not /var/lib/. This change is inspired by Gentoo package. This change will NOT affect existing users, until they update their /etc/conf.d/postgresql config to the new format without changing conf_dir.
This commit is contained in:
parent
10d9cc8000
commit
f8d6bc22ed
@ -240,8 +240,8 @@ _submv() {
|
||||
sha512sums="7c9d61a591408e29d7dc70d6b28ecdf06edf7f8fbf4e014e60a1e4f841fd5734c74a820094f6153e10ef633d48ea73f2a85194f6d2cd519a8f7087a261e9e02b postgresql-9.6.2.tar.bz2
|
||||
0b88eee78380ed6cf543c851ac1cea5fc50bb6ef1bb51e03694003f43d2bf4e117ff06657f958d0e9c00ace3b8a6bab6ed0bd017d23f80cfd203dab33da81d46 initdb.patch
|
||||
5f9d8bb4957194069d01af8ab3abc6d4d83a7e7f8bd7ebe1caae5361d621a3e58f91b14b952958138a794e0a80bc154fbb7e3e78d211e2a95b9b7901335de854 perl-rpath.patch
|
||||
73807f0d6ddc239c0fc2308164cf3e6ef361f98553ec24408afc4aeb1db9aea24746caf57e2cd1405eddaac4f26e9a55bf5aa1abcf08cd9ce3e9818754d4746a postgresql.initd
|
||||
34912a2f9c5f660055cdf182f023981bf23f1995c2ba7b1172007dd90df9684952964ce574cfd86d6854bd6d057fd9dda67d6055dd765a65d03c1eaf5b33d22e postgresql.confd
|
||||
224e80f9e62843fd248e625abdd0d9fe477729ff3f9a64fc5c86dd37bb7176d3504107fbed7ce578e3a1db7f60b8cf2abf5fe4862c81f76b6d026e29ca495cfc postgresql.initd
|
||||
0eecc038e5b01995771c7c4403aa76a5077c54b9a8bd5c03e51fa580fc772792c0ae0b84b0845b949a46b77e4f19f0e37351a4af429ecb629a4480035b9871f6 postgresql.confd
|
||||
f5a1cba051e7d846c2d16703514601cb25729ed96b677c9bd0c199d64552120a8b14b238af01917fdb87106681e12dee6fff7447558155ba273e4f96be5e2892 pg-restore.initd
|
||||
c14a5684e914abb3b0ee71bbf15eed71a9264deacaa404a6e3af6bfc330d93e7598624d0ed11a94263106cc660f7f54c8ff57e759033cf606a795f69ff6c1c7c pg-restore.confd
|
||||
5c9bfd9e295dcf678298bf0aa974347a7c311d6e7c2aa76a6920fcb751d01fd1ab77abbec11f3c672f927ad9deaa88e04e370c0b5cd1b60087554c474b748731 pltcl_create_tables.sql"
|
||||
|
||||
@ -45,8 +45,11 @@
|
||||
# The initscript uses these variables to inform PostgreSQL where to find
|
||||
# its data directory and configuration files.
|
||||
|
||||
# PostgreSQL's Database Directory
|
||||
#PGDATA="/var/lib/postgresql/@VERSION@/data"
|
||||
# Where the data directory is located/to be created.
|
||||
#data_dir="/var/lib/postgresql/@VERSION@/data"
|
||||
|
||||
# Location of configuration files. Default is $data_dir.
|
||||
conf_dir="/etc/postgresql"
|
||||
|
||||
# Additional options to pass to initdb.
|
||||
# See man initdb(1) for available options.
|
||||
|
||||
@ -19,17 +19,18 @@ description_setup="Initialize a new PostgreSQL cluster"
|
||||
: ${force_quit:=${FORCE_QUIT:-"no"}}
|
||||
: ${force_timeout:=${FORCE_TIMEOUT:-2}}
|
||||
|
||||
: ${data_dir:=${PGDATA:-"/var/lib/postgresql/@VERSION@/data"}}
|
||||
: ${conf_dir:=$data_dir}
|
||||
: ${env_vars:=${PG_EXTRA_ENV:-}}
|
||||
: ${initdb_opts:=${PG_INITDB_OPTS:-}}
|
||||
: ${logfile:="$PGDATA/postmaster.log"}
|
||||
: ${logfile:="$data_dir/postmaster.log"}
|
||||
: ${pg_opts:=${PGOPTS:-}}
|
||||
: ${port:=${PGPORT:-5432}}
|
||||
: ${PGDATA:="/var/lib/postgresql/@VERSION@/data"}
|
||||
|
||||
command="/usr/bin/postgres"
|
||||
|
||||
conffile="$PGDATA/postgresql.conf"
|
||||
pidfile="$PGDATA/postmaster.pid"
|
||||
conffile="$conf_dir/postgresql.conf"
|
||||
pidfile="$data_dir/postmaster.pid"
|
||||
start_stop_daemon_args="
|
||||
--user $user
|
||||
--group $group
|
||||
@ -51,12 +52,12 @@ start_pre() {
|
||||
check_deprecated_var WAIT_FOR_CLEANUP rude_timeout
|
||||
check_deprecated_var WAIT_FOR_QUIT force_timeout
|
||||
|
||||
if [ ! -d "$PGDATA/base" ]; then
|
||||
if [ ! -d "$data_dir/base" ]; then
|
||||
if yesno "$auto_setup"; then
|
||||
setup || return 1
|
||||
else
|
||||
eerror "Database not found at: $PGDATA"
|
||||
eerror "Please make sure that PGDATA points to the right path."
|
||||
eerror "Database not found at: $data_dir"
|
||||
eerror "Please make sure that 'data_dir' points to the right path."
|
||||
eerror "You can run '/etc/init.d/postgresql setup' to setup a new database cluster."
|
||||
return 1
|
||||
fi
|
||||
@ -101,8 +102,8 @@ start() {
|
||||
--silent \
|
||||
-w --timeout="$start_timeout" \
|
||||
--log="$logfile" \
|
||||
--pgdata="$PGDATA" \
|
||||
-o "$pg_opts"
|
||||
--pgdata="$conf_dir" \
|
||||
-o "--data-directory=$data_dir $pg_opts"
|
||||
retval=$?
|
||||
|
||||
if [ $retval -ne 0 ]; then
|
||||
@ -147,29 +148,43 @@ setup() {
|
||||
|
||||
ebegin "Creating a new PostgreSQL database cluster"
|
||||
|
||||
if [ -d "$PGDATA/base" ]; then
|
||||
eend 1 "$PGDATA/base already exists!"; return 1
|
||||
if [ -d "$data_dir/base" ]; then
|
||||
eend 1 "$data_dir/base already exists!"; return 1
|
||||
fi
|
||||
|
||||
# If the pg_hba.conf and friends exist, backup them.
|
||||
if [ -d "$PGDATA" ]; then
|
||||
# If data_dir exists, backup configs.
|
||||
if [ -d "$data_dir" ]; then
|
||||
bkpdir="$(mktemp -d)"
|
||||
mv "$PGDATA"/* "$bkpdir"/
|
||||
rm -rf "$PGDATA"/*
|
||||
find "$data_dir" -type f -name "*.conf" -maxdepth 1 \
|
||||
-exec mv -v {} "$bkpdir"/ \;
|
||||
rm -rf "$data_dir"/*
|
||||
fi
|
||||
|
||||
install -d -m 0700 -o $user -g $group "$PGDATA"
|
||||
install -d -m 0700 -o $user -g $group "$data_dir"
|
||||
install -d -m 0750 -o $user -g $group "$conf_dir"
|
||||
|
||||
cd "$PGDATA" # to avoid the: could not change directory to "/root"
|
||||
su $user -c "/usr/bin/initdb $initdb_opts --pgdata $PGDATA"
|
||||
cd "$data_dir" # to avoid the: could not change directory to "/root"
|
||||
su $user -c "/usr/bin/initdb $initdb_opts --pgdata $data_dir"
|
||||
local retval=$?
|
||||
|
||||
if [ -d "$bkpdir" ]; then
|
||||
# Move the pg_hba.conf and friends back.
|
||||
mv "$bkpdir"/* "$PGDATA"/ 2>/dev/null
|
||||
# Move backuped configs back.
|
||||
mv -v "$bkpdir"/* "$data_dir"/
|
||||
rm -rf "$bkpdir"
|
||||
fi
|
||||
|
||||
if [ "${data_dir%/}" != "${conf_dir%/}" ]; then
|
||||
# Move configs from data_dir to conf_dir and symlink them to data_dir.
|
||||
local name newname
|
||||
for name in postgresql.conf pg_hba.conf pg_ident.conf; do
|
||||
newname="$name"
|
||||
[ ! -e "$conf_dir"/$name ] || newname="$name.new"
|
||||
|
||||
mv "$data_dir"/$name "$conf_dir"/$newname
|
||||
ln -s "$conf_dir"/$name "$data_dir"/$name
|
||||
done
|
||||
fi
|
||||
|
||||
eend $retval
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user