ОШИБКА: не удалось загрузить библиотеку libperl.so, PostgreSQL пытается CREATE EXTENSION plperlu
Я хочу использовать язык Perl в функции postgres.
Я пытаюсь:
CREATE EXTENSION plperlu
... через pgAdmin 4 подключен к postgres 10, и я получаю эту ошибку:
ERROR: could not load library "/var/lib/pgsql10/lib/postgresql/plperl.so": libperl.so: cannot open shared object file: No such file or directory
SQL state: XX000
Я ищу библиотеку:
find -name libperl.so
... и я вижу это в этих местах:
./usr/lib/perl5/5.18.2/i586-linux-thread-multi/CORE/libperl.so
./usr/lib/perl5/5.18.2/x86_64-linux-thread-multi/CORE/libperl.so
Итак, я пришел к выводу, что он уже находится на моем дистрибутиве сервера, но не там, где ищет postgres, поэтому я ищу и нахожу эту ссылку:
... и я решаю сделать это (по ссылке выше, но у меня есть разные пути): "- Добавьте каталог, содержащий libperl.so, в /etc/ld.so.conf и запустите"ldconfig"от имени пользователя root. Затем запустите сервер PostgreSQL."
Итак, я нахожу файл конфигурации:
find -name ld.so.conf
И получите этот путь:
./etc/ld.so.conf
... и отредактируйте файл:
vi ./etc/ld.so.conf
... и добавьте этот путь:
./usr/lib/perl5/5.18.2/x86_64-linux-thread-multi/CORE/
... загрузить новый конфиг:
ldconfig
... перезапустите pg:
systemctl restart postgresql-10.service
... выполнить этот запрос:
CREATE EXTENSION plperlu;
... и получить ту же ошибку:
ERROR: could not load library "/var/lib/pgsql10/lib/postgresql/plperl.so": libperl.so: cannot open shared object file: No such file or directory
SQL state: XX000
... когда я заменяю предыдущий путь и добавляю этот путь:
/usr/lib/perl5/5.18.2/x86_64-linux-thread-multi/CORE
..разработать ld.so.conf
, Я получил:
ERROR: could not load library "/var/lib/pgsql10/lib/postgresql/plperl.so": /var/lib/pgsql10/lib/postgresql/plperl.so: undefined symbol: Perl_xs_handshake
SQL state: XX000
... немного другая ошибка, но я не знаю, ближе я или дальше.
Как мне указать PostgreSQL на правильную библиотеку, чтобы я мог использовать perl?
Я имею:
- PostgreSQL 10.0 на x86_64-pc-linux-gnu, скомпилированный gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18), 64-битный
- pgAdmin 4 2.0
- 64-битный виртуальный сервер SUSE Linux Enterprise 12
ОБНОВЛЕНИЕ 1:
Я получил помощь из общего списка рассылки postgres: существующий perl, вероятно, был собран с использованием более старой ОС (что, я думаю, у меня есть), поэтому не работает (рукопожатие) с текущей версией postgres (v10). Я надеюсь обновить мою ОС, которая обновит версию perl для моего дистрибутива ОС на сервере, которая должна быть версией perl, поддерживаемой postgres v10. Я постараюсь вернуться с подтверждением / ответом после обновления нашей ОС. Любые дополнительные цвета или возможные причины приветствуются.