1
0
mirror of https://github.com/jordansissel/fpm synced 2025-08-25 03:24:33 +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 956a218a7b Check if an option has a default value before we try to look it up.
This fixes fpm when used with clamp 1.3.0 or above.

Fixes #1543
2018-10-15 21:05:47 -07:00
bin [Fixes #1397] Update fpm 2018-01-10 21:00:06 -08:00
docs Version bump to 1.10.2 (#1516) 2018-07-03 22:11:58 -07:00
examples Add example: create rpm&deb packages with init scripts 2016-11-25 13:22:19 +01:00
lib Check if an option has a default value before we try to look it up. 2018-10-15 21:05:47 -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 Set --no-cpan-test aka attributes[:cpan_test?]=false when doing a test package for cpan. This should make the test suite pass. 2018-07-03 22:05:59 -07:00
templates FIX: Proper indentation for changes (#1552) 2018-09-10 17:37:30 -07:00
test Use --xz in pacman's tar, update Vagrantfile 2015-10-10 12:31:43 -06:00
.gitignore copy config files external to source 2017-07-21 10:09:23 -07:00
.rubocop.yml Add rubocop config. 2015-04-10 16:55:44 -07:00
.travis.yml exclude not working osx rvms 2017-12-23 00:04:38 -08:00
Brewfile Create Brewfile 2017-12-23 00:04:38 -08:00
CHANGELOG.rst Add missing change log entry 2018-10-13 14:22:24 -07:00
CODE_OF_CONDUCT.md Update to Contributor Covenant 1.4 (previously1.0) 2017-11-06 22:01:13 -08:00
CONTRIBUTORS Ensured result is not nil. Fixes #1202. 2016-10-09 22:36:11 +01:00
Dockerfile Dockerfile: Follow best practices 2018-05-12 21:56:29 -07:00
fpm.gemspec Fix ruby-xz version 2018-05-21 14:53:42 -07:00
Gemfile Fix gem source warning message. 2013-05-08 08:28:18 -07:00
LICENSE Update LICENSE 2017-08-14 03:04:21 -05: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 Switch from gitter to irc freenode link 2018-01-10 21:01:49 -08:00
Vagrantfile Use --xz in pacman's tar, update Vagrantfile 2015-10-10 12:31:43 -06:00

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

.. _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: http://fpm.readthedocs.io/en/latest/installing.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 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

.. |Build| image:: https://img.shields.io/travis/jordansissel/fpm.svg
   :target: https://travis-ci.org/jordansissel/fpm
.. |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