Для сборки расширения pljava для для CУБД PostgreSQL 9.6 необходимо выполнить следующие шаги .

Примечание. Все команды в данном разделе выполняются в контексте пользователя root. Перед началом работы выполните команду sudo su –

6. Убедитесь в установке компонентов CУБД PostgreSQL 9.6 и в их настройке

  • postgresql-9.6 (9.6.20-astrace1)
  • postgresql-contrib-9.6 (9.6.20-astrace1)

Установите утилиту pgadmin3

7. Актуализируйте операционную среду, выполнив следующие действия.

7.1 Откройте на редактирование файл /etc/apt/sources.list

7.2 Закомментируйте строку, начинающуюся с «deb cdrom» и снимите комментарий со строк, начинающихся с «deb».

7.3 Выполните команды:

apt update
 
apt upgrade

8. Установите дополнительные пакеты

  • postgresql-common
  • postgresql-contrib
  • postgresql-server-dev-all
  • 0-dev
  • postgresql-server-dev-11
  • krb5-multidev
  • libkrb5-dev
  • g++-8
  • g++
  • maven
  • multiarch-support
  • libatk-wrapper-java-jni

Например:

apt install postgresql-common postgresql-contrib postgresql-server-dev-all libssl1.0-dev postgresql-server-dev-11 krb5-multidev libkrb5-dev g++-8 g++ maven multiarch-support libatk-wrapper-java-jni

В случае если при установке выявятся ошибки зависимостей, выполните:

apt install -f

9. Установите пакет openjdk 8.

9.1 Загрузите с ресурса https://packages.debian.org/ru/sid/openjdk-8-jdk и установите файлы пакета в следующем порядке:

  • dpkg -i libjpeg-turbo8_1.5.2-0ubuntu5_amd64.deb
  • dpkg -i libjpeg8_8c-2ubuntu8_amd64.deb
  • dpkg -i openjdk-8-jre-headless_8u162-b12-1_amd64.deb
  • dpkg -i openjdk-8-jre_8u162-b12-1_amd64.deb
  • dpkg -i openjdk-8-jdk_8u162-b12-1_amd64.deb
  • dpkg -i openjdk-8-jdk-headless_8u162-b12-1_amd64.deb

9.2 Поскольку устанавливаемые пакеты автоматически загрузили и установили по умолчанию openjdk-11, следует сделать настройку, переключив среду в режим openjdk-8. Для этого выполните следующую команду:

update-alternatives --config java

На предложение интерфейса:

Есть 2 варианта для альтернативы java (предоставляет /usr/bin/java).
 
 
 
 
  Выбор   Путь                                        Приор Состояние
 
------------------------------------------------------------
 
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      автоматический режим
 
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      ручной режим
 
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      ручной режим
 
 
 
 
Press <enter> to keep the current choice[*], or type selection number:

Введите «2» (java-8-openjdk)

9.3 Выполните команду:

pg_config

10. Выполните компиляцию pljava-1.5.8

10.1 Выполните команду:

apt install git parsec-dev

10.2 Загрузите исходные файлы pljava:

git clone https://github.com/tada/pljava.git

10.3 При возникновении ошибки проверки сертификата или CRL, выполните команды:

git config --global http.sslverify false
 
cd pljava/
 
git checkout tags/V1_5_8

10.4 В следующем заголовочном файле

sudo nano /usr/include/postgresql/9.6/server/utils/errcodes.h

Добавьте строку (выделена красным цветом) если она отсутствовала:

#define ERRCODE_INSUFFICIENT_PRIVILEGE_RBT MAKE_SQLSTATE('4','2','5','0','1')

#define ERRCODE_INSUFFICIENT_PRIVILEGE MAKE_SQLSTATE('4','2','5','0','1')

10.5 Запустите компиляцию:

mvn -X -Pwnosign clean install

По окончании компиляции должна быть выдача следующего вида:

Рис. 93 – Фрагмент выдачи после корректной компиляции pljava

Т.е. общий статус всех шагов сборки должен быть Success / «УСПЕШНО»

10.6 Выполните команды:

cd pljava-packaging/target/
 
java -jar ./pljava-pg11.17-amd64-Linux-gpp.jar

Версия (выделено красным) может меняться в зависимости от используемой версии СУБД PostgreSQL.

По выполнении команд должно произойти копирование бинарных файлов pljava в директорию Postgres.

11. Выполните настройку на стороне CУБД PostgreSQL

11.1 Выполните команду

sudo -u postgres psql -d <EAPDB>

где <EAPDB> — имя БД JMS.

11.2 Из консоли pgAdmin выполните следующие команды:

SET pljava.libjvm_location TO '/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so';
 
 
 
 
ALTER SYSTEM
 
SET pljava.libjvm_location TO '/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so';
 
 
 
 
SET pljava.classpath TO '/usr/share/postgresql/11/pljava/pljava-1.5.8.jar';
 
 
 
 
CREATE EXTENSION pljava;
 
GRANT USAGE ON LANGUAGE JAVA TO public;
 
GRANT USAGE ON SCHEMA sqlj TO public;
 
GRANT USAGE ON SCHEMA public TO postgres;

Ответы не должны содержать сообщений об ошибках (при корректном выполнении ответы являются краткими).