監視ツールXymonのrpmをビルドしてみた話
背景
現在、今の環境をpuppetで置き換えようと色々と頑張っています。
Xymonというサーバ監視ツールを勉強で入れているのですが、それをpuppetで表現しようとしていました。
結果的にexecだらけで管理しずらいのと、デフォルトでspecファイルが用意されていのたでrpmをビルドすることにした次第であります。
実行環境
Vagrantで立ち上げたCentOS7 Minimal(https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box)の初期状態.
specファイル
rpmbuildにはspecファイルが必須です。
specファイルは公式から提供されているのでまずはそれを入手しましょう。
specファイルの入手
xymonの本体と一緒に提供されています。
本日時点では4.3.21が最新ですのでそれを例に取っていますが、以下のURLから最新のバージョンを確認してください.
http://sourceforge.net/projects/xymon/files/Xymon/
以下のコマンドから最新のパッケージをダウンロードし、解凍・rpmディレクトリにspecファイルと関連するファイル一式が存在することを確認します。
(ここではホームディレクトリで解凍されたと仮定します)
$ wget http://sourceforge.net/projects/xymon/files/Xymon/4.3.21/xymon-4.3.21.tar.gz $ tar xvfz xymon-4.3.21.tar.gz $ ls -l xymon-4.3.21/rpm/ $ ls -l xymon-4.3.21/rpm/ 合計 24 -rw-r--r--. 1 xymon xymon 739 3月 8 2011 xymon-client.default -rw-r--r--. 1 xymon xymon 1830 2月 3 2014 xymon-client.init -rw-r--r--. 1 xymon xymon 1253 3月 8 2011 xymon-init.d -rw-r--r--. 1 xymon xymon 274 3月 8 2011 xymon.logrotate -rw-r--r--. 1 xymon xymon 5761 7月 4 10:05 xymon.spec
specファイルの修正
specファイルが存在するのを確認したら必要な部分を修正します。
といっても、ビルドするために必要な最小限の部分だけ修正を行います。
xymon.specファイルの二箇所に"@VER" と記述された部分が存在するのでそれを置換します。
Version: @VER -> Version: 4.3.21 Source: xymon-@VER.tar.gz -> Source: xymon-4.3.21.tar.gz
ビルドするために
specファイルの準備はできたが、まだビルドするためのパッケージの準備ができていない.
依存パッケージのインストール
root権限で以下のコマンドを使用して、パッケージをインストールする.
[root] $ yum install gcc pcre-devel rrdtool-devel libpng-devel openssl-devel openldap-devel
これで必要なパッケージはインストールできているはず.
必要なファイルの移動
specファイルを見てもらうとわかるが、ソースの部分に必要なファイルが記述されています.
ほとんどがxymonのrpmディレクトリにありますが、xymon-4.3.21.tar.gz の解凍前のファイルも必須です。
これらを今回はデフォルトのrpmbuildのパス($HOME/rpmbuild)にコピーします.
$ mkdir -p ~/rpmbuild/{SOURCES, SPEC} # rpmbuildの必要ファイルを置くディレクトリを作成 $ cp ~/xymon-4.3.21/rpm/* ~/rpmbuild/SOURCES/ # 不必要なspecファイルもコピーされているが、ビルドに支障はないので気にしない $ cp ~/xymon-4.3.21.tar.gz ~/rpmbuild/SOURCES/ $ cp ~/xymon-4.3.21/rpm/xymon.spec ~/rpmbuild/SPEC # 実はここにspecファイルを持ってこなくてもビルドできるが一応
rpmのビルド
あとはrpmbuildを使用してビルドを行います。
今回はソースパッケージとバイナリパッケージを作成します。
ソースパッケージについては使用したことがないので言及できませんが、調べてみるとrpm -iコマンドでインストールできない時、異なるOSでインストールするときにリビルドする時に使用するらしいです。
$ rpmbuild -ba ~/rpmbuild/xymon.spec
あとはひたすら待つ.
すると以下のファイルが生成される.
$ tree ~/rpmbuild/RPMS /home/xymon/rpmbuild/RPMS/ └── x86_64 ├── xymon-4.3.21-1.x86_64.rpm ├── xymon-client-4.3.21-1.x86_64.rpm └── xymon-debuginfo-4.3.21-1.x86_64.rpm
最後に
本当はもう少しspecファイルに対して理解の深めてから書きたいところだったけど今回はとりあえずrpmbuildを行う流れをまとめた.
余裕があるときにでもspecファイルの記述されている部分について理解を深めたい.