Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Carton - менеджер зависимостей Perl

Avatar for Leandr Leandr
December 05, 2013

Carton - менеджер зависимостей Perl

Avatar for Leandr

Leandr

December 05, 2013

Other Decks in Programming

Transcript

  1. Tatsuhiko Miyagawa   • автор более 200 дистрибутивов CPAN  

    • Живёт в Сан-Франциско   • {github,twitter,CPAN}/miyagawa  
  2. john@local>  cpanm  Web::Framework installed  LWP-­‐5.912     installed  Plack-­‐0.9980  

      installed  Web-­‐Framework-­‐1.10     Saturday, November 30, 13
  3. • 2.07: Начали работать над проектом   • используя Web::Framework

    1.1   • 9.07: Сделали версию 1.0   • 10-15.07: внутренняя бета, тестирование   • 16.07: Раскладка в бой   Saturday, November 30, 13
  4. • 2.07: Начали работать над проектом   • используя Web::Framework

    1.1   • 9.07: Сделали версию 1.0   •10-15.07: внутренняя бета, тестирование •15.07: вышел Web::Framework 1.2   •16.07: Раскладка в бой   Saturday, November 30, 13
  5. root@prod>  cpanm  Web::Framework installed  LWP-­‐5.912     installed  Plack-­‐0.9980  

      installed  Web-­‐Framework-­‐1.20     Saturday, November 30, 13
  6. >  cat  cpanfile     requires  'Web::Framework',  '==  1.10';  

      >  cpanm  installdeps  .     installed  Web-­‐Framework-­‐1.10     Saturday, November 30, 13
  7. requires  'Catalyst',  '5.8000'; recommends  'JSON::XS',  '2.0';     on  'test'

     =>  sub  {        requires  'Test::More',  '>=  0.96' };     on  'develop'  =>  sub  {        recommends  'Devel::NYTProf'; };     feature  'sqlite'  =>  sub  {        requires  'DBD::SQLite'; };     Saturday, November 30, 13
  8. cpanfile + cpanm   • Простой   • Тем не

    менее мощный и гибкий способ описать зависимости и требования к версиям   Saturday, November 30, 13
  9. предостережения   • Фиксирование каждой зависимости с конкретной версией –

    кропотливая работа   • Можно зафиксировать только прямые зависимости   • MetaCPAN – единая точка отказа   • Нет лёгких/надёжных путей для отката   Saturday, November 30, 13
  10. Множество других решений:   Нуждаются в серверах, Нуждаются в базах

    данных   Слишком простые, Слишком сложные, и т.п.  
  11. • Локальная среда приложения   • Быстрая и безопасная установка

    с кэшем   • Анализ зависимостей, включая версии   • Заморозка версий модулей   • Консервативные обновления   • Легко раскатывать, откатывать   • Один файл   Saturday, November 30, 13
  12. Локальная perl среда   Используя local::lib и cpanm –L  

    Каждое приложение имеет локальную изолированную библиотеку модулей   Saturday, November 30, 13
  13. Анализ дерева зависимостей   Восстановление дерева зависимостей из снимка (cpanfile.spanshot)

    Проверяет если что-то отсутствует/ лишнее   Saturday, November 30, 13
  14. Консервативное Обновление   Модули не будут обновлятся   до тех

    пор пока это необходимо, или обновляются вручную.   Saturday, November 30, 13
  15. Один файл, дружественный к VCS   Можно добавить cpanfile.snapshot в

    git, обновляя вместе с обновлением модулей "Зависимости – часть твоего приложения."   Saturday, November 30, 13
  16.  @local>  carton  install      @local>  git  commit  cpanfile.snapshot  

       @local>  git  push     @remote>  carton  install  -­‐-­‐deployment @remote>  carton  exec  plackup...     Saturday, November 30, 13
  17. carton 1.1   requires  'Plack',  '1.0000',        git

     =>  'git://github.com/plack/Plack.git',        ref  =>  'devel';     Saturday, November 30, 13
  18. carton 1.1   requires  'Plack',  '1.0011',        dist

     =>  'MIYAGAWA/Plack-­‐1.0011.tar.gz';     Saturday, November 30, 13
  19. carton 1.1   requires  'Plack',  '1.0011',        dist

     =>  'http://darkpan/Plack-­‐1.tar.gz';     Saturday, November 30, 13
  20. cpanm 1.8   • Rewrite internals   • Backend API

      • Plugin support   • CPAN Testers support (via plugins)   Saturday, November 30, 13
  21. carton 1.1   • binstubs   • configure args/hints support

      • safe exec on development   • remember options (--path etc.)   Saturday, November 30, 13