我有一个曾经在chroot中运行的perl脚本,现在我希望它能够在chroot之外运行。这意味着我必须以某种方式指出perl只在/ where / chroot / used / to / be / usr / lib中寻找库和模块而不是/ usr / lib。我尝试使用push @INC在脚本中添加新目录,但是依赖性仍然被破坏,查看旧目录。
当我运行脚本时,是否有任何方法可以告诉perl我只希望它在某些目录中查找库和模块?
还是有另一种更好的方法可以确保当常规目录(/ usr / bin,/ usr / lib等)被非标准目标替换时,依赖仍然有效吗?
答案 0 :(得分:3)
要从命令行更改@INC,请使用-I
选项:
perl -lIadded -e 'print for @INC'
在程序中,您需要尽早修改@INC,即在编译期间。这可以通过
完成BEGIN { unshift @INC, '/path/...' }
或使用lib
use lib '/path/...';
您还可以设置PERL5LIB
环境变量:
export PERL5LIB=/path/...
perl -e 'print for @INC'
答案 1 :(得分:0)
您可以使用 lib 将任何新目录放入程序中。
例如
use lib "path";
在您的情况下,只需在程序开头添加此行
use lib "/usr/lib/";
希望这对你有用。