Loading ...

rpmbuildコマンドを使おう


RPMでのアプリケーションのインストールははその性質上RPMファイルを一旦作成してからインストールする必要があります. ここではRPMファイルのビルドを行うrpmコマンドについて説明をします.

rpmbuildコマンドのインストール

まずRPMのビルドはrpmbuildコマンドが使用できなければなりません. rpmbuildはパッケージ「rpm-build」をインストールします.インストールにはyumを使用します.

パッケージ「rpm-build」のインストール
# /usr/bin/yum install rpm-build

依存関係も含め複数のパッケージがインストールされる場合があります.

rpmbuildコマンドの使い方

rpmbuildコマンドは名前の通りRPMをビルドするためのコマンドです. rpmbuildコマンドでよく使うオプションは下記の通りです.

rpmbuildコマンドでよく使うオプション
-baSPECファイルを用いてRPMファイルとSRPMファイルをビルドします.
-bbSPECファイルを用いてRPMファイルをビルドします.
-bsSPECファイルを用いてSRPMファイルをビルドします.
-taアーカイブファイル*1を用いてRPMファイルとSRPMファイルをビルドします.
-tbアーカイブファイル*2を用いてRPMファイルをビルドします.
-tsアーカイブファイル*3を用いてSRPMファイルをビルドします.
--targetビルド対象のプラットフォームを指定します.
--sort-circuitオプション「-bi」や「-bl」などと合わせて使用します.オプション「--sort-circuit」を指定すると,指定セクション以降からのビルド作業を行います.
-bpprepセクション以降を実行します.(prepセクションについては後述)オプション「--short-circuit」と合わせて使用します.
-bcbuildセクション以降を実行します.(buildセクションについては後述)オプション「--short-circuit」と合わせて使用します.
-biinstallセクション以降を実行します.(installセクションについては後述)オプション「--short-circuit」と合わせて使用します.
-blfilesセクション以降を実行します.(filesセクションについては後述)オプション「--short-circuit」と合わせて使用します.
--rmsourceビルド作業後,指定されたソースファイルを削除します.
--rmspecビルド作業後,指定されたSPECファイルを削除します.

rpmbuildに関連するディレクトリ

rpmbuildはデフォルトではディレクトリ「/usr/src/redhat」をベースにいくつかのディレクトリを目的別に使用します. rpmbuildがデフォルトで使うディレクトリは下記の通りです.

BUILDビルド作業に使用するディレクトリです.
RPMSビルド成功時にRPMファイルを保存するディレクトリです.さらにアーキテクチャ別にサブディレクトリが分けられます.
SRPMSビルド成功時にSRPMファイルを保存するディレクトリです.
SOURCESビルドに必要なソースファイル・パッチファイルを配置するディレクトリです.
SPECSビルドに必要なSPECファイルを配置するディレクトリです.

その他,仮想インストール時に使用するディレクトリとして通常「/var/tmp」が使用されます.

[コラム]rootでRPMファイルを作らない

RPMファイルを作成する上で最も注意注意すべきことは「rootで作業をしない」ということです. これはなぜかというと,「make install」などを行ったときに場合によっては「本当にインストールしてしまう」からです. これでは「RPMでシステムを管理する」といった概念の根本から崩れてしまいます.

今回はまだディレクトリ「/usr/local」配下にインストールするSPECファイルなので,通常のシステムを破壊することはありませんが,ディレクトリ「/usr」にインストールするSPECファイルを書いていたときに,間違って本当にインストールをしてしまうと,おそらくシステムの破壊が始まってしまいます*4. そういった問題を回避するにはRPMファイルの作成は可能な限りrootではなく一般ユーザーで行います. ここでは一般ユーザーでRPMファイルを作成するための準備を説明します. なお,RPMファイルを作成するための一般ユーザーとしてユーザー「devel」を作成していると仮定します.

一般ユーザーでRPMファイルを作る準備

まず一般ユーザー「devel」でログインします. 次に下記のようにしてRPMファイルのビルドに必要なディレクトリを作成します*5

ディレクトリを作成
$ rmkdir $HOME/rpm/{BUILD,SRPMS,SPECS,SOURCES,RPMS}

次に先ほど作成したディレクトリをRPMファイルのビルドに使用するようにマクロ設定ファイル「.rpmmacros」をホームディレクトリに作成します. 作業ディレクトリのトップディレクトリを表すマクロ変数「_topdir」があるので,それを指定するだけです.

マクロ設定ファイル「.rpmmacros」を作成する
$ echo "_topdir $HOME/rpm" > $HMOE/.rpmmacros

これで完了です. 先ほどのSPECファイルを用いて一度RPMファイルを作成をしてみてください.



*1 tar+gzipやtar+bzip2の形式
*2 tar+gzipやtar+bzip2の形式
*3 tar+gzipやtar+bzip2の形式
*4 実際にこの原稿を執筆している時点でやっちゃいました(苦笑
*5 ディレクトリの役割は後々説明します
リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
最終修正日時: Fri, 03 Feb 2006 15:42:06 JST (2192d)
文字数(HTML): 2502
文字数(Wiki): 2651
人気ブログランキング - よくきた wiki