uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

rpm作成のためのfpm入門

仕事でrpmパッケージを作る必要があったので久しぶりにこの辺を真面目に調べてます。

以前調べたときに、fpm使って楽できるって話をちらっと聞いたので今回のエントリーではfpmでhadoopのtar.gzからrpmを作ってみることにします。

github.com
Home · jordansissel/fpm Wiki

fpmのインストール

今回はHadooprpmを作るのがゴールなので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

参考リンク