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

fpm: love packaging!

fpm: love packaging!

For any given platform, you're likely to see a special reinvention of software packaging and distribution. OS distributors do it: Red Hat's rpm, Debian's deb, FreeBSD's pkg_add and friends, Solaris' SRV4 packages. Software platforms do it: ruby has rubygems, python has eggs, node has npm, etc. The most maddening part is that most of these things are solving the same problem but are totally incompatible!

Incompatible tooling hurts everyone, but it gets worse.

High barriers are built and called "best practices" or "policy" that slow or discourage new and existing users from making good use of packaging tools. With high knowledge barriers made worse by incompatibilities in naming things (such as 'iteration' vs 'release' vs 'revision' all meaning the same thing), I certainly feel heavily discouraged in learning packaging tools. Once you've invested in, say, redhat's packaging systems, you're effectively vendor-locked because the cost of learning an alternative system is so high.

With fpm, I set out to solve much of these pains. Nearly 3 years old, fpm has quickly become a strong, community-driven project to help many folks build packages without needing to suffer high knowledge barriers and without sacrificing flexibility.

fpm isn't a new package format, it's just a new and simpler tool for building packages or converting packages from one type to another. At time of writing, fpm currently supports 14 different package formats (deb, rpm, cpan, rubygems, python pypi, solaris srv4, osx, etc).

This talk will introduce the problems with packaging as well as how fpm exists to solve them. It will also cover lots of neat tricks the community has found for doing cool and useful things with fpm.

Elasticsearch Inc

February 23, 2014
Tweet

More Decks by Elasticsearch Inc

Other Decks in Technology

Transcript

  1. fpm: love packaging
    @jordansissel
    SCALE12x

    View Slide

  2. do you like
    computers?

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. IS
    THIS YOU?

    View Slide

  7. let’s get happy.

    View Slide

  8. Background!

    View Slide

  9. “I need Python 2.7!”
    … but CentOS 5 ships with 2.4

    View Slide

  10. “I wrote this code,
    how to deploy it?

    View Slide

  11. Deployment:
    Use packages!

    View Slide

  12. fpm

    View Slide

  13. Project Principles

    View Slide

  14. If a new user is having a bad time,
    it's a bug.

    View Slide

  15. Packaging should be easy.

    View Slide

  16. in open source:
    community is everything.

    View Slide

  17. free hugs!
    • github.com/jordansissel/fpm
    [email protected]
    • #fpm on freenode irc

    View Slide

  18. let’s talk packaging.

    View Slide

  19. Package formats
    • RPM
    • Deb
    • Ruby gems
    • Python
    libraries
    • PHP Pear
    • Node NPM
    • Perl CPAN
    • Solaris SRV4
    • Tar
    • Zip

    View Slide

  20. Package formats
    ALL FORMATS
    ARE THE SAME*
    !
    * sorta…

    View Slide

  21. View Slide

  22. fpm?
    • Almost no learning curve.
    • Make packages in seconds.
    • Experience happiness.
    • Open Source MIT-style license

    View Slide

  23. my first package:
    !
    fpm -s dir -t deb -n pkgname …

    View Slide

  24. fpm history
    commit 8035419385480dfdf2bcde4e7d751dac23a0b254
    Author: Jordan Sissel
    Date: Mon Jan 3 13:10:15 2011 -0800
    !
    - Start prototyping generic package creator.

    View Slide

  25. Who uses fpm?

    View Slide

  26. fpm

    View Slide

  27. fpm

    View Slide

  28. fpm

    View Slide

  29. "FPM isn't just a handy tool at DreamHost, it's a necessity. It
    gives our engineering team the flexibility and power to more
    efficiently manage software installations across our infrastructure.
    From OpenStack to Logstash to Pecan web frameworks, we
    couldn't deploy anything easily without FPM."
    !
    Brett Gailey!
    Systems Engineering Manager

    View Slide

  30. View Slide

  31. "etsy quote".

    View Slide

  32. "etsy quote".

    View Slide

  33. "HP cloud quote".

    View Slide

  34. “Chef quote”

    View Slide

  35. View Slide

  36. View Slide

  37. gem install fpm
    (supported on Ruby 1.8.7 through 2.1.0)

    View Slide

  38. crazy demo time!

    View Slide

  39. Questions?
    • https://github.com/jordansissel/fpm
    [email protected]
    • #fpm on freenode irc
    • stay tuned for fpm on the foodfightshow.org

    View Slide