仕事でrpmパッケージを作る必要があったので久しぶりにこの辺を真面目に調べてます。
以前調べたときに、fpm使って楽できるって話をちらっと聞いたので今回のエントリーではfpmでhadoopのtar.gzからrpmを作ってみることにします。
github.com
Home · jordansissel/fpm Wiki
fpmのインストール
今回はHadoopのrpmを作るのがゴールなのでfpmを使うための最小限ぐらいのパッケージをインストールします。
$ sudo yum install ruby-devel gcc make rpm-build $ sudo gem install fpm --no-ri --no-rdoc
インストールに苦労するものはないと思います。
Hadoopのソース取得
とりあえず、今回はここから取得してきましょう。
Index of /dist/hadoop/core/hadoop-2.7.3
$ wget http://www.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz --2016-11-22 01:03:38-- http://www.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz www.apache.org (www.apache.org) をDNSに問いあわせています... 2a01:4f8:130:2192::2, 88.198.26.2, 140.211.11.105 www.apache.org (www.apache.org)|2a01:4f8:130:2192::2|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 214092195 (204M) [application/x-gzip] `hadoop-2.7.3.tar.gz' に保存中 100%[=========================================================================================================================>] 214,092,195 2.87MB/s 時間 74s 2016-11-22 01:04:53 (2.76 MB/s) - `hadoop-2.7.3.tar.gz' へ保存完了 [214092195/214092195]
fpmでrpm化
今回のエントリーで使ってるバージョンは1.6.3です。
$ fpm -v
1.6.3
まずは、一番簡単な方法でrpmを作ってみます。 -sと-tオプションを渡してコマンドを実行します。
$ fpm -s tar -t rpm hadoop-2.7.3.tar.gz Created package {:path=>"hadoop-2-1.0-1.x86_64.rpm"}
パッケージ・バージョンが少し辺ですがこれだけでもrpmを作ることに成功しました。
バージョンが変なので-vオプションを渡してさらに-nオプションも渡してみます。
$ fpm -s tar -t rpm --prefix /opt/myapp -v 2.7.3 -n apache-hadoop hadoop-2.7.3.tar.gz Created package {:path=>"apache-hadoop-2.7.3-1.x86_64.rpm"}
バージョンの後ろにまだ1という数字がありますがこれはバージョンとは直接関係ないものです。
ここを変更するには --iteration
さらに、 --prefix オプションを渡すことでパッケージをインストールするデフォルトのディレクトリを指定することも可能です。
$ fpm -s tar -t rpm --prefix /opt/myapp -v 2.7.3 -n apache-hadoop \ hadoop-2.7.3.tar.gz
今回は一番最後に実行したprefixオプションをつけて出来上がったパッケージが意図したとおりにインストールされるか確認して終わりにします。
$ sudo rpm -Uvh apache-hadoop-2.7.3-1.x86_64.rpm 準備しています... ################################# [100%] 更新中 / インストール中... 1:apache-hadoop-2.7.3-1 ################################# [100%] $ sudo rpm -qa apache-hadoop apache-hadoop-2.7.3-1.x86_64 $ sudo rpm -ql apache-hadoop | head /opt/myapp/hadoop-2.7.3/LICENSE.txt /opt/myapp/hadoop-2.7.3/NOTICE.txt /opt/myapp/hadoop-2.7.3/README.txt /opt/myapp/hadoop-2.7.3/bin/container-executor /opt/myapp/hadoop-2.7.3/bin/hadoop /opt/myapp/hadoop-2.7.3/bin/hadoop.cmd
ちゃんと、/opt/myapp 以下に配置されてますね。
fpmを使うことでspecファイルを書かなくてもrpmが作れる方法の紹介でした。
追記
インストールしなくてもrpmコマンドだけで確認出来るみたいですね。
$ rpm -qpi apache-hadoop-2.7.3-100.noarch.rpm $ rpm -qpl apache-hadoop-2.7.3-100.noarch.rpm |head
参考リンク
- rpmの作り方(rpmbuild/checkinstall/fpm)とrpmレポジトリの作り方 - Qiita
- Consulをfpmでrpm化する - Qiita
- fpm で Mesos の RPM を作るまで - apatheia.info
[改訂新版]プロのためのLinuxシステム構築・運用技術 (Software Design plus)
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/22
- メディア: 大型本
- この商品を含むブログを見る