2013-09-26 2 views
5

インスピレーションHow can I use CPAN as a non-root user?私は、非ログインユーザ(例:www)のためにcpanmを設定する方法を知っていますか?ログインがないので、@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のenv VARを設定します。
    • shexport PERL5LIB=... ; perl ...
    • shPERL5LIB=... perl ...
    • apacheSetEnv PERL5LIB ...

パーperl基づき:directorieを指定

  • sを@INCに設定すると、perlをビルドするときに設定されます。
  • use lib ...;perl -V:sitelibによって返されるディレクトリ内のsitecustomize.plという名前のスクリプト内にあります。 は、[1]

もちろん、あなたもおそらくperlbrewを使用して、独自のローカルのPerlをインストールすることができます。


注:

  1. perl-Dusesitecustomizeで行うように設定されている場合はPerlのみsitecustomize.plを探します。それがあったかどうかを確認するにはperl -V:usesitecustomizeにチェックしてください。
+0

PERL5ENVへの参照はありますか? –

+0

スクリプト以外では、ログインしていない(システム)ユーザーの場合はどのように入手できますか? –

+0

ドキュメントへのリンクが追加されました。これは 'PATH'のようなvar、つまりコロンで区切られた検索パスです。 ( '@ INC'に追加されています。)' use lib'( '-I'と違って)と同様に、任意のアーチサブディレクトリも追加されます。 – ikegami

0

、あなたの$ PATHの最初のperl起動したユーザ名にちなんで名付けられたファイルをチェックするシェルスクリプトを作成し、そのファイルをソースして、実際の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を設定するのは難しいとは思わない。

関連する問題