![Perl 模块位置问题](https://linux22.com/image/1178028/Perl%20%E6%A8%A1%E5%9D%97%E4%BD%8D%E7%BD%AE%E9%97%AE%E9%A2%98.png)
我在使用 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
。但仍然有点困惑,不知道这是怎么发生的 - 为什么设置这些路径却不指向任何东西。