From c2e8125d80ba1842f8f9c54837c8f62be7d4a388 Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Mon, 8 Jan 2018 17:27:46 +0100 Subject: [PATCH] committing changes in /etc after emerge run Package changes: +dev-db/postgresql-10.1 --- .etckeeper | 5 ++ conf.d/postgresql-10 | 65 ++++++++++++++++++ init.d/postgresql-10 | 157 +++++++++++++++++++++++++++++++++++++++++++ pam.d/postgresql-10 | 6 ++ postgresql-10/psqlrc | 8 +++ 5 files changed, 241 insertions(+) create mode 100644 conf.d/postgresql-10 create mode 100755 init.d/postgresql-10 create mode 100644 pam.d/postgresql-10 create mode 100644 postgresql-10/psqlrc diff --git a/.etckeeper b/.etckeeper index 1441826..ad9b640 100755 --- a/.etckeeper +++ b/.etckeeper @@ -135,6 +135,7 @@ maybe chmod 0644 'conf.d/net-online' maybe chmod 0644 'conf.d/netmount' maybe chmod 0644 'conf.d/pciparm' maybe chmod 0644 'conf.d/php-fpm' +maybe chmod 0644 'conf.d/postgresql-10' maybe chmod 0644 'conf.d/postgresql-9.6' maybe chmod 0644 'conf.d/puppetmaster' maybe chmod 0644 'conf.d/pydoc-2.7' @@ -468,6 +469,7 @@ maybe chmod 0755 'init.d/numlock' maybe chmod 0755 'init.d/osclock' maybe chmod 0755 'init.d/pciparm' maybe chmod 0755 'init.d/php-fpm' +maybe chmod 0755 'init.d/postgresql-10' maybe chmod 0755 'init.d/postgresql-9.6' maybe chmod 0755 'init.d/procfs' maybe chmod 0755 'init.d/pwcheck' @@ -681,6 +683,7 @@ maybe chmod 0644 'pam.d/newusers' maybe chmod 0644 'pam.d/other' maybe chmod 0644 'pam.d/passwd' maybe chmod 0644 'pam.d/pop' +maybe chmod 0644 'pam.d/postgresql-10' maybe chmod 0644 'pam.d/postgresql-9.6' maybe chmod 0644 'pam.d/runuser' maybe chmod 0644 'pam.d/runuser-l' @@ -773,6 +776,8 @@ maybe chmod 0755 'portage/savedconfig/sys-apps' maybe chmod 0644 'portage/savedconfig/sys-apps/busybox-1.25.1' maybe chgrp 'portage' 'portage/world' maybe chmod 0644 'portage/world' +maybe chmod 0755 'postgresql-10' +maybe chmod 0644 'postgresql-10/psqlrc' maybe chmod 0755 'postgresql-9.5' maybe chown 'postgres' 'postgresql-9.5/pg_hba.conf' maybe chgrp 'postgres' 'postgresql-9.5/pg_hba.conf' diff --git a/conf.d/postgresql-10 b/conf.d/postgresql-10 new file mode 100644 index 0000000..7d9e292 --- /dev/null +++ b/conf.d/postgresql-10 @@ -0,0 +1,65 @@ +# Comma-separated list of directories that contain a unix +# socket. Created and controlled by the related initscript. The +# directories created will be owned root:postgres with mode 1775. +# +# /run/postgresql is the default directory. +PG_SOCKET_DIRECTORIES="/run/postgresql" + +# Which port and socket to bind PostgreSQL +PGPORT="5432" + +# How long to wait for server to start in seconds +START_TIMEOUT=10 + +# NICE_QUIT ignores new connections and wait for clients to disconnect from +# server before shutting down. NICE_TIMEOUT in seconds determines how long to +# wait for this to succeed. +NICE_TIMEOUT=60 + +# Forecfully disconnect clients from server and shut down. This is performed +# after NICE_QUIT. Terminated client connections have their open transactions +# rolled back. +# Set RUDE_QUIT to "NO" to disable. RUDE_TIMEOUT in seconds. +RUDE_QUIT="YES" +RUDE_TIMEOUT=30 + +# If the server still fails to shutdown, you can force it to quit by setting +# this to YES and a recover-run will execute on the next startup. +# Set FORCE_QUIT to "YES" to enable. FORCE_TIMEOUT in seconds. +FORCE_QUIT="NO" +FORCE_TIMEOUT=2 + +# Extra options to run postmaster with, e.g.: +# -N is the maximal number of client connections +# -B is the number of shared buffers and has to be at least 2x the value for -N +# Please read the man-page to postmaster for more options. Many of these +# options can be set directly in the configuration file. +#PGOPTS="-N 512 -B 1024" + +# Pass extra environment variables. If you have to export environment variables +# for the database process, this can be done here. +# Don't forget to escape quotes. +#PG_EXTRA_ENV="PGPASSFILE=\"/path/to/.pgpass\"" + +############################################################################## +# +# The following values should not be arbitrarily changed. +# +# `emerge --config dev-db/postgresql:10' uses these values to +# determine where to create the data directory, where to place the +# configuration files, and any additional options to pass to initdb. +# +# The initscript also uses these variables to inform PostgreSQL where to find +# its data directory and configuration files. +# +############################################################################## + +# Location of configuration files +PGDATA="/etc/postgresql-10/" + +# Where the data directory is located/to be created +DATA_DIR="/var/lib/postgresql/10/data" + +# Additional options to pass to initdb. +# See `man initdb' for available options. +PG_INITDB_OPTS="--encoding=UTF8" diff --git a/init.d/postgresql-10 b/init.d/postgresql-10 new file mode 100755 index 0000000..e5540ab --- /dev/null +++ b/init.d/postgresql-10 @@ -0,0 +1,157 @@ +#!/sbin/openrc-run +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="reload promote" + +PG_CTL="/usr/lib64/postgresql-10/bin/pg_ctl" + +description="PostgreSQL 10 -- the world's most advanced open source database -- +${RC_SERVICE} is a wrapper around pg_ctl with additional administrative checks +and convenience" + +get_config() { + [ -f "${PGDATA%/}/postgresql.conf" ] || return 1 + + eval echo $(sed -e 's:#.*::' "${PGDATA%/}/postgresql.conf" \ + | awk '$1 == "'$1'" { print ($2 == "=" ? $3 : $2) }') +} + +depend() { + use net + provide postgresql + + if [ "$(get_config log_destination)" = "syslog" ]; then + use logger + fi +} + +configured_port=$(get_config port) +: ${configured_port:=${PGPORT}} + +checkconfig() { + # Check that DATA_DIR has been set + if [ -z "${DATA_DIR}" ] ; then + eerror "DATA_DIR not set" + eerror "HINT: Perhaps you need to update /etc/conf.d/postgresql-10" + return 1 + fi + + # Check that DATA_DIR exists + if [ ! -d "${DATA_DIR}" ] ; then + eerror "Directory not found: ${DATA_DIR}" + eerror "HINT: Ensure that DATA_DIR points to the right path." + eerror "HINT: Or perhaps you need to create the database cluster:" + eerror " emerge --config dev-db/postgresql:10" + return 1 + fi + + # Check for the existence of PostgreSQL's config files, and set the + # proper mode and ownership. + # Only three files should be checked as potentially other files + # may be in PGDATA that should not be touched. + local file + for file in postgresql pg_hba pg_ident ; do + file="${PGDATA%/}/${file}.conf" + if [ -f "${file}" ] ; then + checkpath -f -m 0600 -o postgres:postgres "${file}" + else + eerror "${file} not found" + eerror "HINT: mv ${DATA_DIR%/}/*.conf ${PGDATA}" + return 1 + fi + done + + # Set the proper permission for the socket paths and create it if + # it doesn't exist. + set -f; IFS=',' + local s + for s in ${PG_SOCKET_DIRECTORIES}; do + checkpath -d -m 1775 -o root:postgres "${s}" + if [ -e "${s%/}/.s.PGSQL.${configured_port}" ] ; then + eerror "Socket conflict." + eerror "A server is already listening on:" + eerror " ${s%/}/.s.PGSQL.${configured_port}" + eerror "HINT: Change PGPORT to listen on a different socket." + return 1 + fi + done + set +f; unset IFS +} + +start() { + checkconfig || return 1 + + ebegin "Starting PostgreSQL 10" + + rm -f "${DATA_DIR%/}/postmaster.pid" + + su - postgres -c \ + "PGPORT=${configured_port} ${PG_EXTRA_ENV} ${PG_CTL} start \ + -s -w -t ${START_TIMEOUT} -l ${DATA_DIR%/}/postmaster.log \ + -D ${PGDATA} \ + -o '--data-directory=${DATA_DIR} \ + --unix-socket-directories=${PG_SOCKET_DIRECTORIES} \ + ${PGOPTS}'" + + local retval=$? + + if [ $retval -ne 0 ] ; then + eerror "Check the log for a possible explanation of the above error." + eerror "The log may be located at:" + eerror " ${DATA_DIR%/}/postmaster.log" + eerror "Or wherever you configured PostgreSQL 10 to log." + fi + + eend $retval +} + +stop() { + local seconds=$(( ${NICE_TIMEOUT} + ${RUDE_TIMEOUT} + ${FORCE_TIMEOUT} )) + ebegin "Stopping PostgreSQL 10 (this can take up to ${seconds} seconds)" + + su - postgres -c \ + "${PG_CTL} stop -t ${NICE_TIMEOUT} -s -D ${DATA_DIR} -m smart" + local retval=$? + + if [ "${RUDE_QUIT}" != "NO" -a ${retval} -ne 0 ] ; then + einfo "Previous attempt failed. Trying RUDE_QUIT." + su - postgres -c \ + "${PG_CTL} stop -t ${RUDE_TIMEOUT} -s -D ${DATA_DIR} -m fast" + retval=$? + fi + + if [ "${FORCE_QUIT}" = "YES" -a ${retval} -ne 0 ] ; then + einfo "Previous step failed. Trying FORCE_QUIT." + ewarn "A recover-run might be executed on next startup." + su - postgres -c \ + "${PG_CTL} stop -t ${FORCE_TIMEOUT} -s -D ${DATA_DIR} -m immediate" + retval=$? + fi + + eend ${retval} +} + +status() { + ebegin "Checking PostgreSQL 10 status" + su - postgres -c "${PG_CTL} status -D ${DATA_DIR}" + eend $? +} + +description_reload="Simply sends the postgres process a SIGHUP signal, causing + it to reread its configuration files (postgresql.conf, pg_hba.conf, + etc.). This allows changing of configuration-file options that do not + require a complete restart to take effect." +reload() { + ebegin "Reloading PostgreSQL 10 configuration" + su - postgres -c "${PG_CTL} reload -s -D ${DATA_DIR}" + eend $? +} + +description_promote="If the server is in standby, it is commanded to exit + recovery and begin read-write operations." +promote() { + ebegin "Promoting PostgreSQL 10" + su - postgres -c "${PG_CTL} promote -s -D ${DATA_DIR}" + eend $? +} diff --git a/pam.d/postgresql-10 b/pam.d/postgresql-10 new file mode 100644 index 0000000..b94d487 --- /dev/null +++ b/pam.d/postgresql-10 @@ -0,0 +1,6 @@ +# File autogenerated by pamd_mimic in pam eclass + + +auth include system-auth +account include system-auth +session include system-auth diff --git a/postgresql-10/psqlrc b/postgresql-10/psqlrc new file mode 100644 index 0000000..8152cac --- /dev/null +++ b/postgresql-10/psqlrc @@ -0,0 +1,8 @@ +-- +-- system-wide psql configuration file +-- +-- This file is read before the .psqlrc file in the user's home directory. +-- +-- Copy this to your installation's sysconf directory and rename it psqlrc. +-- The sysconf directory can be identified via "pg_config --sysconfdir". +-- -- 2.39.5