5

灵感来自如何以非 root 用户身份使用 CPAN?我想知道,如何为非登录用户(如www)设置 cpanm?没有登录,所以我不知道如何在@INC.

编辑:我如何为非登录用户设置像 PERL5LIB 这样的永久环境变量?我不能从.bashrc(需要登录)而不是从/etc/environment(设置给所有人)设置它。

4

2 回答 2

3

改变方法@INC

在每个脚本的基础上:

在每个进程的基础上:

  • 从父进程设置PERL5LIB环境变量。
    • shexport PERL5LIB=... ; perl ...
    • shPERL5LIB=... perl ...
    • apacheSetEnv PERL5LIB ...

逐项perl

  • @INC在构建时指定目录perl
  • use lib ...;sitecustomize.pl在由 .返回的目录中命名的脚本中perl -V:sitelib[1]

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


笔记:

  1. Perl 仅查找sitecustomize.plTheperl是否已配置为与-Dusesitecustomize. 检查perl -V:usesitecustomize是否是。
于 2013-09-26T11:31:27.750 回答
0

在 $PATH 中创建第perl一个 shell 脚本,检查以调用用户命名的文件,获取该文件,然后调用真正的 perl:

    $ cat /usr/local/etc/perl.user.d/www-data
    PERL5LIB=/随便/你/需要
    导出 PERL5LIB
    $ cat /usr/local/bin/perl
    #!/bin/sh

    PERLBIN=/usr/bin/perl

    USER_CUSTOMIZE=/usr/local/etc/perl.user.d/$(whoami)

    [ -e "$USER_CUSTOMIZE" ] && 源 "$USER_CUSTOMIZE"

    执行 $PERLBIN "$@"

注意 ,我并不衷心推荐这个。它类似于sitecustomize.pl 其他地方的建议,但更hackish。与其他回答的人一样,我认为识别您关心的所有父进程(apache、cron 和...?)并在那里设置 PERL5LIB 不会太费力。

于 2013-09-26T20:33:32.217 回答