fpm is a package builder that creates platform-native packages for multiple systems including deb, rpm, FreeBSD, Solaris, macOS, and ArchLinux from a variety of source formats.
The tool solves the problem of packaging complexity across different operating systems and package managers. Rather than learning distinct packaging workflows for each platform, fpm provides a unified interface where you specify a source—whether a gem, Python module, npm package, directory, or archive—and a target package format, then fpm handles the conversion. It can also modify existing packages by removing files or stripping scripts. The approach prioritizes simplicity: you provide your install directory and dependencies, and fpm generates the native package without requiring deep knowledge of each platform's packaging policies.
fpm suits teams that deploy across multiple Linux distributions or need to package software quickly without becoming packaging experts. It works well for organizations switching between Ubuntu and CentOS, or anyone distributing tools that don't have native packages available. The tool is particularly valuable when you want to avoid learning the distinct tooling and conventions of rpm, deb, and other package systems separately. The README does not position fpm against specific alternatives, so no comparative claims can be made.
The project treats user friction as a bug: if someone has a bad time with fpm or finds documentation confusing, this is explicitly considered a defect to be fixed. Development follows an engineering principle of making things work first, then refining them, then optimizing for speed. The project maintains an open stance on capabilities, treating missing features not as limitations but as opportunities to extend functionality.