2012-08-30 9 views
6

Voglio eseguire un'applicazione Catalyst sul mio server web, che ha sistema perl v5.10. Voglio usare almeno v5.12 per l'app., E non voglio intromettermi con il sistema perl.Qual è il modo consigliato di utilizzare un perl non di sistema per un'app Web?

Il nostro sysadmin insiste sul fatto che l'app. essere eseguito da un utente non-shell (come "nessuno")

So che posso usare perlbrew per utilizzare perl non di sistema per lo sviluppo, ma non sono sicuro quale sia il modo migliore per eseguire la versione live è. In che modo le persone consigliano di gestire questa situazione?

risposta

4

Dare nobody (vale a dire tutti) leggere ed eseguire il permesso per gli eseguibili perl e tutte le librerie (tutto sotto le directory @INC).

Modificare la linea shebang in tutti gli script delle applicazioni (incluso almeno tutto nella directory ./scripts) nell'istanza di perl che si desidera utilizzare. O se vuoi essere flessibile, punta la linea shebang su un link simbolico che punta a un eseguibile desiderato perl. Assicurati che questo link sia accessibile anche a nobody.

Riavviare l'applicazione ogni volta che si punta il collegamento simbolico a una versione diversa di Perl.

6

Dato che si ha familiarità con perlbrew, si può ancora usarlo per installare Perl.

perlbrew install 5.16.1 --as=5.16.1t -Dusethreads 

Assicurati di fornire le autorizzazioni appropriate. Di 'la tua $PERLBREW_ROOT è /home/djh/perl5/perlbrew (il valore predefinito):

chmod a+x /home/djh/ 
chmod a+x /home/djh/perl5/ 
chmod a+x /home/djh/perl5/perlbrew/ 
chmod a+x /home/djh/perl5/perlbrew/perls/ 
chmod -R a+rX /home/djh/perl5/perlbrew/perls/5.16.1t/ # Capital "X"!!! 

Quindi utilizzare la seguente riga di shebang nello script:

#!/home/djh/perl5/perlbrew/perls/5.16.1t/bin/perl 

Ma forse non si vuole nella vostra casa. Se è così, questo è ciò che si può fare:

cd /tmp 
wget http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/perl-5.16.1.tar.bz2 
tar xvjf perl-5.16.1.tar.bz2 
cd perl-5.16.1 
sh Configure -des -Dprefix=/opt/perls/5.16.1t -Dusethreads 
make test 

sudo mkdir /opt/perls/5.16.1t 
sudo chown djh:djh /opt/perls/5.16.1t 
make install 

Il setup di installazione delle autorizzazioni in modo corretto. Tutto quello che dovete fare è impostare la baracca per

#!/opt/perls/5.16.1t/bin/perl 

("t" è la mia convenzione per costruisce filettato. Rimuovere -Dusethreads se non si desidera il supporto thread.)

+0

@djh, Added alla mia risposta – ikegami