nfpm

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

Github stars Tracking Chart

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:

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 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.

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.

Main metrics

Overview
Name With Ownergoreleaser/nfpm
Primary LanguageGo
Program languageGo (Language Count: 4)
Platform
License:MIT License
所有者活动
Created At2018-01-04 12:49:38
Pushed At2025-05-29 08:46:17
Last Commit At
Release Count152
Last Release Namev2.42.1 (Posted on 2025-05-21 09:57:43)
First Release Namev0.1.0 (Posted on )
用户参与
Stargazers Count2.3k
Watchers Count24
Fork Count163
Commits Count1.1k
Has Issues Enabled
Issues Count204
Issue Open Count7
Pull Requests Count592
Pull Requests Open Count2
Pull Requests Close Count90
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private