1
1
Fork 0
mirror of https://github.com/goreleaser/nfpm synced 2024-06-10 06:16:12 +02:00
NFPM is Not FPM - a simple deb, rpm and apk packager written in Go
Go to file
tympanix e823a1f3e0 chore: dep ensure 2018-04-10 17:45:10 +02:00
acceptance test: e2e test for rpm maintainer scripts 2018-04-09 13:19:45 -03:00
cmd/nfpm fix: yaml v2 and strict unmarshal 2018-04-08 12:34:22 -03:00
deb refactor: overrides using explicit embedded struct 2018-04-10 17:39:43 +02:00
glob chore: improving error handling and wrapping 2018-03-27 20:36:02 -03:00
rpm refactor: overrides using explicit embedded struct 2018-04-10 17:39:43 +02:00
testdata refactor: overrides using explicit embedded struct 2018-04-10 17:39:43 +02:00
.gitignore test: e2e tests for deb maintainer scripts 2018-04-09 13:19:45 -03:00
.goreleaser.yml chore: goreleaser: do not show merge commits on changelog 2018-03-25 16:00:41 -03:00
.travis.yml test: starting to add acceptance tests 2018-03-11 14:58:53 -03:00
CODE_OF_CONDUCT.md docs: readme, coc, contributing 2018-02-18 19:32:16 -03:00
CONTRIBUTING.md docs: readme, coc, contributing 2018-02-18 19:32:16 -03:00
Gopkg.lock chore: dep ensure 2018-04-10 17:45:10 +02:00
Gopkg.toml chore: dep ensure 2018-04-10 17:45:10 +02:00
LICENSE.md Create LICENSE.md 2018-02-03 17:11:21 -02:00
Makefile test: acceptance tests for globs 2018-03-25 15:58:44 -03:00
README.md docs: readme 2018-04-08 12:47:55 -03:00
nfpm.go refactor: overrides using explicit embedded struct 2018-04-10 17:39:43 +02:00
nfpm_test.go refactor: overrides using explicit embedded struct 2018-04-10 17:39:43 +02:00

GoReleaser Logo

NFPM

NFPM is Not FPM - a simple deb and rpm packager written in Go.

Release Software License Travis Codecov branch Go Report Card Go Doc SayThanks.io Powered By: GoReleaser

Why

While fpm is great, for me it is a bummer that it depends on Ruby, tar and probably other software.

I wanted something that could be used as a binary and/or as a lib on go-software, so I hacked this together and it works!

Goals

  • be simple to use
  • provide packaging for the most common linux packaging systems (at very least deb and rpm)
  • be distributed as a single binary
  • reproducible results
    • depend on the fewer external things as possible (namely rpmbuild)
    • generate packages based on yaml files (maybe also json and toml?)
  • be possible to use it as a lib in other go projects (namely goreleaser itself)
  • support complex packages and power users

Usage

The first steps are to run nfpm init to initialize a config file and edit the generated file according to your needs:

nfpm init

The next step is to run nfpm pkg --target mypkg.deb. NFPM will guess which packager to use based on the target file extension.

nfpm pkg

And that's it!

Usage as lib

You can look at the code of nfpm itself to see how to use it as a library, or, take a look at the nfpm piper on GoReleaser.

Attention: GoReleaser deb packager only compiles with go1.10+.

Status

  • both deb and rpm packaging are working but there are some missing features.

Special thanks

Thanks to the fpm authors for fpm, which inspires nfpm a lot.

Donate

Donations are very much appreciated! You can donate/sponsor on the main goreleaser opencollective! It's easy and will surely help the developers at least buy some or 🍺!

Stargazers over time

goreleaser/nfpm stargazers over time


Would you like to fix something in the documentation? Feel free to open an issue.