1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-10 03:47:03 +02:00
goreleaser/www/content/nfpm.md

140 lines
3.7 KiB
Markdown
Raw Normal View History

2017-09-10 22:07:28 +02:00
---
title: NFPM
series: customization
hideFromIndex: true
weight: 80
2017-09-10 22:07:28 +02:00
---
2018-02-19 01:37:59 +02:00
GoReleaser can be wired to [nfpm](https://github.com/goreleaser/nfpm) to
generate and publish `.deb` and `.rpm` packages.
Available options:
```yml
# .goreleaser.yml
nfpm:
# You can change the name of the package.
# Default: `{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}`
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
# Replacements for GOOS and GOARCH in the package name.
# Keys should be valid GOOSs or GOARCHs.
# Values are the respective replacements.
# Default is empty.
replacements:
amd64: 64-bit
386: 32-bit
darwin: macOS
linux: Tux
# Your app's vendor.
# Default is empty.
vendor: Drum Roll Inc.
# Your app's homepage.
# Default is empty.
homepage: https://example.com/
# Your app's maintainer (probably you).
# Default is empty.
maintainer: Drummer <drum-roll@example.com>
# Your app's description.
# Default is empty.
description: Software to create fast and easy drum rolls.
# Your app's license.
# Default is empty.
license: Apache 2.0
# Formats to be generated.
formats:
- deb
- rpm
# Packages your package depends on.
dependencies:
- git
- zsh
# Packages your package recommends installing.
# For RPM packages rpmbuild >= 4.13 is required
recommends:
- bzr
- gtk
# Packages your package suggests installing.
# For RPM packages rpmbuild >= 4.13 is required
suggests:
- cvs
- ksh
# Packages that conflict with your package.
conflicts:
- svn
- bash
# Override default /usr/local/bin destination for binaries
bindir: /usr/bin
2018-05-17 02:52:10 +02:00
# Empty folders that should be created and managed by the packager
# implementation.
# Default is empty.
empty_folders:
- /var/log/foobar
2018-02-19 01:37:59 +02:00
# Files or directories to add to your package (beyond the binary).
2018-03-28 02:07:33 +02:00
# Keys are source paths/globs to get the files from.
2018-02-19 01:37:59 +02:00
# Values are the destination locations of the files in the package.
files:
"scripts/etc/init.d/": "/etc/init.d"
2018-03-28 02:07:33 +02:00
"path/**/glob": "/var/foo/glob"
2018-02-19 01:37:59 +02:00
# Config files to add to your package. They are about the same as
# the files keyword, except package managers treat them differently (while
# uninstalling, mostly).
2018-03-28 02:07:33 +02:00
# Keys are source paths/globs to get the files from.
2018-02-19 01:37:59 +02:00
# Values are the destination locations of the files in the package.
config_files:
2018-03-28 02:07:33 +02:00
"tmp/app_generated.conf": "/etc/app.conf"
"conf/*.conf": "/etc/foo/"
2018-04-19 00:32:59 +02:00
# Scripts to execute during the installation of the package.
# Keys are the possible targets during the installation process
# Values are the paths to the scripts which will be executed
scripts:
preinstall: "scripts/preinstall.sh"
postinstall: "scripts/postinstall.sh"
preremove: "scripts/preremove.sh"
postremove: "scripts/postremove.sh"
# Some attributes can be overrided per package format.
overrides:
deb:
conflicts:
- subversion
dependencies:
- git
suggests:
- gitk
recommends:
- tig
2018-05-17 02:52:10 +02:00
empty_folders:
- /var/log/bar
rpm:
replacements:
amd64: x86_64
name_template: "{{ .ProjectName }}-{{ .Version }}-{{ .Arch }}"
files:
"tmp/man.gz": "/usr/share/man/man8/app.8.gz"
config_files:
2018-04-23 16:38:16 +02:00
"tmp/app_generated.conf": "/etc/app-rpm.conf"
scripts:
preinstall: "scripts/preinstall-rpm.sh"
2018-02-19 01:37:59 +02:00
```
2018-07-09 08:57:46 +02:00
> Learn more about the [name template engine](/templates).
2018-02-19 01:37:59 +02:00
Note that GoReleaser will not install `rpmbuild` or any dependencies for you.
As for now, `rpmbuild` is recommended if you want to generate rpm packages.
You can install it with `apt-get install rpm` or `brew install rpm`.