Perl 模块位置问题

Perl 模块位置问题

我在使用 Ubuntu 20.04 LTS。

我运行以下命令尝试连接到我的 PostgreSQL 数据库:

sudo -i -u postgres
postgres@{username}:~$ psql

这引发了以下错误:

Can't locate warnings.pm:   /usr/local/lib/x86_64-linux-gnu/perl/5.30.0/warnings.pm: Permission denied at /usr/bin/psql line 19.

我随后发现目录 '/usr/local/lib/x86_64-linux-gnu' 不存在,因此当然找不到 '/usr/local/lib/x86_64-linux-gnu/perl/5.30.0/warnings.pm'。运行该命令perl -e 'print "@INC";' | tr " " "\n"得到以下结果:

/etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.30.0
/usr/local/share/perl/5.30.0
/usr/lib/x86_64-linux-gnu/perl5/5.30
/usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl/5.30
/usr/share/perl/5.30
/usr/local/lib/site_perl
/usr/lib/x86_64-linux-gnu/perl-base

这似乎揭示了问题,因为这里以“/usr/local”开头的路径实际上都不存在(但其他路径存在)。是否可以通过使用 .bashrc 更改 perl 路径来解决此问题?如果可以,我到底该写什么?(我查过这个但感到困惑。)有人能解释为什么会发生这种情况吗?

答案1

这个问题的解决方案正如我所料:我只需要编辑我的 PERL5LIB 路径,以便不包含“/local/”的路径首先出现。我已将 .bashrc 更改为export PERL5LIB=/usr/share/perl/5.30:/etc/perl:/usr/lib/x86_64-linux-gnu/perl5/5.30:/usr/share/perl5:/usr/lib/x86_64-linux-gnu/perl/5.30:/usr/lib/x86_64-linux-gnu/perl-base。但仍然有点困惑,不知道这是怎么发生的 - 为什么设置这些路径却不指向任何东西。

相关内容