Coder Social home page Coder Social logo

denik / fpm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jordansissel/fpm

0.0 2.0 0.0 1.11 MB

Effing package managers! Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity.

License: Other

Ruby 96.43% Shell 1.62% Python 1.96%

fpm's Introduction

Effing Package Management.

Preface

Package maintainers work hard and take a lot of shit. You can't please everyone. So, if you're a maintainer: Thanks for maintaining packages!

What is fpm?

It helps you build packages quickly (Packages like RPM and DEB formats).

Here is a presentation I gave on fpm at BayLISA: http://goo.gl/sWs3Z (I included speaker notes you can read, too)

At BayLISA in April 2011, I gave a talk about fpm. At the end, I asked "What can I package for you?"

Someone asked for memcached.

Google for 'memcached', download the source, unpack, ./configure, make, make install, fpm, deploy.

In 60 seconds, starting from nothing, I had both an RPM and a .DEB of memcached ready to deploy, and I didn't need to know how to use rpmbuild, rpm specfiles, dh_make, debian control files, etc.

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 want a simple way to create packages without all the bullshit. In my own infrastructure, I have no interest in Debian policy and RedHat packaging guidelines - I have interest in my group's own style culture and have a very strong interest in getting work done.

(This is not to say that you can't create packages with FPM that obey Debian or RedHat policies, you can and should if that is what you desire)

The goal of FPM is to be able to easily build platform-native packages.

  • Creating packages easily (deb, rpm, etc)
  • Tweaking existing packages (removing files, changing metadata/dependencies)
  • Stripping pre/post/maintainer scripts from packages

Get with the download

You can install fpm with gem:

gem install fpm

Running it:

fpm -s TYPE -t TYPE ...

Things that are in the works or should work:

Sources:

  • gem (even autodownloaded for you)
  • python modules (autodownload for you)
  • pear (also downloads for you)
  • directories
  • rpm
  • deb
  • node packages (npm)

Targets:

  • deb
  • rpm
  • solaris
  • tar
  • directories

Need Help or Want to Contribute?

All contributions are welcome: ideas, patches, documentation, bug reports, complaints, and even something you drew up on a napkin.

It is more important to me that you are able to contribute and get help if you need it..

That said, some basic guidelines, which you are free to ignore :)

  • Have a problem you want fpm to solve for you? You can email the mailing list, or join the IRC channel #fpm on irc.freenode.org, or email me personally ([email protected])
  • Have an idea or a feature request? File a ticket on github, or email the mailing list, or email me personally ([email protected]) if that is more comfortable.
  • If you think you found a bug, it probably is a bug. File it on jira or send details to the mailing list.
  • If you want to send patches, best way is to fork this repo and send me a pull request. If you don't know git, I also accept diff(1) formatted patches - whatever is most comfortable for you.
  • Want to lurk about and see what others are doing? IRC (#fpm on irc.freenode.org) is a good place for this as is the mailing list

More Documentation

See the wiki for more docs

fpm's People

Contributors

anthezium avatar asenchi avatar auxesis avatar cpennington avatar ctgswallow avatar denik avatar dpeters avatar ebastien avatar fidothe avatar indrat avatar jimbrowne avatar jneen avatar jordansissel avatar joshado avatar jscheinblum avatar jwittkoski avatar kwilczynski avatar mblair avatar nareshov avatar ohookins avatar pjjw avatar ploubser avatar rajatvig avatar sabowski avatar specialunderwear avatar svenihoney avatar tabletcorry avatar tmm1 avatar vstone avatar zllak avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.