Но в случае недоступности дистрибутива и пакетов соответвующей версии, возможна установка PostgreSQL из исходного кода.
Установка из исходного кода подробно описана в документации. Есть и краткий вариант установки с использованием Autoconf и Make.
Ранее на форуме опубликована инструкция по установке PostgreSQL из исходного кода на Astra Linux
Данный вариант инструкции включает минимум команд и настроек для установки PostgreSQL 17.5 из исходного кода на Альт Сервер
Выполнение большинства команд от имени sudo и root, отдельные команды от имени пользователя postgres.
Выбор языка системы
Используется en_US.UTF-8
Настройка переменных окружения
В файлах /root/.bashrc для root и /etc/profile для всех пользователей
Код: Выделить всё
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8
PGDATA=/var/lib/postgresql/17/main; export PGDATA;
PATH=$PATH:/usr/local/pgsql/bin; export PATH;При наличии postgres в /etc/passwd, требуется разблокировать вход, заменив /dev/null на /bin/bash
При отсутствии требуется создание:
Код: Выделить всё
useradd -M -d /var/lib/pgsql postgres Код: Выделить всё
mkdir /var/lib/pgsql
chown -R postgres:postgres /var/lib/pgsql
mkdir /var/lib/postgresql
mkdir /var/lib/postgresql/17
mkdir /var/lib/postgresql/17/main
chown -R postgres:postgres /var/lib/postgresqlВ Альт Сервер по умолчанию могут быть установлены двоичные пакеты postgresql15 и bacula11-director, которые стоит удалить перед установкой PostgreSQL из исходного кода:
Код: Выделить всё
apt-get remove postgresql15Код: Выделить всё
apt-get update
apt-get install rpm-build
apt-get install libreadline-devel
apt-get install zlib-devel
apt-get install libsystemd-devel
apt-get install libicu-devel
apt-get install flexПакет git может потребоваться для получения исходных кодов дополнительных модулей:
Код: Выделить всё
apt-get install -y gitДистрибутив может быть загружен например отсюда https://www.postgresql.org/ftp/source/
Код: Выделить всё
cd /opt
tar xf postgresql-17.5.tar.bz2
Код: Выделить всё
cd /opt/postgresql-17.5
./configure --with-systemd --enable-debug
make world-bin
make install-world-binПодключение пользователем postgres
Код: Выделить всё
su - postgres
initdb -k
exitСодержание файла параметров окружения, например /etc/default/postgresql-17
PGDATA=/var/lib/postgresql/17/main
Содержание файла описания службы, например /etc/systemd/system/postgresql.service
# For example, if you want to change the server's port number to 5433,
# create a file named "/etc/systemd/system/postgresql.service" containing:
# .include /lib/systemd/system/postgresql.service
# [Service]
# Environment=PGPORT=5433
# This will override the setting appearing below.
# Note: changing PGPORT or PGDATA will typically require adjusting SELinux
# configuration as well;
# Note: do not use a PGDATA pathname containing spaces, or you will
# break initdb.sh.
[Unit]
Description=PostgreSQL 17 database server
After=syslog.target
After=network.target
[Service]
Type=notify
User=postgres
Group=postgres
# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0
# Adjust PATH to include ourn binary directory first
Environment=PATH=/usr/local/pgsql/bin:/usr/sbin:/usr/bin:/bin:/sbin:/usr/local/bin
# Location of database directory and other tunable parameters
EnvironmentFile=/etc/default/postgresql-17
# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog
ExecStart=/usr/local/pgsql/bin/postgres -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
# Postgres can take long time to start, so set infinite timeout
TimeoutSec=0
TimeoutStartSec=0
TimeoutStopSec=1h
[Install]
WantedBy=multi-user.target
Подобрнее в разделе запуск сервера баз данных
Включение автозапуска службы
Код: Выделить всё
systemctl enable postgresql
systemctl start postgresql
Код: Выделить всё
su - postgres
psql
postgres=# SELECT version();
version
---------------------------------------------------------------------------------------------
PostgreSQL 17.5 on x86_64-pc-linux-gnu, compiled by x86_64-alt-linux-gcc (GCC), 64-bit
(1 row)