Библиотеки для разработки PostgreSQL

PostgreSQLНа днях сменил ноутбук. Установил туда Ubuntu 23.04, браузер поставил. Кой-какие утилиты поставил. PostgreSQL 16 поставил. Вроде всё заработало, ничего не отваливалось.

Через некоторое время решил продолжить изучение прикладного программирования под PostgreSQL – хотел написать функцию на Си и добавить её в psql’e.

Стал собирать решение – посыпались ошибки. Логично, не хватало каких-то библиотек. Я редко ноутбуки меняю, когда-то нужные библиотеки ставил, но напрочь забыл какие именно. Пришлось вспоминать. Так что запишу чтобы в следующий раз мучительно вспоминать не пришлось. Возможно, буду дополнять эту статью:

Библиотеки-утилиты, приведённые ниже, нужны для установки PostgreSQL из исходных кодов. В статье по этой ссылке я показал, какие ошибки могут возникать если будут отсутствовать эти библиотеки-утилиты:

sudo apt install git
sudo apt install build-essential
sudo apt install libreadline-dev
sudo apt install zlib1g-dev
sudo apt install flex
sudo apt install bison

В этот раз при выполнении ./configure у меня возникла вот такая ошибка:

checking whether to build with ICU support... yes
checking for icu-uc icu-i18n... no
configure: error: ICU library not found
If you have ICU already installed, see config.log for details on the
failure.  It is possible the compiler isn't looking in the proper directory.
Use --without-icu to disable ICU support.

Так что нужно установить дополнительно вот эти библиотеки:

sudo apt install postgresql-16-icu-ext
sudo apt install pkg-config
sudo apt install libicu-dev

Далее я попробовал запустить сборку моего расширения, в котором создаю функции на языке Си – и опять получил ошибку:

hello_world.c:1:10: fatal error: postgres.h: No such file or directory
    1 | #include "postgres.h"
      |          ^~~~~~~~~~~~
compilation terminated.
make: *** [<builtin>: hello_world.o] Error 1

Нужно установить файлы для разработки серверных расширений с использованием инфраструктуры PGXS:

sudo apt install postgresql-server-dev-16

Наконец-то, после всех этих действий я успешно смог собрать PostgreSQL master-ветку, собрал расширение, добавил его в базу и смог использовать написанные сишные функции.

Еще обратите внимание на версию gcc и те ключи, которые используются при сборке расширения — они могут отличаться на разных дистрибутивах, поэтому вы можете получить ошибки в некоторых случаях при компиляции одного и того же кода.

Команды единым списком:

sudo apt install git
sudo apt install build-essential
sudo apt install libreadline-dev
sudo apt install zlib1g-dev
sudo apt install flex
sudo apt install bison
sudo apt install postgresql-16-icu-ext
sudo apt install pkg-config
sudo apt install libicu-dev
sudo apt install postgresql-server-dev-16

[свернуть]


Be the first to comment

Leave a Reply

Ваш Mail не будет опубликован.


*