Ruby 1.9 requires Rubygems internally and this is no longer strictly required. It's been this way since 2009, so it's a little hard to come by official documentation. I hope this works...
> Note: For Ruby 1.8 you must require 'rubygems' before requiring any gems.
http://guides.rubygems.org/rubygems-basics/#requiring-code
- md5sums aren't needed by most packages, disable it by default.
In the future, should move the md5sums generator to the .deb package
target and keep it away from other stuff.
- support an ~/.fpmrc - the syntax of this file is one flag per line.
This file is optional.
https://github.com/jordansissel/fpm/issues/39
- Support --replaces (only .deb supports this right now, rpm seems to
not).
plugin. For now, only 'gem' uses this.
- Add flag --gem-bin-path to install a gem's executables to a specific
place. Some folks like /usr/bin, so, package puppet with bins there:
* fpm -s gem -t deb --gem-bin-path /usr/bin puppet
The original implementation for this bin-path flag was by lassizci.
https://github.com/jordansissel/fpm/pull/27
Supports {pre,post}{install,uninstall} tasks in deb and rpm now.
maintainers scripts are now supported. However, the interface is
likely to change in the future. I want to make a universal maintainer
script format that allows you to use the same exact script in an rpm
and in a deb package.
See https://github.com/jordansissel/fpm/issues/18
necessary for 'gem'.
Example, package up /etc but install to /server/$(hostname) or
something fun:
fpm -s dir -t deb --prefix /server/$(hostname) /etc
This is useful for packages/directories that you would prefer
installed in a specific heirarchy.
The builder is the thing that takes a package and a source
and makes them do things. It is responsible for fpm-wide
defaults, keeping track of paths of things, etc.
Note in particular the change to bin/fpm.
This introduces the concept of sources and packages.
A source is "something to build a package from" - i.e. something
that can be turned into a versioned tarball. Easy ones to support
are 'dir' (a plain directory), 'tar' (a tarball), 'npm', 'gem', etc.
A package is a specified output type; deb, rpm, etc. that knows how
to turn a tarball with metadata into a system package.