2012-08-30 7 views
6

Ich möchte eine Catalyst-Anwendung auf meinem Webserver ausführen, der System Perl v5.10 hat. Ich möchte mindestens v5.12 für die App verwenden, und ich möchte mich nicht mit dem System Perl einmischen.Was ist die empfohlene Methode, um eine Nicht-Systemperl für eine Webanwendung zu verwenden?

Unser Systemadministrator besteht darauf, dass die App. von einem Nicht-Shell-Benutzer (z. B. "niemand") ausgeführt werden

Ich weiß, ich kann perlbrew verwenden, um Nicht-System-Perl für die Entwicklung zu verwenden, aber ich bin mir nicht sicher, was der beste Weg, um dann die Live-Version auszuführen ist. Wie empfehlen Menschen, mit dieser Situation umzugehen?

Antwort

4

Geben Sie nobody (d. H. Jeder) lesen und Ausführen von Berechtigungen für die Perl-ausführbare (n) und alle Bibliotheken (alles unter den @INC-Verzeichnissen).

Ändern Sie die Shebang-Zeile in allen Ihren Anwendungsskripts (einschließlich mindestens alles unter Ihrem Verzeichnis ./scripts) in die Instanz perl, die Sie verwenden möchten. Oder wenn Sie flexibel sein wollen, zeigen Sie die Shebang-Linie auf einen symbolischen Link, der auf eine gewünschte ausführbare Datei zeigt. Stellen Sie sicher, dass dieser Link auch für nobody zugänglich ist.

Starten Sie Ihre Anwendung neu, wenn Sie den symbolischen Link auf eine andere Perl-Version verweisen.

6

Da Sie mit Perlbrew vertraut sind, können Sie immer noch Perl verwenden.

perlbrew install 5.16.1 --as=5.16.1t -Dusethreads 

Sie stellen nur sicher, dass Sie die richtigen Berechtigungen erteilen. Sagen Sie Ihre $PERLBREW_ROOT ist /home/djh/perl5/perlbrew (Standard):

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"!!! 

dann die folgende Shebang-Zeile in Ihrem Skript verwenden:

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

Aber vielleicht wollen Sie nicht in Ihrem Zuhause. Wenn ja, können Sie Folgendes tun:

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 

Der Installer wird die Berechtigungen korrekt einrichten. Alles, was Sie tun müssen, um den Shebang

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

gesetzt („t“ ist meine Konvention für Gewinde bauen. -Dusethreads entfernen, wenn Sie nicht Thread-Unterstützung mögen.)

+0

@djh, Hinzugefügt zu meiner Antwort. – ikegami