Use Carton

Post on 08-Jul-2015

1.906 views 8 download

Transcript of Use Carton

Hokkaido.pm #6@aloelight

Carton使ってみた

自己紹介•佐々木 義広• Twitter: @aloelight• CPAN: YSASAKI•Webアプリ作成とサーバの管理

Carton• Bundler for Perl• CPAN Moduleの依存関係を解決• Authorがmiyagawaさん

使い方

carton install 1/3•引数無しだとBuild.PLかMakefile.PLから依存モジュールをインストール

•引数にモジュール名を指定して、個別にインストール可能

• local/にlocal::lib形式でインストール•依存情報はcarton.lockに書き込まれる

carton install 2/3•個別インストールでバージョン指定が可能

• carton install URI~1.51•インストール済みモジュールの更新の場合はバージョン指定が必要

carton install 3/3• carton install --deployment• deploy用• carton.lockから依存情報を取り出して、インストールしてくれる

carton uninstall•必要なくなったモジュールをアンインストールできる

• cartonでモジュールを管理している場合はpmuninstallは必要なさそう

carton exec• PATHと@INCを適切に設定して、引数のコマンドを実行してくれる

• carton install Plack && carton exec -- plackup

• PATHにlocal/binを追加• PERL5OPTで@INCをよろしく整理

シンプル!これなら私でも使える

早速使ってみた(※PODにALPHAって文字がみえるけどね!)

使用事例• Tweet::ToDelicious•某サービスのJSON RPC Server

Tweet::ToDeliciousの場合

Tweet::ToDelicious•開発環境 Mac OSX Lion•本番環境 FreeBSD 8.1•依存モジュール• 12 dists in Makefile.PL• 53 dists in carton.lock• CPAN形式のディレクトリ構成•個人プロジェクト

移行作業• git clone $URL $PROJECT_DIR• cd $PROJECT_DIR• carton install --deployment• carton exec -Ilib ./bin/t2delicious.pl

簡単でした

JSON RPC Serverの場合

JSON RPC Server•開発環境 Ubuntu on VMware•本番環境 CentOS•依存モジュール• 39 dists in Makefile.PL• 131 dists in carton.lock• CPAN形式のディレクトリ構成•業務の新規プロジェクト

Tweet::ToDeliciousとほぼ同じ但し、OrePAN使ってます

Mirrorの指定• PERL_CPANM_OPTを使う• まちがい

• PERL_CARTON_MIRRORを使う• せいかい

PERL_CARTON_MIRROR

• defaultはcpan.metacpan.org• PERL_CPAN_OPTがダメな理由•内部でlocal $ENV{PERL_CPANM_OPT}

移行作業は一緒

俺はこう思う• Carton いいね!•お手軽に依存モジュールが管理できる•Makefile.PLだけよりは安心•シンプルなのでスライドに書くことがない•まだALPHAなので自己責任で使おう

おまけ

• perlbrew install-cpanm• perlbrew install perl-5.14.2• perlbrew lib create $PROJECT• perlbrew switch perl-5.14.2@$PROJECT• cpanm install Carton• cd $PROJECT_DIR• carton install • carton exec -- plackup -a app.psgi

プロジェクト環境の構築

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