Successfully reported this slideshow.
Your SlideShare is downloading. ×

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

cpanfile

  1. 1. cpanfile Hokkaido.pm #9 Yoshihiro Sasaki
  2. 2. 自己紹介 twitter: aloelight CPAN: YSASAKI github: ysasaki Perlでスマホアプリ向けAPI開発 Linuxサーバ運用・保守・監視
  3. 3. cpanfile Ruby Gemfileの移植 依存モジュールの厳密なバージョン定義 ファイル cpanm、cartonで利用可能 アプリケーション向け
  4. 4. 依存モジュールの バージョン定義
  5. 5. 実行したいアプリ use v5.16; use warnings; use LWP::UserAgent; my $ua = LWP::UserAgent->new; my $url = 'https://example.com'; my $res = $ua->get($url); say $res->status_line;
  6. 6. cpanfile以前
  7. 7. 依存の定義 use strict; use warnings; use ExtUtils::MakeMaker; WriteMakefile( PREREQ_PM => { 'LWP' => '6.00' } );
  8. 8. Installと実行 $ cpanm -L local --installdeps -n . $ perl -Mlib::core::only -Mlib=local/ lib/perl5 get.pl 501 Protocol scheme 'https' is not supported (LWP::Protocol::https not installed)
  9. 9. 何が起きたのか • LWP 6.02からhttpsサポートは LWP::protocol::httpsに分離 • Makefile.PL(EUMM)では >= でしか 指定できない
  10. 10. cpanfile以後
  11. 11. 依存の定義 $ cat cpanfile requires ‘LWP’, ‘== 6.00’;
  12. 12. Install carton install or cpanm -L local --installdeps .
  13. 13. 実行 $ carton install $ carton exec -- ./get.pl 200 OK
  14. 14. 基本構文 $FUNC $NAME, $VERSION;
  15. 15. ModuleのInstallの各段階 1. develop ‣ author_requires 2. configure ‣ configure_requires 3. build ‣ build_requires 4. runtime ‣ requires 5. test ‣ test_requires
  16. 16. before action requirements 開発時(develop) author_requires perl Makefile.PL configure_requires configure_requires, requires, make build_requires configure_requires, requires, make test build_requires, test_requires make install requires
  17. 17. on $phase => $definition; on 'test' => sub { requires 'Test::More', '>= 0.96'; }; ${phase}_requires Module::Install互換のショートカット 中身は on で実装されている
  18. 18. その他関数 recommends suggests conflicts
  19. 19. 基本構文 $FUNC $NAME, $VERSION;
  20. 20. バージョン指定 0 => 指定なし ‘>= 1.00’ => 以上 ‘1.00‘ => 以上 ‘<= 1.00’ => 以下 ‘== 1.00’ => 固定 ‘> 1.00’ => 超過 ‘!= 1.00’ => 以外 ‘< 1.00’ => 未満
  21. 21. ANDで指定可能 requires Foo , > 1.00, != 1.50, < 2.00 •カンマ区切り •第2引数に全部含める
  22. 22. ここまでの仕様は CPAN::Meta::Spec準拠
  23. 23. 基本構文 $FUNC $NAME, $VERSION;
  24. 24. モジュール指定 cpanmの引数に取れるものが書ける
  25. 25. Distribution Micro::Container
  26. 26. PAUSE ID + Filename XAICRON/Micro-Container-0.03.tar.gz
  27. 27. URL http://example.com/Micro-Container-0.03.tar.gz ftp, https? or file scheme
  28. 28. CPAN URI cpan:///distfile/XAICRON/Micro-Container-0.03.tar.gz
  29. 29. Local File /path/to/Micro-Container-0.03.tar.gz
  30. 30. Local Directory /path/to/Micro-Container-0.03/
  31. 31. Git Repository URL git://github.com/xaicron/p5-Micro-Container.git git scheme or .git
  32. 32. git://省略/p5-Micro-Container.git@0.01 タグ、ブランチ指定が可能 末尾に@タグ or @ブランチ名
  33. 33. 注意 cpanmは対応しているが 今後cpanfileに対応するツールが サポートするとは限らない
  34. 34. 対応ツール
  35. 35. cpanm --installdepsを付けないとcpanfileを 認識しない 後は各自必要なオプションを付ける
  36. 36. carton 現在の最新版 v0.9.10ではcpanfileが 必須になった Makefile.PL/Build.PLは一切みない
  37. 37. CPAN Distribution用 CPAN Meta Spec v2.0に対応したい 既存アプリをCPANに上げたい Module::Build::Pluggable::CPANfile Module::Install::CPANfile
  38. 38. 質問タイム
  39. 39. ご清聴ありがとうございました

×