fpmでrpmを作った際のメモ
諸事情によりrpmを作る必要があったので、そのメモ(人生初)
まず環境
VagrantでCentOS6.5の環境を作りました。手順は省略。
(ちなみに、いろんな記事をちょい見した感じ、最近はDockerでやったりするのがイケてそうですね。次回はやりたい)
rpm化したいツールのビルド
ここも適宜。ここでは仮にhoge-cli
としておきます。
rpm化
rpmの作り方(rpmbuild/checkinstall/fpm)とrpmレポジトリの作り方 - Qiita
コチラのQiitaの記事を参考にして、fpmなるものの存在を知りました。
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
で解決。