Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
cpanfile    Hokkaido.pm #9    Yoshihiro Sasaki
自己紹介twitter: aloelightCPAN: YSASAKIgithub: ysasakiPerlでスマホアプリ向けAPI開発Linuxサーバ運用・保守・監視
cpanfileRuby Gemfileの移植依存モジュールの厳密なバージョン定義ファイルcpanm、cartonで利用可能アプリケーション向け
依存モジュールのバージョン定義
実行したいアプリuse v5.16;use warnings;use LWP::UserAgent;my $ua = LWP::UserAgent->new;my $url = https://example.com;my $res = $ua...
cpanfile以前
依存の定義use strict;use warnings;use ExtUtils::MakeMaker;WriteMakefile(    PREREQ_PM => {        LWP => 6.00    });
Installと実行$ cpanm -L local --installdeps -n .$ perl -Mlib::core::only -Mlib=local/lib/perl5 get.pl501 Protocol scheme http...
何が起きたのか• LWP 6.02からhttpsサポートは LWP::protocol::httpsに分離• Makefile.PL(EUMM)では       >= でしか 指定できない
cpanfile以後
依存の定義$ cat cpanfilerequires ‘LWP’, ‘== 6.00’;
Installcarton installorcpanm -L local --installdeps .
実行$ carton install$ carton exec -- ./get.pl200 OK
基本構文$FUNC $NAME, $VERSION;
ModuleのInstallの各段階1. develop    ‣ author_requires2. configure   ‣ configure_requires3. build      ‣ build_requires4. runtime...
before action           requirements開発時(develop)           author_requiresperl Makefile.PL      configure_requires          ...
on $phase => $definition;on test => sub {    requires Test::More, >= 0.96;};         ${phase}_requires Module::Install互換のシ...
その他関数recommendssuggestsconflicts
基本構文$FUNC $NAME, $VERSION;
バージョン指定0        => 指定なし   ‘>= 1.00’ => 以上‘1.00‘   => 以上     ‘<= 1.00’ => 以下‘== 1.00’ => 固定    ‘>   1.00’ => 超過‘!= 1.00’ =>...
ANDで指定可能requires Foo , > 1.00, != 1.50, < 2.00         •カンマ区切り         •第2引数に全部含める
ここまでの仕様はCPAN::Meta::Spec準拠
基本構文$FUNC $NAME, $VERSION;
モジュール指定cpanmの引数に取れるものが書ける
DistributionMicro::Container
PAUSE ID + FilenameXAICRON/Micro-Container-0.03.tar.gz
URLhttp://example.com/Micro-Container-0.03.tar.gz          ftp, https? or file scheme
CPAN URIcpan:///distfile/XAICRON/Micro-Container-0.03.tar.gz
Local File/path/to/Micro-Container-0.03.tar.gz
Local Directory/path/to/Micro-Container-0.03/
Git Repository URLgit://github.com/xaicron/p5-Micro-Container.git              git scheme or .git
git://省略/p5-Micro-Container.git@0.01       タグ、ブランチ指定が可能     末尾に@タグ or @ブランチ名
注意  cpanmは対応しているが今後cpanfileに対応するツールが サポートするとは限らない
対応ツール
cpanm --installdepsを付けないとcpanfileを認識しない 後は各自必要なオプションを付ける
carton 現在の最新版 v0.9.10ではcpanfileが必須になったMakefile.PL/Build.PLは一切みない
CPAN Distribution用 CPAN Meta Spec v2.0に対応したい 既存アプリをCPANに上げたい Module::Build::Pluggable::CPANfile Module::Install::CPANfile
質問タイム
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

cpanfile

10,354 views

Published on

Published in: Technology
  • Be the first to comment

cpanfile

  1. 1. cpanfile Hokkaido.pm #9 Yoshihiro Sasaki
  2. 2. 自己紹介twitter: aloelightCPAN: YSASAKIgithub: ysasakiPerlでスマホアプリ向けAPI開発Linuxサーバ運用・保守・監視
  3. 3. cpanfileRuby 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.pl501 Protocol scheme https is notsupported (LWP::Protocol::https notinstalled)
  9. 9. 何が起きたのか• LWP 6.02からhttpsサポートは LWP::protocol::httpsに分離• Makefile.PL(EUMM)では >= でしか 指定できない
  10. 10. cpanfile以後
  11. 11. 依存の定義$ cat cpanfilerequires ‘LWP’, ‘== 6.00’;
  12. 12. Installcarton installorcpanm -L local --installdeps .
  13. 13. 実行$ carton install$ carton exec -- ./get.pl200 OK
  14. 14. 基本構文$FUNC $NAME, $VERSION;
  15. 15. ModuleのInstallの各段階1. develop ‣ author_requires2. configure ‣ configure_requires3. build ‣ build_requires4. runtime ‣ requires5. test ‣ test_requires
  16. 16. before action requirements開発時(develop) author_requiresperl 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. その他関数recommendssuggestsconflicts
  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. DistributionMicro::Container
  26. 26. PAUSE ID + FilenameXAICRON/Micro-Container-0.03.tar.gz
  27. 27. URLhttp://example.com/Micro-Container-0.03.tar.gz ftp, https? or file scheme
  28. 28. CPAN URIcpan:///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 URLgit://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. ご清聴ありがとうございました

×