acceptance | ||
cmd/nfpm | ||
deb | ||
glob | ||
rpm | ||
testdata | ||
.gitignore | ||
.goreleaser.yml | ||
.travis.yml | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
Gopkg.lock | ||
Gopkg.toml | ||
LICENSE.md | ||
Makefile | ||
nfpm_test.go | ||
nfpm.go | ||
README.md |
NFPM
NFPM is Not FPM - a simple deb and rpm packager written in Go.
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?)
- depend on the fewer external things as possible (namely
- 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:
The next step is to run nfpm pkg --target mypkg.deb
.
NFPM will guess which packager to use based on the target file extension.
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
Would you like to fix something in the documentation? Feel free to open an issue.