From: frank Date: Wed, 15 Feb 2012 17:13:19 +0000 (+0100) Subject: saving uncommitted changes in /etc prior to emerge run X-Git-Url: https://git.uhu-banane.net/?a=commitdiff_plain;h=800440c7b4dcaa05492f5b5e09d9a6cbc3e7c81d;p=config%2Fbruni%2Fetc.git saving uncommitted changes in /etc prior to emerge run --- diff --git a/conf.d/._cfg0000_postgresql-9.1 b/conf.d/._cfg0000_postgresql-9.1 new file mode 100644 index 00000000..54cf5cc7 --- /dev/null +++ b/conf.d/._cfg0000_postgresql-9.1 @@ -0,0 +1,58 @@ +# 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-server:9.1' 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-9.1/" + +# Where the data directory is located/to be created +DATA_DIR="/var/lib/postgresql/9.1/data" + +# Additional options to pass to initdb. +# See `man initdb' for available options. +#PG_INITDB_OPTS="--locale=en_US.UTF-8" diff --git a/eselect/postgresql/slots/9.1/._cfg0000_server b/eselect/postgresql/slots/9.1/._cfg0000_server new file mode 100644 index 00000000..7a0a9c0f --- /dev/null +++ b/eselect/postgresql/slots/9.1/._cfg0000_server @@ -0,0 +1 @@ +postgres_ebuilds="${postgres_ebuilds} postgresql-server-9.1.2-r2" diff --git a/init.d/._cfg0000_postgresql-9.1 b/init.d/._cfg0000_postgresql-9.1 new file mode 100755 index 00000000..01376910 --- /dev/null +++ b/init.d/._cfg0000_postgresql-9.1 @@ -0,0 +1,141 @@ +#!/sbin/runscript +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +extra_started_commands="reload" + +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}} +socket_path=$(get_config unix_socket_path) +: ${socket_path:=/var/run/postgresql} + +checkconfig() { + # Check that DATA_DIR has been set and exists + if [ -z ${DATA_DIR} ] ; then + eerror "DATA_DIR not set" + eerror "HINT: Perhaps you need to update /etc/conf.d/postgresql-9.1" + fi + 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-server:9.1" + return 1 + fi + + # Check for the existence of and PostgreSQL's ability to read the config files. + if [ ! -f ${PGDATA}/postgresql.conf -o \ + ! -f ${PGDATA}/pg_hba.conf -o ! -f ${PGDATA}/pg_ident.conf ] ; then + eerror "The following file(s) were not found in ${PGDATA}:" + [ ! -f ${PGDATA}/postgresql.conf ] && eerror " postgresql.conf" + [ ! -f ${PGDATA}/pg_hba.conf ] && eerror " pg_hba.conf" + [ ! -f ${PGDATA}/pg_ident.conf ] && eerror " pg_ident.conf" + eerror "HINT: Try:" + eerror " mv ${DATA_DIR}/*.conf ${PGDATA}" + return 1 + fi + + local file + local failed + for file in pg_hba pg_ident postgresql ; do + file="${PGDATA}/${file}.conf" + su postgres -c "test -r ${file}" || failed="${file} ${failed}" + done + if [ -n "${failed}" ] ; then + eerror "The following file(s) are not readable by 'postgres':" + local x + for x in ${failed} ; do + eerror " ${x}" + done + eerror "HINT: Try: 'chmod 644 ${PGDATA}/*.conf'" + return 1 + fi + + checkpath -d -m 0770 -o postgres:postgres ${socket_path} + if [ -e ${socket_path}/.s.PGSQL.${configured_port} ] ; then + eerror "Socket conflict." + eerror "A server is already listening on:" + eerror " ${socket_path}/.s.PGSQL.${configured_port}" + eerror "HINT: Change PGPORT to listen on a different socket." + return 1 + fi +} + +start() { + checkconfig || return 1 + + ebegin "Starting PostgreSQL" + + rm -f ${DATA_DIR}/postmaster.pid + + local extraenv + local x + for x in ${PG_EXTRA_ENV} ; do + extraenv="${extraenv} --env ${x}" + done + + start-stop-daemon --start \ + --user postgres \ + --exec /usr/lib/postgresql-9.1/bin/postgres \ + --env "PGPORT=${configured_port}" \ + ${extraenv} \ + --wait $((${START_TIMEOUT}*1000)) \ + --pidfile ${DATA_DIR}/postmaster.pid \ + -- -D ${PGDATA} --data-directory=${DATA_DIR} --silent-mode=true ${PGOPTS} + local retval=$? + + if [ $retval -ne 0 ] ; then + eerror "Check the PostgreSQL 9.1 log for a detailed explanation of the above error." + eend $retval + return $retval + fi + + eend $retval +} + +stop() { + local seconds=$(( ${NICE_TIMEOUT} + ${RUDE_TIMEOUT} + ${FORCE_TIMEOUT} )) + ebegin "Stopping PostgreSQL (this can take up to ${seconds} seconds)" + + local retval + local retries=SIGTERM/${NICE_TIMEOUT} + + if [ "${RUDE_QUIT}" != "NO" ] ; then + einfo "RUDE_QUIT enabled." + retries="${retries}/SIGINT/${RUDE_TIMEOUT}" + fi + if [ "${FORCE_QUIT}" = "YES" ] ; then + einfo "FORCE_QUIT enabled." + ewarn "A recover-run might be executed on next startup." + retries="${retries}/SIGQUIT/${FORCE_TIMEOUT}" + fi + + start-stop-daemon --stop \ + --exec /usr/lib/postgresql-9.1/bin/postgres \ + --retry ${retries} \ + --pidfile ${DATA_DIR}/postmaster.pid + + eend +} + +reload() { + ebegin "Reloading PostgreSQL configuration" + kill -HUP $(head -n1 ${DATA_DIR}/postmaster.pid) + eend $? +}