1
0
mirror of https://github.com/jordansissel/fpm synced 2025-08-27 03:41:34 +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
2017-02-05 01:46:58 -08:00
bin - Folks gettin' angry about an abandoned prototype they mistook for 2013-02-09 14:58:07 -08:00
docs update 2016-12-28 01:55:44 -08:00
examples Add example: create rpm&deb packages with init scripts 2016-11-25 13:22:19 +01:00
lib Version bump 2017-02-05 01:46:58 -08: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 Move fpm version query behavior to run method. 2016-09-11 23:48:39 -07:00
templates remove trailing slash from --prefix option in rpm-packages, fixes #819 2016-06-23 02:18:01 +02:00
test Use --xz in pacman's tar, update Vagrantfile 2015-10-10 12:31:43 -06:00
.gitignore Start working on some better fpm documentation. 2016-11-26 22:49:10 -08:00
.rubocop.yml Add rubocop config. 2015-04-10 16:55:44 -07:00
.travis.yml Dumb attempt at getting virtualenv tests to run in travis/linux 2016-10-15 17:07:57 +13:00
CHANGELOG.rst Version bump 2017-02-05 01:46:58 -08:00
CODE_OF_CONDUCT.md Add a Code of Conduct from http://contributor-covenant.org/ 2014-11-21 17:43:45 +00:00
CONTRIBUTORS Ensured result is not nil. Fixes #1202. 2016-10-09 22:36:11 +01:00
fpm.gemspec Pin archive-tar-minitar to work around https://github.com/halostatue/minitar/issues/23 2017-02-05 01:45:32 -08:00
Gemfile Fix gem source warning message. 2013-05-08 08:28:18 -07:00
LICENSE Update years on license. 2016-04-25 14:00:55 -07:00
Makefile Start working on some better fpm documentation. 2016-11-26 22:49:10 -08:00
NOTES.md typo: installe -> installed 2015-07-08 09:27:51 -04:00
notify-failure.sh 'dk add ruby fpm' 2012-02-29 08:56:53 -08:00
README.rst Docs are living on readthedocs now. 2016-11-27 23:09:50 -08:00
Vagrantfile Use --xz in pacman's tar, update Vagrantfile 2015-10-10 12:31:43 -06:00

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 with the following principles in mind:

* 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/

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, a 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