如何为非登录用户设置单独的Perl模块?

时间:2013-09-26 08:40:00

标签: perl cpan

启发How can I use CPAN as a non-root user?我想知道,如何为非登录用户设置cpanm(如www)?没有登录,所以我不知道如何在@INC中添加一些目录。

编辑: 我如何为非登录用户设置PERL5LIB永久环境变量?我无法从.bashrc(需要登录)而不是/etc/environment(设置为每个人)设置它。

2 个答案:

答案 0 :(得分:3)

更改@INC的方法:

基于每个脚本:

基于每个流程:

  • 从父进程设置PERL5LIB env var。
    • shexport PERL5LIB=... ; perl ...
    • shPERL5LIB=... perl ...
    • apacheSetEnv PERL5LIB ...

基于每{ - 1}}:

  • 在构建perl时指定@INC的目录。
  • use lib ...;位于perl返回的目录中名为sitecustomize.pl的脚本中。 [1]

当然,您也可以使用perlbrew安装自己的本地Perl。


注意:

  1. 如果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并不太费劲。

相关问题