use carton
TRANSCRIPT
![Page 1: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/1.jpg)
Hokkaido.pm #6@aloelight
Carton使ってみた
![Page 2: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/2.jpg)
自己紹介•佐々木 義広• Twitter: @aloelight• CPAN: YSASAKI•Webアプリ作成とサーバの管理
![Page 3: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/3.jpg)
Carton• Bundler for Perl• CPAN Moduleの依存関係を解決• Authorがmiyagawaさん
![Page 4: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/4.jpg)
使い方
![Page 5: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/5.jpg)
carton install 1/3•引数無しだとBuild.PLかMakefile.PLから依存モジュールをインストール
•引数にモジュール名を指定して、個別にインストール可能
• local/にlocal::lib形式でインストール•依存情報はcarton.lockに書き込まれる
![Page 6: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/6.jpg)
carton install 2/3•個別インストールでバージョン指定が可能
• carton install URI~1.51•インストール済みモジュールの更新の場合はバージョン指定が必要
![Page 7: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/7.jpg)
carton install 3/3• carton install --deployment• deploy用• carton.lockから依存情報を取り出して、インストールしてくれる
![Page 8: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/8.jpg)
carton uninstall•必要なくなったモジュールをアンインストールできる
• cartonでモジュールを管理している場合はpmuninstallは必要なさそう
![Page 9: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/9.jpg)
carton exec• PATHと@INCを適切に設定して、引数のコマンドを実行してくれる
• carton install Plack && carton exec -- plackup
• PATHにlocal/binを追加• PERL5OPTで@INCをよろしく整理
![Page 10: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/10.jpg)
シンプル!これなら私でも使える
![Page 11: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/11.jpg)
早速使ってみた(※PODにALPHAって文字がみえるけどね!)
![Page 12: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/12.jpg)
使用事例• Tweet::ToDelicious•某サービスのJSON RPC Server
![Page 13: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/13.jpg)
Tweet::ToDeliciousの場合
![Page 14: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/14.jpg)
Tweet::ToDelicious•開発環境 Mac OSX Lion•本番環境 FreeBSD 8.1•依存モジュール• 12 dists in Makefile.PL• 53 dists in carton.lock• CPAN形式のディレクトリ構成•個人プロジェクト
![Page 15: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/15.jpg)
移行作業• git clone $URL $PROJECT_DIR• cd $PROJECT_DIR• carton install --deployment• carton exec -Ilib ./bin/t2delicious.pl
![Page 16: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/16.jpg)
簡単でした
![Page 17: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/17.jpg)
JSON RPC Serverの場合
![Page 18: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/18.jpg)
JSON RPC Server•開発環境 Ubuntu on VMware•本番環境 CentOS•依存モジュール• 39 dists in Makefile.PL• 131 dists in carton.lock• CPAN形式のディレクトリ構成•業務の新規プロジェクト
![Page 19: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/19.jpg)
Tweet::ToDeliciousとほぼ同じ但し、OrePAN使ってます
![Page 20: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/20.jpg)
Mirrorの指定• PERL_CPANM_OPTを使う• まちがい
• PERL_CARTON_MIRRORを使う• せいかい
![Page 21: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/21.jpg)
PERL_CARTON_MIRROR
• defaultはcpan.metacpan.org• PERL_CPAN_OPTがダメな理由•内部でlocal $ENV{PERL_CPANM_OPT}
![Page 22: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/22.jpg)
移行作業は一緒
![Page 23: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/23.jpg)
俺はこう思う• Carton いいね!•お手軽に依存モジュールが管理できる•Makefile.PLだけよりは安心•シンプルなのでスライドに書くことがない•まだALPHAなので自己責任で使おう
![Page 24: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/24.jpg)
おまけ
![Page 25: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/25.jpg)
• 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
プロジェクト環境の構築
![Page 26: Use Carton](https://reader034.vdocuments.site/reader034/viewer/2022042607/559c1bbf1a28ab14158b4599/html5/thumbnails/26.jpg)
ご清聴ありがとうございました