Edited at

Perl5のPSGIアプリ用buildpackのまとめ

More than 3 years have passed since last update.

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にキャッシュする。



  • 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からダウンロードしてインストールする。




  • 依存解決: cpanmを使ってcarton 0.9.59をインストールして、carton install --deploymentでアプリケーションが依存しているCPANモジュールをインストールする。



  • 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/をキャッシュする。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)


リンク


sng2c/heroku-buildpack-perlcarton

miyagawa/heroku-buildpack-perlのfork。

確認したバージョン: e32f90b1 (2014/09/12)



  • detect: cpanfilevendorが存在するときに有効になる。


  • 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に追加する。


リンク

CC0