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

More Decks by Elasticsearch Inc

Other Decks in Technology


  1. fpm: love packaging @jordansissel SCALE12x

  2. do you like computers?

  3. None
  4. None
  5. None

  7. let’s get happy.

  8. Background!

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

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

  11. Deployment: Use packages!

  12. fpm

  13. Project Principles

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

    a bug.
  15. Packaging should be easy.

  16. in open source: community is everything.

  17. free hugs! • github.com/jordansissel/fpm • fpm-users@googlegroups.com • #fpm on freenode

  18. let’s talk packaging.

  19. Package formats • RPM • Deb • Ruby gems •

    Python libraries • PHP Pear • Node NPM • Perl CPAN • Solaris SRV4 • Tar • Zip
  20. Package formats ALL FORMATS ARE THE SAME* ! * sorta…

  21. None
  22. fpm? • Almost no learning curve. • Make packages in

    seconds. • Experience happiness. • Open Source MIT-style license
  23. my first package: ! fpm -s dir -t deb -n

    pkgname …
  24. fpm history commit 8035419385480dfdf2bcde4e7d751dac23a0b254 Author: Jordan Sissel <jls@semicomplete.com> Date: Mon

    Jan 3 13:10:15 2011 -0800 ! - Start prototyping generic package creator.
  25. Who uses fpm?

  26. fpm

  27. fpm

  28. fpm

  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
  30. None
  31. "etsy quote".

  32. "etsy quote".

  33. "HP cloud quote".

  34. “Chef quote”

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

  38. crazy demo time!

  39. Questions? • https://github.com/jordansissel/fpm • fpm-users@googlegroups.com • #fpm on freenode irc

    • stay tuned for fpm on the foodfightshow.org