このページでは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パッケージを作成する方法についてお伝えした。
なかなか作る機会はないかもしれないが、そういった必要性が出てきたとき、参考にしていただければと思う。
コメント