Perl无法识别根用户的模块/模块路径

Perl无法识别根用户的模块/模块路径,perl,ubuntu,cpan,cpanm,locallib,Perl,Ubuntu,Cpan,Cpanm,Locallib,我是Perl新手,请耐心听我说。谢谢你的帮助 我有一台Ubuntu机器,上面有Perl。我跟着火车走 我使用cpanm将DBI和其他模块安装到我的系统中。我担心我的系统上可能有其他DBI模块,这可能是问题的一部分。这是find/-name'DBI.pm'2>/dev/null的结果: /home/ubuntu/.cpanm/work/16125643.6178/DBI-1.643/blib/lib/DBI.pm /home/ubuntu/.cpanm/work/16125643.6178/DBI

我是Perl新手,请耐心听我说。谢谢你的帮助

我有一台Ubuntu机器,上面有Perl。我跟着火车走

我使用cpanm将DBI和其他模块安装到我的系统中。我担心我的系统上可能有其他DBI模块,这可能是问题的一部分。这是
find/-name'DBI.pm'2>/dev/null
的结果:

/home/ubuntu/.cpanm/work/16125643.6178/DBI-1.643/blib/lib/DBI.pm
/home/ubuntu/.cpanm/work/16125643.6178/DBI-1.643/blib/lib/Bundle/DBI.pm
/home/ubuntu/.cpanm/work/16125643.6178/DBI-1.643/DBI.pm
/home/ubuntu/.cpanm/work/16125643.6178/DBI-1.643/lib/Bundle/DBI.pm
/home/ubuntu/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/DBI.pm
/home/ubuntu/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/Bundle/DBI.pm
我在.bashrc文件中添加了两行。(我添加了第二行,因为我破坏了非root用户的东西,这就解决了它;也许我破坏了local::lib的东西?)

我可以作为非root用户运行我的perl脚本。 如果使用
sudo perlScript.pl
运行,则会出现以下错误:
无法在@INC中找到DBI.pm(您可能需要安装DBI模块)

我已经对@INC进行了一段时间的故障排除,但我不知道如何为root用户调整它。我尝试了各种方法,包括将PERL5LIB添加到.profile,并像这样调用我的脚本:
sudo sh-c.~/。轮廓perl~/perlScript/perlScript.pl“argForScript”
(我验证了PERL5LIB是用
sudo sh-c.~/.profile设置的;echo$PERL5LIB'

然而,我总是得到@INC错误。我注意到的最明显的事情是比较
sudoperl-V
perl-V
。sudo调用不显示任何环境变量,@INC不包含所需的PERL5LIB位置。非sudo调用确实显示所需的ENV和@INC变量


我正在考虑对local::lib和cpan使用root权限进行擦除和重新安装。现在还不确定还可以尝试什么。

这些命令最终对我有效。我用local::lib/non-sudo cpan安装破坏了我的第一个环境,所以我安装了一个新的VM

sudo apt install make
sudo apt install build-essential
sudo apt install libmysqlclient-dev
sudo cpan App::cpanminus
cpanm --sudo DBI
cpanm --sudo Array::Utils
cpanm --sudo DBD::mysql

为什么要为用户“ubuntu”构建本地库,并且在脚本最后必须以“root”身份运行时不全局安装Perl模块?“如果我使用sudo运行…”为什么要使用
sudo
运行它?当您安装
local::lib
时,您是为用户
ubuntu
安装的,因此它对其他用户不起作用,比如
root
Re“我正在考虑使用local::lib和cpan的root权限擦除内容并重新安装。现在还不确定还需要尝试什么。”,这并不能阻止sudo不把PERL5LIB传下去。在sudo内部设置PERL5LIB就可以了。我更喜欢安装自己的Perl,而不是使用local::lib
perlbrew
可以提供帮助。如果你为“ubuntu”用户安装模块,然后让root用户使用,你现在就有了一个安全漏洞,ubuntu用户可以升级到root权限。由root执行的内容应由root所有。
sudo apt install make
sudo apt install build-essential
sudo apt install libmysqlclient-dev
sudo cpan App::cpanminus
cpanm --sudo DBI
cpanm --sudo Array::Utils
cpanm --sudo DBD::mysql