2013-09-26 29 views
5

靈感來自How can I use CPAN as a non-root user?我想知道,如何爲非登錄用戶設置cpanm(如www)?沒有登錄,所以我不知道如何包含一些目錄到@INC如何爲非登錄用戶設置單獨的Perl模塊?

編輯: 如何設置永久環境變量像PERL5LIB非登錄用戶?我不能從.bashrc(需要登錄)而不是從/etc/environment(設置爲所有人)來設置它。

在每個腳本的基礎:改變@INC

+0

也許這裏的一些建議可能有所幫助:http://unix.stackexchange.com/questions/88201/whats-the-best-distro-shell-agnostic-way-to-set-environment-variables/88229 –

+0

@SlavenRezic :謝謝,但這些解決方案涉及每個用戶的登錄或設置變量。 –

+0

你看過'〜/ .pam_environment'解決方案嗎?注意'〜'。 –

回答

3

方法

在每個進程的基礎:

  • 設置從父進程的PERL5LIB的環境變量。
    • shexport PERL5LIB=... ; perl ...
    • shPERL5LIB=... perl ...
    • apacheSetEnv PERL5LIB ...

以每個perl基礎:

  • 指定directorie如果在構建perl時配置爲@INC
  • use lib ...;位於由perl -V:sitelib返回的目錄中的名爲sitecustomize.pl的腳本中。 [1]

當然,你也可以自己安裝本地Perl,可能使用perlbrew


注:如果在perl已配置-Dusesitecustomize

  1. Perl的僅查找sitecustomize.pl。與perl -V:usesitecustomize檢查,看看是否是。
+0

對PERL5ENV的一些參考? –

+0

在腳本之外,你如何獲得它的非登錄(系統)用戶? –

+0

已添加文檔的鏈接。它是一個'PATH'類型的變量,即一個冒號分隔的路徑,用於搜索。 (它們被添加到'@ INC'中。)像'use lib'(而不是'-I')一樣,任何arch subdirs也會被添加。 – ikegami

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 "[email protected]" 

NB我不熱心推薦這個。它與sitecustomize.plsuggested elsewhere類似,但更加駭人聽聞。與其他已經回答的人一樣,我認爲確定所有您關心的父進程(apache,cron和...?)並設置PERL5LIB並不會太困難。

相關問題