なっく日報

技術やら生活やらのメモ

fpmでrpmを作った際のメモ

諸事情によりrpmを作る必要があったので、そのメモ(人生初)

まず環境

VagrantでCentOS6.5の環境を作りました。手順は省略。

(ちなみに、いろんな記事をちょい見した感じ、最近はDockerでやったりするのがイケてそうですね。次回はやりたい)

rpm化したいツールのビルド

ここも適宜。ここでは仮にhoge-cliとしておきます。

rpm

rpmの作り方(rpmbuild/checkinstall/fpm)とrpmレポジトリの作り方 - Qiita

コチラのQiitaの記事を参考にして、fpmなるものの存在を知りました。

github.com

rpmに限らず、様々なフォーマットのソースから様々なフォーマットのパッケージを作成できる便利ツールということです。

今回はコチラを使うことにしました。

fpmの使い方

インストール

yum -y install ruby ruby-devel ruby-libs rubygems rpm-build
sudo gem install fpm

実行

カレントディレクトリに先ほどビルドしたbin/hoge-cliが存在しているとしてください。

fpm -s dir \
  -v 1.0.0 \
  -t rpm \
  -n hoge-cli \
  -p ./hoge-cli-1.0.0.el6.x86_64.rpm \
  -C bin \
  -a x86_64 \
  --prefix /usr/local/bin \
  --url https://github.com/hoge/hoge-cli \
  --license MIT \
  --description 'hoge-cli' \
  .
# ↓結果
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"./hoge-cli-1.0.0.el6.x86_64.rpm"}

ちゃんとできた確認

# rpmの情報を見る
rpm -qpi hoge-cli-1.0.0.el6.x86_64.rpm
# rpmに含まれるファイルを見る
rpm -qpl hoge-cli-1.0.0.el6.x86_64.rpm

注意点

CentOS6.5 + ruby1.8系だとエラーが出ました。

↓のissueにあがっている通り
New version of cabin conflicts with FPM · Issue #1051 · jordansissel/fpm · GitHub

gem uninstall cabin
gem install cabin -v 0.7.2

で解決。