Your SlideShare is downloading. ×
0
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
cpanfile
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

cpanfile

8,704

Published on

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

No Downloads
Views
Total Views
8,704
On Slideshare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
9
Comments
0
Likes
14
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×