先週会社でRuby Enterprise EditionをRPM化するという課題をやっていたのだが、何度やってもinstall直前にビルドされたバイナリが消えてしまうという謎の事象に遭遇した。
RedHat系の別ディストリビューション向けのSRPMファイルを基にSPECファイルを編集して対象のディストリビューション用のRPMパッケージを作ろうとしたのだが、同じRPMとはいえディストリビューションによって多少動きが違うことがあるようで、上記の問題以外にもいろいろと問題が生じて大変だった。
そもそも僕はRPMパッケージ自体の知識に乏しく、今後はRPMを多用する仕事が多くらしいので今のうちに勉強しておいた方がよさそうだ、ということで少し調べてみた。
1. 作業ディレクトリの指定
ユーザのホームディレクトリでRPMパッケージのビルド作業が行えるように、ホームディレクトリ直下に .rpmmacros ファイルを作成して作業ディレクトリを指定する。
$ echo “%_topdir /home/ユーザ名/rpm” > ~/.rpmmacros |
2. 作業ディレクトリの作成
RPMパッケージのビルドに必要な作業ディレクトリを用意する。
$ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS} |
3. ソースのアーカイブの配置
SOURCESディレクトリ配下にビルドするソースのアーカイブ(大体はtarballだろうか)を配置する。
4. SPECファイルの作成
SPECSディレクトリ配下に作成するRPMパッケージ用のSPECファイルを作成する。
SPECファイルの書き方はまだよくわかっていないので整理するのはまた後日。
とりあえずは巷に出回っているSPECファイルを使いまわして、ディストリビューションに依存する部分をうまいこと編集できればいいはずだ。
参考:
・http://wiki.poyo.jp/read/Writing/misc/linux/rpm_de_php/04.RPM%20Introduction
・http://wiki.poyo.jp/read/Writing/misc/linux/rpm_de_php/05.SPEC%20Introduction
5. RPMパッケージのビルド
rpmbuildコマンドを使ってRPMパッケージをビルドする。
$ rpmbuild -bb SPECファイル名 |
RPMSディレクトリ配下に所望の.rpmファイルができていれば成功……のはず。
その他、RPMパッケージの作成に役立ちそうな情報が諸々あったので、早いことRPMをマスターしてしまいたいと思う。
参考:
・http://wiki.poyo.jp/read/Writing/misc/linux/rpm_de_php/08.O%20wa%20ri
・http://www.rpm.org/
コメントを残す
コメントを投稿するにはログインしてください。