2013-09-26 3 views
5

Вдохновленный How can I use CPAN as a non-root user? Я хотел бы знать, как настроить cpanm для пользователей, не являющихся пользователями (например, www)? Вход в систему отсутствует, поэтому я не знаю, как включить какой-то каталог в @INC.Как настроить отдельные модули Perl для пользователей без входа?

Редактировать: Как я могу установить постоянное окружение var как PERL5LIB для пользователя без входа? Я не могу установить его с .bashrc (требуется логин), а не от /etc/environment (устанавливается каждому).

+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

Методы изменения @INC:

На основе каждого сценария:

На основе каждого процесса:

  • Установите PERL5LIB ENV вар из родительского процесса.
    • sh: export PERL5LIB=... ; perl ...
    • sh: PERL5LIB=... perl ...
    • apache: SetEnv PERL5LIB ...

На ослабленным perl основе:

  • Указание directorie s для @INC при настройке perl при его создании.
  • use lib ...; в скрипте с именем sitecustomize.pl в каталоге, возвращаемом perl -V:sitelib. [1]

Конечно, вы также можете установить свой собственный локальный Perl, возможно, с помощью perlbrew.


Примечания:

  1. Perl выглядит только для sitecustomize.pl, если perl настроен делать с -Dusesitecustomize. Обратитесь к perl -V:usesitecustomize, чтобы узнать, было ли это.
+0

некоторая ссылка на PERL5ENV? –

+0

Вне сценария, как вы его получите для пользователя, не входящего в систему (система)? –

+0

Добавлены ссылки на документы. Это «PATH» -образный var, то есть разделенные двоеточиями пути, в которые нужно искать. (Они добавлены в '@ INC'.) Подобно' use lib' (и в отличие от '-I'), будут добавлены любые поддиры arch. – ikegami

0

Сделайте первый perl в вашем $ PATH скрипт, который проверяет файл с именем после того, как пользователя вызывающего, источников файла, а затем вызывает реальную 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.

Смежные вопросы