1
1
Fork 0
mirror of https://github.com/goreleaser/nfpm synced 2024-05-10 00:16:13 +02:00
nfpm/README.md

92 lines
3.9 KiB
Markdown
Raw Normal View History

2018-02-18 23:32:16 +01:00
<p align="center">
<img alt="GoReleaser Logo" src="https://avatars2.githubusercontent.com/u/24697112?v=3&s=200" height="140" />
<h3 align="center">NFPM</h3>
<p align="center">NFPM is Not FPM - a simple deb and rpm packager written in Go.</p>
<p align="center">
2020-05-14 14:40:49 +02:00
<a href="https://github.com/goreleaser/nfpm/releases/latest"><img alt="Release" src="https://img.shields.io/github/release/goreleaser/nfpm.svg?style=for-the-badge"></a>
<a href="/LICENSE.md"><img alt="Software License" src="https://img.shields.io/badge/license-MIT-brightgreen.svg?style=for-the-badge"></a>
<a href="https://github.com/goreleaser/goreleaser/actions?workflow=build"><img alt="GitHub Actions" src="https://img.shields.io/github/workflow/status/goreleaser/goreleaser/build?style=for-the-badge"></a>
<a href="https://codecov.io/gh/goreleaser/nfpm"><img alt="Codecov branch" src="https://img.shields.io/codecov/c/github/goreleaser/nfpm/master.svg?style=for-the-badge"></a>
<a href="https://goreportcard.com/report/github.com/goreleaser/nfpm"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/goreleaser/nfpm?style=for-the-badge"></a>
<a href="http://godoc.org/github.com/goreleaser/nfpm"><img alt="Go Doc" src="https://img.shields.io/badge/godoc-reference-blue.svg?style=for-the-badge"></a>
<a href="https://github.com/goreleaser"><img alt="Powered By: GoReleaser" src="https://img.shields.io/badge/powered%20by-goreleaser-green.svg?style=for-the-badge"></a>
2018-02-18 23:32:16 +01:00
</p>
</p>
2018-04-08 17:47:55 +02:00
## Why
2018-02-18 23:32:16 +01:00
2018-04-08 17:47:55 +02:00
While [fpm][] is great, for me it is a bummer that it depends on Ruby, tar
and probably other software.
2018-02-06 03:32:49 +01:00
2018-04-08 17:47:55 +02:00
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!
2018-02-20 13:18:37 +01:00
2018-04-08 17:47:55 +02:00
## Goals
* [x] be simple to use
* [x] provide packaging for the most common linux packaging systems (at very least deb and rpm)
* [x] be distributed as a single binary
* [x] reproducible results
* [x] depend on the fewer external things as possible
2018-04-08 17:47:55 +02:00
* [x] generate packages based on yaml files (maybe also json and toml?)
* [x] be possible to use it as a lib in other go projects (namely [goreleaser][] itself)
* [ ] support complex packages and power users
2018-02-17 23:04:34 +01:00
2018-02-18 23:32:16 +01:00
## Usage
2018-02-17 23:04:34 +01:00
The first steps are to run `nfpm init` to initialize a config file and edit
the generated file according to your needs:
2018-02-17 23:13:42 +01:00
![nfpm init](https://user-images.githubusercontent.com/245435/36346101-f81cdcec-141e-11e8-8afc-a5eb93b7d510.png)
2018-02-17 23:04:34 +01:00
The next step is to run `nfpm pkg --target mypkg.deb`.
NFPM will guess which packager to use based on the target file extension.
2018-02-17 23:13:42 +01:00
![nfpm pkg](https://user-images.githubusercontent.com/245435/36346100-eaaf24c0-141e-11e8-8345-100f4d3ed02d.png)
2018-02-17 23:04:34 +01:00
And that's it!
2018-02-06 03:32:49 +01:00
2018-06-15 21:35:26 +02:00
## Usage as a docker image
You can run it with docker as well:
```sh
docker run --rm \
-v $PWD:/tmp/pkg \
goreleaser/nfpm pkg --config /tmp/pkg/foo.yml --target /tmp/pkg/foo.rpm
```
That's it!
2018-02-25 21:50:52 +01:00
## Usage as lib
You can look at the code of nfpm itself to see how to use it as a library, or, take
2018-11-28 13:37:17 +01:00
a look at the [nfpm pipe on GoReleaser](https://github.com/goreleaser/goreleaser/blob/master/internal/pipe/nfpm/nfpm.go).
2018-02-25 21:50:52 +01:00
> **Attention**: GoReleaser `deb` packager only compiles with go1.10+.
2018-02-18 23:32:16 +01:00
## Status
2018-02-06 03:32:49 +01:00
2018-04-05 14:53:13 +02:00
* both deb and rpm packaging are working but there are some missing features.
2018-02-18 23:32:16 +01:00
2018-04-08 17:47:55 +02:00
## Special thanks
Thanks to the [fpm][] authors for fpm, which inspires nfpm a lot.
2018-02-18 23:32:16 +01:00
## Donate
Donations are very much appreciated! You can donate/sponsor on the main
[goreleaser opencollective](https://opencollective.com/goreleaser)! It's
2018-02-20 13:18:37 +01:00
easy and will surely help the developers at least buy some ☕️ or 🍺!
2018-02-18 23:32:16 +01:00
## Stargazers over time
[![goreleaser/nfpm stargazers over time](https://starcharts.herokuapp.com/goreleaser/nfpm.svg)](https://starcharts.herokuapp.com/goreleaser/nfpm)
---
Would you like to fix something in the documentation? Feel free to open an [issue](https://github.com/goreleaser/nfpm/issues).
2018-04-08 17:47:55 +02:00
[goreleaser]: https://goreleaser.com/#linux_packages.nfpm
[fpm]: https://github.com/jordansissel/fpm