NFPM

GoReleaser可以连到nfpm,生成和发布.deb.rpm包.

可用选项:

#.goreleaser.yml
nfpm:
  # 包名
  # Default: `{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}`
  name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"

  # 替换 存档名称中的 GOOS 和 GOARCH.
  # Keys 应为合法 GOOSs 或 GOARCHs.
  # Values 应为 恰当的替代名称.
  # 默认是 空.
  replacements:
    amd64: 64-bit
    386: 32-bit
    darwin: macOS
    linux: Tux

  # 你应用的 vendor.
  # 默认为 空
  vendor: Drum Roll Inc.
  # 你应用的 homepage.
  # 默认为 空
  homepage: https://example.com/

  # 你应用的 主项目人 (可能时 you).
  # 默认为 空
  maintainer: Drummer <drum-roll@example.com>

  # 你应用的 描述.
  # 默认为 空
  description: Software to create fast and easy drum rolls.

  # 你应用的 license.
  # 默认为 空
  license: Apache 2.0

  # 生成格式.
  formats:
    - deb
    - rpm

  # 你包所依赖的包。
  dependencies:
    - git
    - zsh

  # 软件包建议安装的软件包。
  # 对于RPM软件包,需要rpmbuild >= 4.13
  recommends:
    - bzr
    - gtk

  # 软件包建议安装的软件包。
  # 对于RPM软件包,需要rpmbuild >= 4.13
  suggests:
    - cvs
    - ksh

  # 与您的包冲突的包。
  conflicts:
    - svn
    - bash

  # 覆盖二进制文件的默认目的地为 /usr/local/bin
  bindir: /usr/bin

  # 应该由你程序实现创建和管理的空文件夹。
  # 默认为空
  empty_folders:
  - /var/log/foobar

  # 要添加到包中的文件或目录(超出二进制文件)。
  # Key 是从 源 路径/globs 中获取文件。
  # Value 是包中文件的目标位置。
  files:
    "scripts/etc/init.d/": "/etc/init.d"
    "path/**/glob": "/var/foo/glob"

  # 要添加到包中的配置文件。它们大致与上面fiels相同
  # ,但包管理器对待它们方式不同(同时
  # 卸载,主要是)。
  # Key 是从 源 路径/globs 中获取文件。
  # Value 是包中文件的目标位置。
  config_files:
    "tmp/app_generated.conf": "/etc/app.conf"
    "conf/*.conf": "/etc/foo/"

  # 在安装包期间执行的脚本。
  # Key 是安装过程的阶段
  # Values 是将要执行的脚本的路径
  scripts:
    preinstall: "scripts/preinstall.sh"
    postinstall: "scripts/postinstall.sh"
    preremove: "scripts/preremove.sh"
    postremove: "scripts/postremove.sh"

  # 每个包格式,可以覆盖一些属性。
  overrides:
    deb:
      conflicts:
        - subversion
      dependencies:
        - git
      suggests:
        - gitk
      recommends:
        - tig
      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:
        "tmp/app_generated.conf": "/etc/app-rpm.conf"
      scripts:
        preinstall: "scripts/preinstall-rpm.sh"

了解有关命名模板引擎的更多信息.

请注意,GoReleaser不会为你安装rpmbuild或任何依赖.就目前而言,如果要生成rpm包,rpmbuild是需要的, 建议使用apt-get install rpm要么brew install rpm安装它.