仕事で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
インストールに苦労するものはないと思います。
とりあえず、今回はここから取得してきましょう。
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]
今回のエントリーで使ってるバージョンは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
準備しています...
更新中 / インストール中...
1:apache-hadoop-2.7.3-1
$ 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
参考リンク