Debパッケージ作成時のバージョン番号取得について¶
- debパッケージ作成時、インストール先を「openrtm-1.2」とした場合、この1.2のバージョン番号を deb/debian/rules で取得するため、dpkg-parsechangelog コマンドを利用した
- この動作確認メモ
- シェルスクリプトならば、以下で取得できるのだが、これをrulesに定義すると、カッコの数が合わないと怒られる
$ head -n 1 changelog | sed 's/.*(\([0-9].[0-9]\).*/\1/' 1.2
- dpkg-parsechangelogコマンドの--show-fieldオプションを利用できる
$ dpkg-parsechangelog --show-field Version 1.2.0-0 $ dpkg-parsechangelog --show-field Version | cut -b 1-3 1.2
- ところが、この --show-field オプションはバージョン1.17から追加されたということで、現在サポートしている環境全てで利用できない
dpkg-parsechangelogのバージョン確認結果 debian 70, 70-64 ・・・1.16.18(--show-field 使えない) debian 80, 80-64 ・・・1.17.27 ubuntu 1204, 1204-64 ・・・1.16.1.2(--show-field 使えない) ubuntu 1404, 1404-64 ・・・1.17.5 ubuntu 1604, 1604-64 ・・・1.18.4 ubuntu 1610, 1610-64 ・・・1.18.10
- dpkg-parsechangelogを実行すると下記の情報を得られる
$ dpkg-parsechangelog Source: openrtp Version: 1.2.0-0 Distribution: experimental Urgency: low Maintainer: Noriaki Ando <n-ando@aist.go.jp> Date: Mon, 12 Dec 2016 18:36:29 +0900 Changes: openrtp (1.2.0-0) experimental; urgency=low . * 1.2.0-0 (1.2.0-RELEASE). OpenRTP-1.2.0-RELEASE
- --show-fieldオプションを使わずに取得するためには、
$ dpkg-parsechangelog | grep Version: | cut -d' ' -f2- | cut -b 1-3 1.2
または$ dpkg-parsechangelog | sed -n 's/^Version: //p' | cut -b 1-3 1.2
- 後者を使い、deb/debian/rules では以下のように定義している
# short version number SHORT_VER := $(shell dpkg-parsechangelog | sed -n 's/^Version: //p' | cut -b 1-3) : # for openrtp package (cd $(CURDIR) ; mkdir -p $(CURDIR)/debian/openrtp/usr/lib/$(DEB_HOST_MULTIARCH)/openrtm-$(SHORT_VER)/openrtp)