cpanfile

9,717 views

Published on

Published in: Technology
0 Comments
17 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,717
On SlideShare
0
From Embeds
0
Number of Embeds
2,985
Actions
Shares
0
Downloads
11
Comments
0
Likes
17
Embeds 0
No embeds

No notes for slide

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. ご清聴ありがとうございました

×