Для сборки расширения 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 updateapt upgrade8. Установите дополнительные пакеты
- 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 -f9. Установите пакет 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_config10. Выполните компиляцию pljava-1.5.8
10.1 Выполните команду:
apt install git parsec-dev10.2 Загрузите исходные файлы pljava:
git clone https://github.com/tada/pljava.git10.3 При возникновении ошибки проверки сертификата или CRL, выполните команды:
git config --global http.sslverify falsecd pljava/git checkout tags/V1_5_810.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 SYSTEMSET 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;Ответы не должны содержать сообщений об ошибках (при корректном выполнении ответы являются краткими).
