109 lines
4.0 KiB
Bash
Executable File
109 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
POSTGRES_VERSION=${POSTGRES_VERSION:-1.16}
|
|
POSTGRES_URL="apt https://github.com/postgres/postgres/releases"
|
|
POSTGRES_FILE=.
|
|
POSTGRES_ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')"
|
|
POSTGRES_OS="$(uname | tr '[:upper:]' '[:lower:]')"
|
|
|
|
POSTGRES_RUN_PATH=${POSTGRES_RUN_PATH:-/usr/bin/psql}
|
|
|
|
POSTGRES_SYSTEMCTL_MODE=enabled
|
|
|
|
POSTGRES_ETC_PATH=${POSTGRES_ETC_PATH:-/etc/postgresql}
|
|
POSTGRES_LIB_PATH=${POSTGRES_LIB_PATH:-/var/lib/postgresql}
|
|
POSTGRES_DATA_PATH=${POSTGRES_DATA_PATH:-/var/lib/postgresql/$(echo "$POSTGRES_VERSION" | cut -f2 -d".")/main}
|
|
POSTGRES_CONFIG_FILE=${POSTGRES_CONFIG_FILE=postgresql.conf}
|
|
|
|
POSTGRES_RUN_USER=${POSTGRES_RUN_USER:-postgres}
|
|
POSTGRES_RUN_GROUP=${POSTGRES_RUN_GROUP:-postgres}
|
|
POSTGRES_RUN_USER_HOME=${POSTGRES_RUN_USER_HOME:-/var/lib/postgresql}
|
|
|
|
POSTGRES_PKG_NAME=postgresql
|
|
|
|
[ -r "global.sh" ] && . ./global.sh
|
|
[ -r "env-postgres" ] && . ./env-postgres
|
|
|
|
CMD_TSKSRVC=${1:-install}
|
|
|
|
ORG="$PWD"
|
|
export LC_CTYPE=C.UTF-8
|
|
export LANG=C.UTF-8
|
|
|
|
_init() {
|
|
#[ -z "$POSTGRES_VERSION" ] || [ -z "$POSTGRES_ARCH" ] || [ -z "$POSTGRES_URL" ] || [ -z "$POSTGRES_FILE" ] && exit 1
|
|
[ -z "$POSTGRES_VERSION" ] && exit 1
|
|
[ -x "$POSTGRES_RUN_PATH" ] && curr_vers=$(${POSTGRES_RUN_PATH} -V | awk '{print $3}')
|
|
if [ "$curr_vers" != "$POSTGRES_VERSION" ] || [ "$curr_vers" != "$POSTGRES_VERSION" ]; then
|
|
#local codename=$(grep VERSION_CODENAME /etc/os-release | cut -f2 -d"=" )
|
|
#if [ "$codename" == "bookworm" ] ; then
|
|
# su -c 'echo "APT::Get::Update::SourceListWarnings::NonFreeFirmware \"false\";" > /etc/apt/apt.conf.d/no-bookworm-firmware.conf'
|
|
#fi
|
|
# # Create the file repository configuration:
|
|
# sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
|
# # Import the repository signing key:
|
|
# sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
|
# # Update the package lists:
|
|
# sudo DEBIAN_FRONTEND=noninteractive apt-get update
|
|
# # Install the latest version of PostgreSQL.
|
|
# # If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
|
|
# if ! sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postgresql ; then
|
|
# return 1
|
|
# fi
|
|
if ! sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postgresql postgresql-client; then
|
|
return 1
|
|
fi
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
_config_postgres() {
|
|
#[ ! -r "${POSTGRES_RUN_PATH}" ] && [ ! -r "postgres.service" ] && return
|
|
# cp postgres.service
|
|
# check /etc/system/multi-user.target.wants/postgresql.service
|
|
# started via /etc/rc2.d/S01postgresql
|
|
|
|
[ -d "$POSTGRES_ETC_PATH" ] && sudo chown -R "$POSTGRES_RUN_USER":"$POSTGRES_RUN_GROUP" "$POSTGRES_ETC_PATH"
|
|
[ -r "data.tar.gz" ] && sudo tar -C "$POSTGRES_LIB_PATH" -xf "data.tar.gz" && sudo chown -R "$POSTGRES_RUN_USER":"$POSTGRES_RUN_GROUP" "$POSTGRES_LIB_PATH"
|
|
#[ "${POSTGRES_SYSTEMCTL_MODE}" == "enabled" ] && systemctl enable "$POSTGRES_PKG_NAME" --now
|
|
#[ "${POSTGRES_SYSTEMCTL_MODE}" == "start" ] && systemctl start "$POSTGRES_PKG_NAME"
|
|
|
|
_start_postgres
|
|
}
|
|
|
|
_remove_postgres() {
|
|
sudo timeout -k 10 20 systemctl stop "$POSTGRES_PKG_NAME"
|
|
sudo timeout -k 10 20 systemctl disable "$POSTGRES_PKG_NAME"
|
|
sudo rm -f "${POSTGRES_RUN_PATH}"
|
|
}
|
|
|
|
_start_postgres() {
|
|
if [ "$POSTGRES_SYSTEMCTL_MODE" == "enabled" ] ; then
|
|
sudo timeout -k 10 20 systemctl enable "$POSTGRES_PKG_NAME" >/dev/null 2>&1
|
|
else
|
|
sudo timeout -k 10 20 systemctl disable "$POSTGRES_PKG_NAME" >/dev/null 2>&1
|
|
fi
|
|
sudo timeout -k 10 20 systemctl restart "$POSTGRES_PKG_NAME" >/dev/null 2>&1
|
|
}
|
|
_restart_postgres() {
|
|
sudo timeout -k 10 20 systemctl restart "$POSTGRES_PKG_NAME" >/dev/null 2>&1
|
|
}
|
|
|
|
if [ "$CMD_TSKSRVC" == "remove" ] ; then
|
|
_remove_postgres
|
|
exit
|
|
fi
|
|
if ! _init ; then
|
|
echo "error postgres install"
|
|
exit 1
|
|
fi
|
|
[ "$CMD_TSKSRVC" == "update" ] && _restart_postgres && exit 0
|
|
if ! _config_postgres ; then
|
|
echo "error postgres config"
|
|
exit 1
|
|
fi
|
|
if ! _start_postgres ; then
|
|
echo "error postgres start"
|
|
exit 1
|
|
fi
|
|
exit 0
|