Upload
yoshihiro-sasaki
View
1.906
Download
8
Embed Size (px)
Citation preview
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
プロジェクト環境の構築
ご清聴ありがとうございました