По умолчанию поддержка в 14 версии отсутствует (на момент написания статьи).
Чтобы установить расширение требуется выполнить следующие шаги:
Шаг 1. Ставим зависимости
sudo apt install make git g++ clang python2 pkg-config libc++-dev libc++abi-dev libglib2.0-dev libtinfo5 ninja-build postgresql-server-dev-14
Шаг 2. Указываем, что команда python вызывает python версии 2
sudo ln -s /usr/bin/python2 /usr/bin/python
Шаг 3. Устанавливаем расширение из инструкции с сайта https://plv8.github.io/#building
wget https://github.com/plv8/plv8/archive/v3.0.0.tar.gz tar -xvzf v3.0.0.tar.gz cd plv8-3.0.0 make
Примечание: процесс сборки займёт значительное время и при этом будет загружено порядка 10Gb
Внимание: при сборке из интернета будет загружаться дополнительная информация
Шаг 4. Установка расширения
make install
Примечание автора
В моём случаи была ситуация, при которой заказчик предоставил Ubuntu 20.04 и установил на неё PostgreSQL 14.6 (запретив еще и доступ к интернету).
Обошёл эту ситуацию следующим образом:
- На виртуальной машине развернул образ Ubuntu 20.04
- Установил на неё postgresql 14
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt -y update sudo apt upgrade sudo apt -y install postgresql-14
Примечание: иначе устанавливалась 12 версия
3. Выполнил сборку расширения на виртуальной машине
4. Выполнил архивацию каталога plv8-3.0.0 (около 10Gb). После архивации через zip размер файла будет чуть меньше 5Gb
5. Далее скопировал данный архив на сервер заказчика и распаковал его (обязательно убедитесь, что на сервере будет достаточно свободного места).
6. Установил все зависимости, которые написал выше
7. Перешёл в каталог plv8-3.0.0 и выполнил команду
make install
Установка расширения прошла удачно!!!
P.S.: наверно есть способ прощё, можно просто перенести специальные файлы, но у меня это не получилось, требовались специальные библиотеки
libunwind.so.1: cannot open shared object file: No such file or directory