このページではRPMパッケージ作成の方法を紹介する。
初心者の方であれば、とりあえず知らずともまったく問題がない。Linux入門を上から確認している方は、飛ばしてもいいだろう。
パッケージを作成するときはシステムに致命的な損傷を与えないよう、一般ユーザ権限でホームディレクトリの下で行うことをお勧めする。
環境準備
まずは開発環境をインストールする。
# yum install rpm-build

# yum groupinstall 'Development tools'

CentOSではこの二つのコマンドを叩くとRPM開発環境が整う。
RPMパッケージの作成
src.rpmファイルのダウンロード
多くのRPMパッケージにはバイナリパッケージとソースパッケージが用意されている。ソースパッケージはSRPMと呼ばれ、.src.rpmという拡張子がつく。
準備が整ったら「src.rpm」ファイルをダウンロードしてみよう。
$ yumdownloader –source unzip

とするとダウンロードできる。今回unzipのsrc.rpmをダウンロードした。

上の図の「rpmbuildディレクトリ」に関してはRPMパッケージを作る過程で作成されるので現段階で存在しなくても問題ない。
$ rpm -ivh unzip-6.0.15.el7.src.rpm
でホームディレクトリにソースファイルを一式インストールする。警告が出るが今回は気にしなくて大丈夫だ。

ビルドのためのインストール
# yum-builddep /home/<hoge>/rpmbuild/SPECS/unzip.spec
このコマンドでunzipをビルドするためのヘッダやライブラリ群などがインストールされる。

一旦ここで/home/<hoge>/rpmbuild/SOURCESの下を覗いてみよう。大本のソースファイルと多数のパッチが見えるはずだ。CentOSは保守的なので一定のバージョンをパッチで補正してセキュリティを保つため、少々枯れたバージョンに多数のパッチが提供される形になる。

/home/<hoge>/rpmbuild/SPECSの下にはRPMを生成するための<hoge>.specというファイルが置かれる、これはRPMパッケージを作成するためのいわば「レシピ」だ。

試しに覗いてみよう。

概要とバージョン、ライセンスなどが記述され、ソースはどこから持ってきたものなのか?どのようなパッチがあるかが記載される。

次は詳細概要とパッチをどうあてるかが記述されている。

ここの段階でmake及びmake install が実行される。今回はconfigureの項目がないがほかのパッケージでは多くのものがconfigureする項目が存在する。最後は変更履歴などが記載されている。

ビルド
実際にspecファイルをもとにビルドしてみよう。
$ rpmbuild -ba unzip.spec

今回は特に変更を加えていないのでエラーは出ないはずだ、正常に完了すると以下のようになる。

$ ls ~/rpmbuild/RPMS/x86_64/
としてみるとパッケージが出来上がっているのが確認できる。

デバッグ情報用のパッケージも出来上がる。今回作ったパッケージはすでにシステムに既存するものなので再度インストールする必要はない。
$ rpm -qip unzip-6.0.15.el7.centos.x86_64.rpm
などとして情報を確認してみよう。公式パッケージとはいくらか異なる項目があるのがわかると思う。今回src.rpmを使ってパッケージをリビルドしたが、もちろん
- ~/rpmbuild/SOUECES
- ~/rpmbuild/SPECS
の中に自分で
- ソースファイルやパッチファイル、
- specファイル
を用意することで自作パッケージが作成可能なので、興味のある方はぜひ自分でパッケージを制作してみてほしい。
まとめ
このページではRPMパッケージを作成する方法についてお伝えした。
なかなか作る機会はないかもしれないが、そういった必要性が出てきたとき、参考にしていただければと思う。

 
                    



コメント