2013-09-26 16 views
5

Zainspirowany How can I use CPAN as a non-root user? Chciałbym wiedzieć, jak skonfigurować cpanm dla użytkowników niezalogowanych (takich jak www)? Nie ma logowania, więc nie wiem, jak zawrzeć jakiś katalog do @INC.Jak skonfigurować oddzielne moduły Perla dla użytkowników niezalogowanych?

Edytuj: Jak mogę ustawić na stałe środowisko zmienne, takie jak PERL5LIB dla użytkownika, który nie jest zalogowany? Nie mogę ustawić go od .bashrc (wymaga zalogowania), a nie od /etc/environment (ustawia dla wszystkich).

+0

Może niektóre sugestie mogą pomóc: http://unix.stackexchange.com/questions/88201/whats-the-best-distro-shell-agnostic-way-to-set-environment-variables/88229 –

+0

@SlavenRezic : Dziękuję, ale rozwiązania te obejmują logowanie lub ustawianie zmiennych dla każdego użytkownika. –

+0

Czy spojrzałeś na rozwiązanie '~/.pam_environment'? Zwróć uwagę na '~'. –

Odpowiedz

3

Metody zmieniając @INC:

na zasadzie per-skrypt:

Na podstawie każdego procesu:

  • Ustaw var PERL5LIB env z procesu macierzystego.
    • sh: export PERL5LIB=... ; perl ...
    • sh: PERL5LIB=... perl ...
    • apache: SetEnv PERL5LIB ...

Na per- perl podstawie:

  • Określanie directorie s dla @INC podczas konfigurowania perl podczas budowania.
  • use lib ...; w skrypcie o nazwie sitecustomize.pl w katalogu zwróconym przez perl -V:sitelib. [1]

Oczywiście, można również zainstalować własną lokalną Perl, być może przy użyciu perlbrew.


Uwagi:

  1. Perl tylko wygląda na sitecustomize.pl Jeśli perl został skonfigurowany tak, aby zrobić z -Dusesitecustomize. Sprawdź pod numerem perl -V:usesitecustomize, czy jest.
+0

jakieś odniesienie do PERL5ENV? –

+0

Poza skryptem, w jaki sposób uzyskać go dla użytkownika niezalogowanego (systemowego)? –

+0

Dodano linki do dokumentów. Jest to zmienna "PATH", tzn. Oddzielone dwukropkami ścieżki do wyszukiwania. (Są dodane do '@ INC'.) Podobnie jak" use lib' (i w przeciwieństwie do '-I"), dodawane będą także wszelkie podkatalogi arch. – ikegami

0

Bądź pierwszy perl w $ PATH skrypt, który sprawdza, czy plik o nazwie po wywołującego użytkownika, źródła tego pliku, a następnie wywołuje prawdziwą perla:

 
    $ 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 Nie polecam tego serdecznie. Jest podobny do sitecustomize.plsuggested elsewhere, ale bardziej hackowy.Podobnie jak inni, którzy odpowiedzieli, nie sądzę, że zbyt trudne byłoby zidentyfikowanie wszystkich procesów nadrzędnych, o które się troszczycie (apache, cron i ...?) I ustawienie tam PERL5LIB.

Powiązane problemy