札幌は先週から急激に温度が下がりましたが、まだクローゼットに半袖しか入ってなくて衣替えが間に合っておらず、風邪をひいてしまったkirksenchoです、こんにちは。連載3回目の「RPMパッケージを作ってみよう」シリーズ。前回は様々なYUMリポジトリの紹介と利用方法について書いてみました。▼前回の記事RPMパッケージを作ってみよう2YUMリポジトリいろいろ今回から、RPMパッケージを作成する為の環境構築に入っていきたいと思います。ビルドを実行するOS環境OSは今回CentOS7.2を使用しますが、CentOS6系でも基本は変わらないと思います。OSインストール時には、開発向けのオプションを選択すると良いでしょう。最小インストールにしていた場合は、以下のようなコマンドで開発用パッケージを一括インストールできます。Tools"ビルドする為に必要なパッケージRPMのビルドにはrpmbuildコマンドを使用しますが、コマンドが使えない場合は以下のコマンドでパッケージをインストールすると使用できるようになります。rpm-buildカスタムカーネルのリビルド等をしたい場合は、以下のコマンドでパッケージを追加する必要があります。kernel-headersビルド用ユーザの作成ビルドは基本的にroot以外のユーザで実行します。rpm公式サイトの説明では、root権限で実行した時の危険性を回避する為に、絶対にroot以外でやるように書かれていました。以下のコマンドでビルドに必要な.rpmmacrosファイルと、各ディレクトリが、ホームディレクトリの下に作成されます。$HOME/src/rpms/{BUILD,RPMS,SOURCES,SPECS,SRPMS}各ディレクトリの用途BUILDビルド中の一時ファイルが展開されるディレクトリです。RPMSビルドが完了したら、ここにRPMファイルが出力されます。SOURCESビルドに必要なソースファイルやパッチファイル等を格納しておくディレクトリです。SPECSビルドに必要なSPECファイルを格納しておくディレクトリです。SRPMSsrpmファイルもビルドした場合は、ここに出力されます。上記の他に、ビルドを実行すると「BUILDROOT」というディレクトリが出来上がりますが、これは完成したパッケージをインストールした時に展開されるファイルが、ルートからの階層そのままで再現される場所になります。どのディレクトリに何がインストールされるのかが、このディレクトリの中を見ていくと分かります。ビルドの方法についてRPMパッケージをビルドする場合、大きく3つの方法に分かれます。TARボールからビルドする場合httpd等の既存のソースからビルドする場合、SPECファイルを含んだTARボールを公式などから入手して引数にしてRPMパッケージをビルドする事ができます。httpd-2.4.23.tar.bz2上記のTARボールにSPECが含まれていて処理が進むと、まず依存関係のチェックが動きます。YUM等では自動で依存関係を解決してくれますが、rpmbuildの場合は人間が解決する必要があります。筆者のCentOS7.2環境では、以下が足りなかったようでエラーとなりました。必要とされています足りないと言われたパッケージは全て事前にインストールしておく必要があります。openssl-develところが困った事に、distcacheはCentOS標準リポジトリに存在せず、以下のエラーとなりました。