1
0
mirror of https://github.com/jordansissel/fpm synced 2024-10-05 12:11:15 +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
Jordan Sissel d81a1ad1ac
Merge pull request #2064 from TwitchCaptain/main
Create FreeBSD packages with correct architecture
2024-09-12 10:56:52 -07:00
.github/workflows Update GHA build 2022-12-03 18:25:54 -08:00
bin [Fixes #1397] Update fpm 2018-01-10 21:00:06 -08:00
docs build proper freebsd package 2024-08-08 06:07:24 -07:00
examples Add example: create rpm&deb packages with init scripts 2016-11-25 13:22:19 +01:00
lib Merge pull request #2064 from TwitchCaptain/main 2024-09-12 10:56:52 -07: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
spec Fix failing test when run on arm64/aarch64 systems - this was a bug in the test suite 2023-02-07 00:27:29 -08:00
templates Add space on changes.erb to conform with debian specs 2022-10-03 13:34:22 -07:00
test Use --xz in pacman's tar, update Vagrantfile 2015-10-10 12:31:43 -06:00
.gitignore fpm tests can now be run through docker. 2021-11-09 16:47:02 -08:00
.readthedocs.yaml Apply fix for readthedocs building errors. 2021-11-09 15:52:31 -08:00
.rubocop.yml Add rubocop config. 2015-04-10 16:55:44 -07:00
Brewfile Create Brewfile 2017-12-23 00:04:38 -08:00
CHANGELOG.rst Version bump 1.15.1 2023-01-31 19:49:10 -08:00
CODE_OF_CONDUCT.md Update links to use https (#1562) 2018-10-18 14:12:48 -07:00
CONTRIBUTORS fpm tests can now be run through docker. 2021-11-09 16:47:02 -08:00
Dockerfile chore: refactor Dockerfile 2022-11-13 21:11:51 -08:00
fpm.gemspec chore: relax 'clamp' version pin 2024-04-09 10:31:22 +10:00
Gemfile Fix gem source warning message. 2013-05-08 08:28:18 -07:00
LICENSE Update license copyright to year 2021 2021-07-06 14:32:08 -07:00
Makefile Also regen per-package-type cli pages 2021-11-09 22:29:06 -08:00
NOTES.md Update links to use https (#1562) 2018-10-18 14:12:48 -07:00
notify-failure.sh 'dk add ruby fpm' 2012-02-29 08:56:53 -08:00
README.rst Update README to modernize the given example. 2022-02-07 15:26:36 -08:00
singularity.def Add Singularity definition file 2019-02-03 14:50:37 -08:00
Vagrantfile Use --xz in pacman's tar, update Vagrantfile 2015-10-10 12:31:43 -06:00

fpm
===

|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`_.

.. _the project issue tracker: https://github.com/jordansissel/fpm/issues

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

.. _documentation: https://fpm.readthedocs.io/en/latest/

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

.. _installation guide: https://fpm.readthedocs.io/en/latest/installation.html

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.9 on RHEL 8?" 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

.. include: docs/installing

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

.. include: docs/contributing

.. |Chat| image:: https://img.shields.io/badge/irc-%23fpm%20on%20freenode-brightgreen.svg
   :target: https://webchat.freenode.net/?channels=fpm
.. |Gem| image:: https://img.shields.io/gem/v/fpm.svg
   :target: https://rubygems.org/gems/fpm