tl;dr - HerokuでPSGIアプリを動かすなら https://github.com/pnu/heroku-buildpack-perl がおすすめ。
miyagawa/heroku-buildpack-perl
確認したバージョン: ae9e87e3 (2014/10/31)
-
detect:
app.psgi
が存在するときにbuildpackが有効になる。 -
Perl: dynoに最初からインストールされている
/usr/bin/perl
を使う。 -
依存解決: cpanmをインストールして
cpanm --installdeps .
を実行することで依存しているCPANモジュールをインストールする。-
キャッシュ: cpanmによってインストールされたモジュールを
CACHE_DIR
にキャッシュする。
-
キャッシュ: cpanmによってインストールされたモジュールを
- WebサーバーはStarman。
miyagawa/heroku-buildpack-perl#carton
miyagawa/heroku-buildpack-perlのfork。
確認したバージョン: 3066d917 (2013/07/24)
-
Perl:
.perl-version
に対応するPerlをcache.bulknews.net/heroku/perl-$PERL_VERSION.tgz
からダウンロードしてインストールする。- 利用できる最新バージョンは5.18.0。
- Support perl versions · Issue #3 · miyagawa/heroku-buildpack-perl
-
依存解決: cpanmを使ってcarton 0.9.59をインストールして、
carton install --deployment
でアプリケーションが依存しているCPANモジュールをインストールする。- おそらくこのバージョンのcartonだと
cpanfile.snapshot
ではなくcarton.lock
が使われるはず(perl-carton/carton at v0.9.59 - README)。 - 現在はcurl --silent https://raw.github.com/miyagawa/cpanminus/master/cpanm returns no content · Issue #10の問題でcpanmのインストールに失敗する。masterブランチでは修正済みだがcartonブランチには反映されていない。
-
キャッシュ:
./local/
を$CACHE_DIR/$PERL_VERSION/local
にキャッシュする。
- おそらくこのバージョンのcartonだと
- Webサーバーとして
carton exec
を経由してstarmanを起動する。
作者による解説: Carton and perl version support: miyagawa/heroku-buildpack-perl - Tatsuhiko Miyagawa's blog
pnu/heroku-buildpack-perl
確認したバージョン: ae9e87e3 (2014/08/14)
miyagawa/heroku-buildpack-perlのfork。
Perl環境向けのbuildpackの中ではおそらく一番作りこまれていて、汎用性が高い。まずはこれを使うことを検討するとよさそう。
基本的な機能や使い方はREADMEにまとまっている。
compileだけで100行近くの分量があるので、重要そうな部分だけ紹介する。
-
Perl:
.perl-version
に対応するPerlをhttps://heroku-buildpack-perl.s3.amazonaws.com/perl-$PERL_VERSION.tgz
からダウンロードしてインストールする。- 利用できる最新バージョンは5.20.0。
-
system
を指定するとdynoのperlが使われる。
-
依存解決:
-
carton install --deployment --cached
,cpanm --installdeps .
で依存しているモジュールをインストールする。- local::libを使って、cpanmによるモジュールのインストール先もcartonと同じ
./local/
に設定している。
- local::libを使って、cpanmによるモジュールのインストール先もcartonと同じ
-
キャッシュ:
./local/
をキャッシュする。Perlのバージョン指定が前回のcompile時とは違っていたらキャッシュを破棄する。
-
- 依存モジュールが多すぎてcompileがタイムアウトするアプリ向けに、あらかじめtarで固めておいた
./local/
をダウンロードしてそのまま使う機能がある。 - 環境変数でPerlを取得するサーバー、cpanmのオプション、CPANのミラー、Perlのバージョン(
.perl-version
より優先される)などを設定できる。
shoichikaji/heroku-buildpack-perl#relocatable-perl
miyagawa/heroku-buildpack-perlのfork。
確認したバージョン: 1d021019 (2014/09/23)
- Perl: https://github.com/shoichikaji/relocatable-perl でreleaseされているrelocatableなperlバイナリをインストールする。
リンク
sng2c/heroku-buildpack-perlcarton
miyagawa/heroku-buildpack-perlのfork。
確認したバージョン: e32f90b1 (2014/09/12)
-
detect:
cpanfile
とvendor
が存在するときに有効になる。 -
Perl: dynoに最初からインストールされている
/usr/bin/perl
を使う。 -
依存解決:
carton install --deployment --cached
で依存しているモジュールをインストールする。
judofyr/perloku
確認したバージョン: f5a55a8c (2014/08/21)
-
detect:
Perloku
が存在するときに有効になる。 - Perl: perl 5.18.1を perloku.s3.amazonaws.com からインストールする。
- 依存解決: cpanmで依存しているモジュールをインストールする。
kazeburo/heroku-buildpack-perl-procfile
確認したバージョン: 571d80fc (2014/06/27)
-
detect: 「
Makefile.PL
,Build.PL
,META.json
,cpanfile
」のどれかが存在して、かつProcfile
が存在するときにbuildpackが有効になる。 -
Perl: dynoに最初からインストールされている
/usr/bin/perl
を使う。 -
依存解決:
cpanm --installdeps .
で依存しているモジュールをインストールする。 -
compile
の実行時に、パスを通すシェルスクリプトを.profile.dに追加する。
リンク
-
Third-Party Buildpacks | Heroku Dev Center
- "A buildpack that runs Perl/PSGI apps" - miyagawa/heroku-buildpack-perl
- "Buildpack for Apache2/mod_perl apps" - lstoll/heroku-buildpack-perl