Как установить PostgreSQL 14, 15, 16 и 17 с патчами 1С на серверы Arch Linux и OpenSUSE Leap

Для запуска 1С:Предприятия "ванильный" PostgreSQL не подойдёт. Для средних и крупных российских компаний в качестве СУБД наилучшим образом подойдёт Postges Pro Enterprise.
Существуют и другие версии PostgreSQL под разными соусами импортозамещения, но бесплатно они недоступны. Также существует версия PostgreSQL от компании 1С - и его-то мы и будем устанавливать, как самый доступный из совместимых с продуктами 1С. Область его применения - для малых компаний, для команд разработки, в тестовом контуре.
На Archlinux и OpenSUSE, как ни странно, проще всего будет установить Postresql-1C из исходников, для этого с сайта ИТС нужно скачать файл с именем Патч СУБД PostgreSQL (tar.bz2).
Должен предупредить, что на данный момент (июнь 2025) уже полгода с сайта 1С распространяются неполные или битые исходники, нормально собираются по этой инструкции только самые первые январские версии.
Далее предполагается, что вы уже установили сервер 1С по инструкции из предыдущей публикации и будете устанавливать Postresql-1C именно на него. Необходимым условием является наличие стандартных компиляторов и дебиановской утилиты dpkg, поэтому установим их на сервере:
// Arch Linux:
$ sudo pacman –S base-devel dpkg
// OpenSUSE Leap:
$ sudo zypper install -t devel_basis
$ sudo zypper install dpkg
// Для компиляции в OpenSUSE также потребуются библиотеки:
$ sudo zypper install libicu libicu-devel libreadline7 readline-devel
Скачиваем вышеуказанный файл с исходниками на своем рабочем компьютере и скопируем на сервер:
$ scp ./Patch_SUBD_PostgreSQL_17.2_4.1C.tar.bz2 user1@10.1.0.229:/home/user1
Заходим на сервер через ssh и убедимся что файл скопировался и находится в домашнем каталоге:
$ ls /home/user1
Patch_SUBD_PostgreSQL_17.2_4.1C.tar.bz2
Далее создайте скрипт со следующим содержимым, сохраните, укажите флаг исполнения, и запустите его, либо повторяйте построчно каждую команду:
#/bin/bash
patchZip=`ls Patch_SUBD_PostgreSQL*.tar.bz2`
rm -rvf src
mkdir -p patch
rm -rfv patch/*
tar -jxf ${patchZip} -C patch
patchDir=`ls -d patch/*`
dpkg-source -x ${patchDir}/*.dsc src
cd src
./configure CFLAGS='-march=native -mtune=native -std=c17'
make world-bin -j$(nproc)
sudo make install-world-bin
На этом шаге все необходимые файлы PostgreSQL собраны, установлены и разложены по местам постоянной дислокации в папке /usr/local/pgsql. Дополнительное преимущество метода компиляции - мы сделали это с флагами оптимизации под нашу конкретную модель процессора на сервере, что может дать какие-то ничтожные, но приятные проценты в производительности. Далее необходимо произвести настройки, чтобы всё это добро заработало.
Первым делом добавим папку с бинарниками в общий для всех пользователей PATH, чтобы не набирать в командах полный путь. Для этого редактируем файл /etc/profile
$ sudo nano /etc/profile
В случае Arch Linux находим следующее место и добавляем строку append_path '/usr/local/pgsql/bin':
# Append our default paths
append_path '/usr/local/sbin'
append_path '/usr/local/bin'
append_path '/usr/bin'
append_path '/usr/local/pgsql/bin'
В случае OpenSUSE Leap просто добавляем в конец:
export PATH=/usr/local/pgsql/bin/:$PATH
Чтобы настройка подействовала нужно перезайти заново в систему. Далее нам нужно создать служебного пользователя postgres и проинициализировать новый кластер. Новый кластер для примера мы создадим в каталоге /var/pgsql
Лирическое отступление для новичков: авторы PostgreSQL, согласно обычаю в мире опенсорса, используют собственную терминологию (tuples, cluster, relation, class и т.д.), поэтому не нужно читать буквально - никакой кластер серверов вы сейчас не создаете, а только обычный INSTANCE в терминах Microsoft.
Крайне важно! Чтоб СУБД работала корректно требуется чтобы на сервере была настроена русская локаль ru_RU.UTF-8!
$ sudo useradd --create-home --user-group postgres
$ sudo chown postgres:postgres --recursive /usr/local/pgsql
$ sudo mkdir /var/pgsql
$ sudo chown postgres:postgres --recursive /var/pgsql
$ sudo -s
$ su - postgres
[postgres@s1 ~]$ initdb /var/pgsql/data // В более старых версиях с ключиком: initdb -D /var/pgsql/data
[postgres@s1 ~]$ pg_ctl -D /var/pgsql/data -l logfile start
При запуске ошибка, ищем причину в журнале в файле /home/postgres/logfile:
FATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock"
Исправить можно 2 вариантами: а) отредактировать postgresql.conf:
unix_socket_directories=/tmp
б) вариант, предложенный читателем (более правильно с точки зрения архитектуры безопасности):
echo "d /run/postgresql 0755 postrgres postgres -" >/usr/lib/tmpfiles.d/postgresql.conf
Запуск как служба: создать файл /usr/lib/systemd/system/postgresql.service со следующим содержимым:
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target
[Service]
#Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /var/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
Выполнить команды:
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql
$ systemctl status postgresql
Изменить пароль пользователя postgres по умолчанию:
$ sudo -u postgres psql -h /tmp
psql (14.4)
Type "help" for help.
postgres=# \password postgres
Заключение
Для качественной работы требуется выполнить настройки производительности в конфигурационном файле postgresq.conf, но это отдельная тема и не рассматривается в данной публикации.
Если вы сохранили скрипт компиляции, то в дальнейшем для обновления Postgres-1C достаточно будет запускать лишь его и затем перезапустить службу postgresql.service. Но следует помнить, что в отличии от MS SQL при смене номера релиза (например с 15 на 16) файлы баз данных Postgresql будут несовместимы, необходимо переносить данные в новую базу через резервную копию.
В качестве консоли управления рекомендую использовать DBeaver вместо прожорливого pgAdmin, который начиная с 4 версии отклонился в своём развитии куда-то не туда.
Связанные материалы
Как установить и запустить PostgresPro-1C версии 15 или 16 в контейнере podman
Как установить сервер 1С:Предприятия 8.3.22, 8.3.23, 8.3.24 на сервер Arch Linux
Как установить клиента 1С:Предприятия 8.3.22, 8.3.23 и 8.3.24 на Arch Linux