6

システムperlv5.10を搭載したWebサーバーでCatalystアプリケーションを実行したいと思います。アプリには少なくともv5.12を使用したいのですが、システムのPerlに干渉したくありません。

私たちのシステム管理者は、アプリを主張しています。非シェルユーザー(「nobody」など)によって実行される

perlbrewを使用して、開発に非システムperlを使用できることは知っていますが、ライブバージョンを実行するための最良の方法がわかりません。人々はこの状況に対処するためにどのようにアドバイスしますか?

4

2 に答える 2

6

あなたはperlbrewに精通しているので、それを使ってPerlをインストールすることもできます。

perlbrew install 5.16.1 --as=5.16.1t -Dusethreads

適切な権限を付与していることを確認してください。あなた$PERLBREW_ROOT/home/djh/perl5/perlbrew(デフォルト)だと言う:

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

次に、スクリプトで次のシバン行を使用します。

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

しかし、多分あなたはあなたの家にそれを望まないでしょう。もしそうなら、これはあなたができることです:

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

インストーラーは権限を正しく設定します。あなたがしなければならないのは、シェバンをに設定することです

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

(「t」はスレッドビルドの私の慣習です-Dusethreads。スレッドサポートが必要ない場合は削除してください。)

于 2012-08-30T16:10:28.763 に答える
4

nobodyperl実行可能ファイルとすべてのライブラリ(@INCディレクトリの下にあるすべてのもの)に対する読み取りと実行のアクセス許可を(つまり、全員に)与えます。

すべてのアプリケーションスクリプト(少なくとも./scriptsディレクトリの下のすべてを含む)のシバン行を、使用するインスタンスに変更perlします。または、柔軟に対応したい場合は、目的の実行可能ファイルを指すシンボリックリンクにシバンラインを向けperlます。このリンクにもアクセスできることを確認してくださいnobody

シンボリックリンクを別のバージョンのPerlにポイントするたびに、アプリケーションを再起動します。

于 2012-08-30T15:40:52.883 に答える