Skip to content
Effing package management! Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity.
Ruby Shell HTML Python Puppet Makefile Other
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Testing workflows Jan 2, 2019
bin [Fixes #1397] Update fpm Jan 11, 2018
docs Updated docs/installing.rst to reflect Oracle Enteprise Linux instruc… Feb 7, 2019
examples Add example: create rpm&deb packages with init scripts Nov 25, 2016
lib default to false for deb-systemd starts Mar 26, 2019
misc removed all trailing whitespace: for i in $(git ls-files); do sed -i … Jul 8, 2011
spec Skip snap package tests on ruby 1.9 and 2.0 Feb 24, 2019
templates default to false for deb-systemd starts Mar 26, 2019
test Use `--xz` in pacman's tar, update Vagrantfile Oct 10, 2015
.gitignore copy config files external to source Jul 21, 2017
.rubocop.yml Add rubocop config. Apr 10, 2015
.travis.yml Add virtualenv to path on OSX Feb 24, 2019
Brewfile Create Brewfile Dec 23, 2017
CHANGELOG.rst version bump Feb 3, 2019
CODE_OF_CONDUCT.md Update links to use https (#1562) Oct 18, 2018
CONTRIBUTORS Ensured result is not nil. Fixes #1202. Oct 9, 2016
Dockerfile Dockerfile: Follow best practices May 13, 2018
Gemfile Fix gem source warning message. May 8, 2013
LICENSE Update LICENSE Aug 14, 2017
Makefile Start working on some better fpm documentation. Nov 27, 2016
NOTES.md Update links to use https (#1562) Oct 18, 2018
README.rst Deliberately omit a word Feb 3, 2019
Vagrantfile Use `--xz` in pacman's tar, update Vagrantfile Oct 10, 2015
fpm.gemspec [Fixes #1557] Allow git repo as gem source Mar 26, 2019
notify-failure.sh 'dk add ruby fpm' Feb 29, 2012
singularity.def Add Singularity definition file Feb 3, 2019

README.rst

fpm

Build Chat Gem

The goal of fpm is to make it easy and quick to build packages such as rpms, debs, OSX packages, etc.

fpm, as a project, exists to help you build packages, therefore:

  • If fpm is not helping you make packages easily, then there is a bug in fpm.
  • If you are having a bad time with fpm, then there is a bug in fpm.
  • If the documentation is confusing, then this is a bug in fpm.

If there is a bug in fpm, then we can work together to fix it. If you wish to report a bug/problem/whatever, I welcome you to do on the project issue tracker.

You can find out how to use fpm in the documentation.

You can learn how to install fpm on your platform in the installation guide.

Project Principles

  • Community: If a newbie has a bad time, it's a bug.
  • Engineering: Make it work, then make it right, then make it fast.
  • Capabilities: If it doesn't do a thing today, we can make it do it tomorrow.

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, job switches have me flipping between Ubuntu and CentOS. These use two totally different package systems with completely different packaging policies and support tools. Learning both was painful and confusing. 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 wanted a simple way to create packages without needing to memorize too much.

I wanted a tool to help me deliver software with minimal steps or training.

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

With fpm, you can do many things, including:

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

Things that should work

Sources:

  • gem (even autodownloaded for you)
  • python modules (autodownload for you)
  • pear (also downloads for you)
  • directories
  • tar(.gz) archives
  • rpm
  • deb
  • node packages (npm)
  • pacman (ArchLinux) packages

Targets:

  • deb
  • rpm
  • solaris
  • freebsd
  • tar
  • directories
  • Mac OS X .pkg files (osxpkg)
  • pacman (ArchLinux) packages
You can’t perform that action at this time.