启发How can I use CPAN as a non-root user?我想知道,如何为非登录用户设置cpanm(如www
)?没有登录,所以我不知道如何在@INC
中添加一些目录。
编辑:
我如何为非登录用户设置PERL5LIB永久环境变量?我无法从.bashrc
(需要登录)而不是/etc/environment
(设置为每个人)设置它。
答案 0 :(得分:3)
更改@INC
的方法:
基于每个脚本:
use lib ...;
-Mlib=...
在shebang线上。基于每个流程:
PERL5LIB
env var。
sh
:export PERL5LIB=... ; perl ...
sh
:PERL5LIB=... perl ...
apache
:SetEnv PERL5LIB ...
基于每{ - 1}}:
perl
时指定@INC
的目录。use lib ...;
位于perl
返回的目录中名为sitecustomize.pl
的脚本中。 [1] 当然,您也可以使用perlbrew
安装自己的本地Perl。
注意:
perl -V:sitelib
已配置为sitecustomize.pl
,则Perl仅查找perl
。请与-Dusesitecustomize
核对,看看是否是。答案 1 :(得分:0)
在$ PATH中创建第一个perl
shell脚本,该脚本检查以调用用户命名的文件,获取该文件,然后调用真实的perl:
$ cat /usr/local/etc/perl.user.d/www-data PERL5LIB=/whatever/you/need export PERL5LIB
$ cat /usr/local/bin/perl #! /bin/sh PERLBIN=/usr/bin/perl USER_CUSTOMIZE=/usr/local/etc/perl.user.d/$(whoami) [ -e "$USER_CUSTOMIZE" ] && source "$USER_CUSTOMIZE" exec $PERLBIN "$@"
N.B。我不衷心推荐这个。它与sitecustomize.pl
suggested elsewhere类似,但更为苛刻。像其他已经回答的人一样,我认为识别你关心的所有父进程(apache,cron和......?)并在那里设置PERL5LIB并不太费劲。