我想在postgres函数中使用perl语言。
我正在尝试:
CREATE EXTENSION plperlu
...通过连接到postgres 10的pgAdmin 4,我收到此错误:
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和 以root用户身份运行“ldconfig”。然后启动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?
我有:
更新1:
我从postgres通用电子邮件列表中获得了帮助:现有的perl可能是使用较旧的操作系统构建的(我想我已经拥有)因此与当前版本的postgres(v10)无法协商(握手)。我希望更新我的操作系统,它将更新我的服务器操作系统分发版本的perl,这应该是postgres v10支持的perl版本。升级操作系统后,我会尝试回复确认/答案。任何其他颜色或可能的原因欢迎。