Carton CPAN dependency manager
-
Upload
tatsuhiko-miyagawa -
Category
Technology
-
view
5.731 -
download
3
description
Transcript of Carton CPAN dependency manager
![Page 1: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/1.jpg)
CartonTatsuhiko Miyagawa
YAPC::Asia 2011 Tokyo
Friday, October 14, 2011
![Page 2: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/2.jpg)
Managing CPAN Dependencies
Friday, October 14, 2011
![Page 3: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/3.jpg)
Case Study:(Poor) Web Development
Friday, October 14, 2011
![Page 4: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/4.jpg)
You’re writing a new web app.You don’t wanna reinvent wheels.Want to use as many CPAN deps.
Friday, October 14, 2011
![Page 5: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/5.jpg)
Fine.Get them from CPAN,install on your machine.
Friday, October 14, 2011
![Page 6: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/6.jpg)
> cpanm Web::Frameworkinstalled LWP-‐5.912installed Plack-‐0.9980installed Web-‐Framework-‐1.20> cpanm JSON::Fastinstalled JSON-‐Fast-‐1.91> cpanm MIME::Parser::XSinstalled MIME-‐Parser-‐XS-‐0.20
Friday, October 14, 2011
![Page 7: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/7.jpg)
Test it...
Friday, October 14, 2011
![Page 8: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/8.jpg)
Works? Ship it!
Friday, October 14, 2011
![Page 9: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/9.jpg)
DeploymentSet up new production servers.
Install CPAN modules(until the errors are gone)
Friday, October 14, 2011
![Page 10: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/10.jpg)
Few weeks later...
Friday, October 14, 2011
![Page 11: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/11.jpg)
Your website is popular!Need more web servers!
Friday, October 14, 2011
![Page 12: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/12.jpg)
Re-DeploymentSet up new production servers.
Install CPAN modules(until the errors are gone)
Friday, October 14, 2011
![Page 13: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/13.jpg)
“Crap, Web::Framework has been updated to 1.4 and many APIs
have been changed or deprecated!”
Friday, October 14, 2011
![Page 14: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/14.jpg)
RollbackLog in to the old web server.Check Perl module versions.
Install them on the new server.
Friday, October 14, 2011
![Page 15: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/15.jpg)
“Crap, this author deletedthe version 1.20 we want.
Let’s go to BackPAN...”
Friday, October 14, 2011
![Page 16: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/16.jpg)
“Crap, version 1.20 doesn’t actually work with the newer LWP 6 that we just
installed! Have to downgrade this too...”
Friday, October 14, 2011
![Page 17: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/17.jpg)
and so on.
Friday, October 14, 2011
![Page 18: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/18.jpg)
What was wrong?
Friday, October 14, 2011
![Page 19: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/19.jpg)
• Dependency declaration
• Isolated Perl environments
• Version controls/history
• Dependency analysis
• Repeatable deployments
• etc.
Friday, October 14, 2011
![Page 20: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/20.jpg)
Many existing solutionsMyCPAN, DPAN, CPAN::Mini::Inject,
OrePAN, Shipwright
Friday, October 14, 2011
![Page 21: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/21.jpg)
None of thosedidn’t quite work for me.
(Or I haven’t even tried)
Friday, October 14, 2011
![Page 22: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/22.jpg)
So I wrote a new one.
Friday, October 14, 2011
![Page 23: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/23.jpg)
Cartonhttps://github.com/miyagawa/carton
Friday, October 14, 2011
![Page 24: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/24.jpg)
Inspired by...
Friday, October 14, 2011
![Page 25: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/25.jpg)
Friday, October 14, 2011
![Page 26: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/26.jpg)
• App-specific local environment
• Fast and safe install
• Dep-tree analysis, including versions
• Locking module versions
• Easy Redeployment
• Single-file, VCS friendly
• Safe and easy rollback
Friday, October 14, 2011
![Page 27: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/27.jpg)
Local perl environmentUsing local::lib and cpanm -L
Each app has an isolated local library path
Friday, October 14, 2011
![Page 28: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/28.jpg)
Fast and safe installcpanm 1.5
Saves MYMETA.json and install meta info
Friday, October 14, 2011
![Page 29: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/29.jpg)
Dep tree analysisRebuild the dependency tree from meta info
Checks if anything is missing/superflous
Friday, October 14, 2011
![Page 30: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/30.jpg)
Locking versionsVersions are saved in carton.lock
including dependencies
Friday, October 14, 2011
![Page 31: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/31.jpg)
Easy RedeploymentReinstall exactly the same set of moduleson another prod/development machines.
Friday, October 14, 2011
![Page 32: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/32.jpg)
Single-file, VCS friendlyYou can add carton.lock to git
update whenever you update modules
Friday, October 14, 2011
![Page 33: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/33.jpg)
Safe and easy rollbackrevert the lock file and redeploy
Friday, October 14, 2011
![Page 34: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/34.jpg)
DEMO
Friday, October 14, 2011
![Page 35: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/35.jpg)
> cpanm Carton
Friday, October 14, 2011
![Page 36: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/36.jpg)
WARNINGIt is beta software, some features are
missing or not working correctly (yet).
Friday, October 14, 2011
![Page 37: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/37.jpg)
github.com/miyagawa/cartonirc.perl.org #carton
Friday, October 14, 2011
![Page 38: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/38.jpg)
Questions?
Friday, October 14, 2011
![Page 39: Carton CPAN dependency manager](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b7a40a4a79591d4a8b4a00/html5/thumbnails/39.jpg)
Thanks!twitter.com/miyagawa
Friday, October 14, 2011