07a8534053
* test: pkg dependencies Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com> * fix: typo Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com> * fix: flag Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com> |
||
---|---|---|
.github | ||
acceptance | ||
cmd/nfpm | ||
deb | ||
glob | ||
internal/helpers | ||
rpm | ||
testdata | ||
www | ||
.gitignore | ||
.golangci.yml | ||
.goreleaser.yml | ||
.kodiak.toml | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
LICENSE.md | ||
Makefile | ||
nfpm_test.go | ||
nfpm.go | ||
README.md | ||
tools.go |
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
- 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:
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 a docker image
You can run it with docker as well:
docker run --rm \
-v $PWD:/tmp/pkg \
goreleaser/nfpm pkg --config /tmp/pkg/foo.yml --target /tmp/pkg/foo.rpm
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 pipe 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.