fpm - packaging made simple¶
Note
The documentation here is a work-in-progress. If you want to contribute new docs or report problems, I invite you to do so on the project issue tracker.
fpm¶
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
Table of Contents¶
- What is FPM?
- Installation
- Use Cases
- Packages
- Want to contribute? Or need help?
- Release Notes and Change Log
- 1.13.1 (July 6, 2021)
- 1.13.0 (June 19, 2021)
- 1.12.0 (January 19, 2021)
- 1.11.0 (January 30, 2019)
- 1.10.2 (July 3, 2018)
- 1.10.1 (July 3, 2018)
- 1.10.0 (May 21, 2018)
- 1.9.3 (September 11, 2017)
- 1.9.2 (July 29, 2017)
- 1.9.1 (July 28, 2017) happy sysadmin day!
- 1.9.0 (July 28, 2017)
- 1.8.1 (February 7, 2017)
- 1.8.0 (December 28, 2016)
- 1.7.0 (November 28, 2016)
- 1.6.3 (September 15, 2016)
- 1.6.2 (July 1, 2016)
- 1.6.1 (June 10, 2016)
- 1.6.0 (May 25, 2016)
- 1.5.0 (April 12, 2016)
- 1.4.0 (July 26, 2015)
- 1.3.3 (December 11, 2014)
- 1.3.2 (November 4, 2014)
- 1.3.1 (November 4, 2014)
- 1.3.0 (October 25, 2014)
- 1.2.0 (July 25, 2014)
- 1.1.0 (April 23, 2014)
- 1.0.2 (January 10, 2013)
- 1.0.1 (December 7, 2013)
- 1.0.0 (December 5, 2013)
- 0.4.42 (July 23, 2013)
- 0.4.41 (July 17, 2013)
- 0.4.40 (July 12, 2013)
- 0.4.39 (June 27, 2013)
- 0.4.38 (June 24, 2013)
- 0.4.37 (May 30, 2013)
- 0.4.36 (May 15, 2013)
- 0.4.35 – was not announced
- 0.4.34 (May 7, 2013)
- 0.4.33 (April 9, 2013)
- 0.4.32 (April 9, 2013)
- 0.4.31 (March 21, 2013)
- 0.4.30 (March 21, 2013)
- 0.4.29 (January 22, 2013)
- 0.4.28 (January 21, 2013)
- 0.4.27 (January 16, 2013)
- 0.4.26 (December 27, 2012)
- 0.4.25 (December 7, 2012)
- 0.4.24 (November 30, 2012)
- 0.4.23 (November 26, 2012)
- 0.4.22 (November 15, 2012)
- 0.4.21 (November 8, 2012)
- 0.4.20 (October 5, 2012)
- 0.4.19 (September 26, 2012)
- 0.4.18 (September 25, 2012)
- 0.4.17 (September 12, 2012)
- 0.4.16 (September 6, 2012)
- 0.4.15 (September 6, 2012)
- 0.4.14 (August 24, 2012)
- 0.4.13 (August 14, 2012)
- 0.4.12 (August 10, 2012)
- 0.4.11 (August 7, 2012)
- 0.4.10 (May 25, 2012)
- 0.4.9 (April 25, 2012)
- 0.4.8 (April 25, 2012)
- 0.4.7 skipped.
- 0.4.6 (April 10, 2012)
- 0.4.5 (April 3, 2012)
- 0.4.4 (March 30, 2012)
- 0.4.3 (March 21, 2012)
- 0.4.2 (March 21, 2012)
- 0.4.1 (March 19, 2012)
- 0.4.0 (March 18, 2012)
- 0.3.10 (Oct 10, 2011)
- 0.3.9 (Sep 8, 2011)
- 0.3.8 and earlier: I have not kept this file up to date very well… Sorry :(
- 0.2.29 (May 20, 2011)
- 0.2.28 (May 18, 2011)
- 0.2.27 (May 18, 2011)
- 0.2.26 and earlier