错误:无法加载库libperl.so,PostgreSQL尝试CREATE EXTENSION plperlu

时间:2017-11-30 16:30:14

标签: linux postgresql perl suse

我想在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的位置,所以我搜索并找到这个链接:

https://www.postgresql.org/message-id/D960CB61B694CF459DCFB4B0128514C207B2C9DC%40exadv11.host.magwien.gv.at

...我选择这样做(从上面的链接,但我有不同的路径):  “ - 将包含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?

我有:

  • x86_64-pc-linux-gnu上的PostgreSQL 10.0,由gcc(GCC)4.4.7 20120313(Red Hat 4.4.7-18)编译,64位
  • pgAdmin 4 2.0
  • SUSE Linux Enterprise 12 64位虚拟服务器

更新1:

我从postgres通用电子邮件列表中获得了帮助:现有的perl可能是使用较旧的操作系统构建的(我想我已经拥有)因此与当前版本的postgres(v10)无法协商(握手)。我希望更新我的操作系统,它将更新我的服务器操作系统分发版本的perl,这应该是postgres v10支持的perl版本。升级操作系统后,我会尝试回复确认/答案。任何其他颜色或可能的原因欢迎。

0 个答案:

没有答案