16

LinuxFedoraノートブックでperlの複数のバージョンを管理するためにperlbrewを使用しています。私はこれを非常に有益に使用して、主にApp::cmdを使用してコマンドラインスクリプトを実行しました。

ここで、にインストールされているさまざまなperlsを使用してCGI::Applicationを使用して記述されたWebアプリケーションの実行に移行したいと思い$HOMEます。私は$HOMEApacheを使用してPerlWebアプリケーションを実行しuser_dirたり、仮想ホストを作成したりすることに精通していますが、これとperlbrewマネージドPerlを統合するクリーンな方法を思い付くことができません。具体的には、これらの質問に対する答えを理解して見つけるのに助けが必要です。

  1. perlbrewの下にmod_perlをインストールするにはどうすればよいですか?
  2. これが行われたと仮定して、現在の正しいperlを取得するようにVirtualHostを構成するにはどうすればよいですか?
  3. これが不可能な場合(私は疑わしいですが)、少なくともローカルインストールを使用してバニラCGIを実行できますか?

ご清聴ありがとうございました。

4

2 に答える 2

17

これは、独自のディレクトリの下でシンボリックリンクを移動するperlbrewの良い使用法ではないと思います。秘訣は、mod_perlモジュールを切り替えることです。mod_perlはperlのメジャーバージョン間でバイナリ互換ではないことを忘れないでください。使用するperl(およびapache)のバージョンごとにapacheに対してコンパイルする必要があります。

perlbrewは本当にあなたのために2つの大きなことをします:

  • perlをインストールします。これは、自分で簡単に実行できます。
  • シンボリックリンクを切り替えるので、perl必要なバージョンは何でもかまいません。

あなたがその最後のものをあきらめた場合、perlbrewはあなたのためにそれほど多くをしていません。シンボリックリンク機能は特に価値があるとは思いません。

perlbrewはそれが何であるかについては問題ないと思いますが、限られた範囲外で何かを始めたら、それを使用しない時が来ました。時間と頭痛の種を節約するためのツールであるはずなので、その目標を達成できない場合は、状況に適したツールではありません。

この状況では、単一の大きなWebアプリケーションをサポートしているので、他に何も使用させない独自のperlインストールを提供します。

その他の質問:

  1. マークダウンプレースホルダー

  2. 設定する必要はありませVirtualHostん。mod_perlを使用している場合、perlはすでにそこにあり、perlを選択することはできません。CGIのものを使用している場合は、シバン行でperlを指定します。apacheが正しいライブラリディレクトリを選択するようにする必要がありますが、perlbrewがそれを処理すると思います。SetEnvhttpd.confで使用する必要があるかもしれません。

  3. バニラCGIの場合、デフォルトのperlbrewバージョンが何であれ、正しい(シンボリックリンク)パスをポイントするだけです。CGIプログラムは、パスが指すすべてのPerlを使用します。

于 2010-09-25T20:11:43.283 に答える
9

mod_perlのバージョンを切り替えるためにperlbrewを使用することを期待しない理由については、briandfoyの回答を参照してください。また、mod_perlで複数の異なるPerlバージョンが必要な場合は、複数のApacheサーバーを実行する必要があると思います。

ただし、Perlをビルドする簡単な方法としてperlbrewを使用することは、私見では有効なことであり、perlbrewでmod_perlを実行する方法についてはいくつかの説明があります。

まず、-Duseshrplibフラグを渡して、perlが共有ライブラリサポートでビルドされていることを確認します(そうでない場合、64ビットシステムでは、-fPICについて混乱するビルドエラーが発生します)。

perlbrew install perl-5.16.3 -Duseshrplib

システムに開発用Apacheライブラリをインストールします。Debianでは、これは使用しているApacheMPMによって異なります。プレフォークMPMの場合:

sudo apt-get install apache2-prefork-dev

またはワーカーMPMの場合:

sudo apt-get install apache2-threaded-dev

次に、mod_perl2をビルドして適切な場所にインストールするためのいくつかのオプションが必要です。これは、cpanmがビルドに失敗することを意味しますが、ソースを取得するために使用できることに注意してください。

cpanm mod_perl2  # fails
cd ~/.cpanm/latest-build/mod_perl-2.0.8/   # adjust mod_perl version

それに応じて、以下のPerlのバージョンを調整してください。(MP_APXSオプションは、Debianベースのシステムに正しいパスを与えることです。これは必要ないかもしれません。)

perl Makefile.PL MP_APXS=/usr/bin/apxs2 \
                 MP_AP_DESTDIR=$HOME/perl5/perlbrew/perls/perl-5.16.3/
make
make install

最後に、Apache構成ファイルのLoadModule行を変更します(それに応じてパスを調整します)。

LoadModule perl_module <your homedir>/perl5/perlbrew/perls/<your perl>/usr/lib/apache2/modules/mod_perl.so

これで、mod_perlのインストールで必要なバージョンのPerlが実行されます。必要なすべてのCPANモジュールをインストールして始めましょう。

于 2013-05-31T15:45:33.910 に答える