1
0
mirror of https://github.com/jordansissel/fpm synced 2025-08-26 03:34:35 +02:00
Effing package management! Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity. https://fpm.readthedocs.io/en/latest/
Go to file
2012-02-22 15:10:03 -08:00
bin Merge remote-tracking branch 'origin/master' into brew2deb-backports 2011-07-07 23:57:48 -07:00
examples removed all trailing whitespace: for i in $(git ls-files); do sed -i tmp -e "s/ *$//" $i; done 2011-07-07 22:52:55 -07:00
lib Merge pull request #157 from ploubser/master 2012-02-20 12:40:07 -08:00
misc removed all trailing whitespace: for i in $(git ls-files); do sed -i tmp -e "s/ *$//" $i; done 2011-07-07 22:52:55 -07:00
templates - Updated builder to include license and vendor 2012-02-18 17:18:07 +00:00
test Add beginnings of MiniTest::Spec support, and some basic template tests. 2012-01-02 22:15:21 +11:00
.gitignore Add .rvmrc to .gitignore 2011-10-11 11:32:11 +02:00
CHANGELIST - update changelist for 0.3.12 2012-02-22 15:10:03 -08:00
CONTRIBUTORS - add contributors and license file (License is MIT) 2011-05-17 00:30:34 -07:00
fpm.gemspec upped the version 2011-12-21 00:48:14 +05:30
LICENSE - add contributors and license file (License is MIT) 2011-05-17 00:30:34 -07:00
NOTES.md removed all trailing whitespace: for i in $(git ls-files); do sed -i tmp -e "s/ *$//" $i; done 2011-07-07 22:52:55 -07:00
Rakefile Add beginnings of MiniTest::Spec support, and some basic template tests. 2012-01-02 22:15:21 +11:00
README.md Add beginnings of MiniTest::Spec support, and some basic template tests. 2012-01-02 22:15:21 +11:00

Effing Package Management.

Preface

Package maintainers work hard and take a lot of shit. You can't please everyone. So, if you're a maintainer: Thanks for maintaining packages!

What is fpm?

It helps you build packages quickly (Packages like RPM and DEB formats).

Here is a presentation I gave on fpm at BayLISA: http://goo.gl/sWs3Z (I included speaker notes you can read, too)

At BayLISA in April 2011, I gave a talk about fpm. At the end, I asked "What can I package for you?"

Someone asked for memcached.

Google for 'memcached', download the source, unpack, ./configure, make, make install, fpm, deploy.

In 60 seconds, starting from nothing, I had both an RPM and a .DEB of memcached ready to deploy, and I didn't need to know how to use rpmbuild, rpm specfiles, dh_make, debian control files, etc.

Backstory

Sometimes packaging is done wrong (because you can't do it right for all situations), but small tweaks can fix it.

And sometimes, there isn't a package available for the tool you need.

And sometimes if you ask "How do I get python 3 on CentOS 5?" some unhelpful trolls will tell you to "Use another distro"

Further, a recent job switch has me now using Ubuntu for production while prior was CentOS. These use two totally different package systems with completely different packaging policies and support tools. It was painful and confusing learning both. I want to save myself (and you) that pain in the future.

It should be easy to say "here's my install dir and here's some dependencies; please make a package"

The Solution - FPM

I want a simple way to create packages without all the bullshit. In my own infrastructure, I have no interest in Debian policy and RedHat packaging guidelines - I have interest in my group's own style culture and have a very strong interest in getting work done.

(This is not to say that you can't create packages with FPM that obey Debian or RedHat policies, you can and should if that is what you desire)

The goal of FPM is to be able to easily build platform-native packages.

  • Creating packages easily (deb, rpm, etc)
  • Tweaking existing packages (removing files, changing metadata/dependencies)
  • Stripping pre/post/maintainer scripts from packages

Get with the download

You can install fpm with gem:

gem install fpm

It ships with 'fpm' and 'fpm-npm' tools.

Things that are in the works or should work:

Sources:

  • gem (even autodownloaded for you)
  • python modules (autodownload for you)
  • directories
  • rpm
  • node packages (npm)

Targets:

  • deb
  • rpm
  • solaris

Something broken?

FPM lacks much automated testing. It does have:

  • BASH-based acceptance tests for finished packages
  • MiniTest-based unit tests (in their infancy)

To compensate for lack of automated testing, should you find any bugs that would prevent you from using fpm yourself, please let me know (file a ticket, find me on IRC, email me, etc) and I'll fix it as quickly as I can (usually blocker bugs get fixed within a few minutes of me finding out about such a bug)

If you have feature requests, feel free to send them my way.

Other Documentation

See the wiki for more docs