nfpmでdeb作成するメモ

rpmdeb をつくるのに nfpm が便利と教えていただいて、半年ほど前から nfpm を使うようになりました。手軽に使えて便利です。

 

詳細なインストール方法やconfigの内容はドキュメント(https://nfpm.goreleaser.com/)で確認してみてください。

 

使用例 : carbon-relay-ng の deb生成してみる

carbon-relay-ng を例に、私がdeb生成で使っている内容を、雑にメモしておきます。

nfpmインストール

# wget https://github.com/goreleaser/nfpm/releases/download/v1.4.1/nfpm_amd64.deb
# apt install ./nfpm_amd64.deb

 

梱包するものの準備

carbon-relay-ng
L nfpm.yaml
L files
L carbon-relay-ng <- 事前にバイナリをビルドしておく
L carbon-relay-ng.conf
L carbon-relay-ng.service
L tmpfile.conf
L scripts
L before_install.sh <- ディレクトリ作成・所有変更など
L after_install.sh <- daemon-reload など

 

nfpm.yaml 準備

# nfpm config file for carbon-relay-ng
name: "carbon-relay-ng"
arch: "amd64"
platform: "linux"
version: "0.13.0"
release: "1"
section: "default"
provides:
- carbon-relay-ng
maintainer: "Dieter Plaetinck"
description: |
Fast carbon relay+aggregator with admin interfaces for making changes online - production ready
vendor: "http://github.com/grafana/carbon-relay-ng"
homepage: "http://github.com/grafana/carbon-relay-ng"
license: "2-clause BSD license"
bindir: "/usr/bin"
empty_folders:
- /var/log/carbon-relay-ng
- /etc/carbon-relay-ng
config_files:
./files/carbon-relay-ng.conf: "/etc/carbon-relay-ng/carbon-relay-ng.conf"
files:
./files/carbon-relay-ng: "/usr/bin/carbon-relay-ng"
./files/carbon-relay-ng.service: "/lib/systemd/system/carbon-relay-ng.service"
./files/tmpfile.conf: "/etc/tmpfiles.d/carbon-relay-ng.conf"
scripts:
preinstall: "scripts/before_install.sh"
postinstall: "scripts/after_install.sh"

私がはじめに使っていた時ドキュメントあまり読んでなかったので失敗したのですが、アップグレードの際に config_files (上書きしないを選択できる) と files (問答無用で上書き) があるので適宜使い分けます。

 

nfpm実行 ( コマンド )

nfpm pkg --target carbon-relay-ng_0.13.0-1_amd64.deb

 

nfpm実行シェルの例 ( スクリプト内から抜粋 )

github-release.sh <- nfpm 実行とgithubにアップロード
L carbon-relay-ng <- 先ほどの準備物一式
L foo
L var


for APP_NAME in "carbon-relay-ng" "foo" "var"
do
PKG_VERSION=$(grep version ${APP_NAME}/nfpm.yaml | cut -d'"' -f 2)
RELEASE_VERSION=$(grep release ${APP_NAME}/nfpm.yaml | cut -d'"' -f 2)
( cd ${APP_NAME} && nfpm pkg --target "${APP_NAME}_${PKG_VERSION}-${RELEASE_VERSION}_amd64.deb" )



done

 

こんな感じでdeb作成してます。手軽に使えて便利です。

 

蛇足

前のバージョン( v1.1.8 ) を使っていたときに、release version が - ではなく ~ になってしまう挙動でしたが、新しいバージョン ( v.1.4.1 ) では - になるようになったようです。

もしも、同じ事象に遭遇されている方がいたらバージョン確認してみてください。

feat: version release/prerelease options by astorath · Pull Request #111 · goreleaser/nfpm · GitHub で変更になったそうです )

nfpm --version
1.1.8

nfpm pkg --target carbon-relay-ng_0.13.0-1_amd64.deb

dpkg -I carbon-relay-ng_0.13.0-1_amd64.deb | grep -i version: Version: 0.13.0~1 <- "~" になる

----------------------------
# nfpm --version 1.4.1

nfpm pkg --target carbon-relay-ng_0.13.0-1_amd64.deb

dpkg -I carbon-relay-ng_0.13.0-1_amd64.deb | grep -i version: Version: 0.13.0-1 <- "-" になる