

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
rpmbuildとは何かを理解するための基本
rpmbuild は Linux の RPM パッケージを作るためのツールです。RPM は Red Hat Package Manager の略で、Red Hat 系のディストリビューションでソフトウェアを配布する標準的な形式です。rpmbuild を使うとソースコードから実行ファイルを含む .rpm ファイルを作成できます。
rpmbuild を正しく使うには SPEC ファイル の仕組みを知ることが大切です。SPEC ファイルはパッケージの名前やバージョン、ビルド方法、ファイルの配置などを記述する設計図のようなものです。SPEC ファイルにはヘッダ部分と呼ばれる情報と実際のビルド手順を記述するセクションがあり、%prep、%build、%install、%files などの区分が現れます。
rpmbuild を使う前に、開発用のツールをインストールします。代表的なパッケージは rpm-build と rpmdevtools です。 Fedora や CentOS/RHEL では次のようにインストールします。
初心者はまずビルドツリーを作るところから始めます。
実際の環境では以下のようなコマンドを実行しますが、ここでは流れを理解することを目的とします。
dnf install rpm-build rpmdevtools redhat-rpm-config
SPEC ファイルの役割と基本構造
SPEC ファイルは Name、Version、Release、Summary、License などのヘッダ情報と、ビルドの手順が入っています。%description、%prep、%build、%install、%files が代表的な区分です。これらを組み合わせることで、ソースコードを受け取り適切な場所にファイルを配置し、実行可能な RPM を作る仕組みが完成します。
実際の手順の流れ
初心者が rpmbuild を使い始める一般的な流れは以下の通りです。まずビルド環境を整える、次にソースコードと SPEC ファイルを準備し、最後にビルドして出力物を確認します。
1) ビルド環境を作る: rpmdev-setuptree を実行すると ~/rpmbuild/SOURCES、~/rpmbuild/SPECS、~/rpmbuild/BUILD などのディレクトリが自動で作成されます。
2) ソースを sources に置く: 対象のソースコードや補助ファイルを ~/rpmbuild/SOURCES に入れます。
3) SPEC ファイルを SPECS に置く: パッケージ名に対応する .spec ファイルを作成しておきます。
4) ビルドを実行する: rpmbuild -ba SPECS/yourpkg.spec を実行します。
5) 出力物を確認する: ビルドが成功すると RPMS/ および SRPMS/ に rpm ファイルが作成されます。
よくあるトラブルと対処のヒント
ビルド依存関係が足りない というエラーが出ることがあります。この場合は SPEC ファイルに記載されている BuildRequires のパッケージをインストールしてください。
ファイルが見つからない、パスが違う などは SPECS ディレクトリとファイル名、SOURCES のファイル名を再確認しましょう。
クリーンな環境でビルドしたい 場合は mock を使うと良いです。mock は仮想環境でクリーンなビルドを再現します。
実用的なコマンド一覧表
| コマンド | 目的 | 説明 |
|---|---|---|
| rpmdev-setuptree | ビルド環境を作成 | rpmbuild が使うディレクトリ構造を作成します |
| rpmbuild -ba SPECS/pkg.spec | パッケージをビルド | ソースを取り込み実体の rpm を作成します |
| rpmbuild --showrc | 設定を確認 | rpmbuild の現在の設定を表示します |
初心者向けの実践ケース
実際のケースとして小さなソフトウェアを rpm 化する場合、まずは ビルドツリーの作成、次に SPEC ファイルの作成、そして ビルド実行という流れを辿ります。最初は失敗することも多いですが、失敗の原因を読む力を養うことが大切です。公式ドキュメントやコミュニティの情報を読み解く習慣をつけると、次第に自分で修正できるようになります。
まとめ
rpmbuild は RPM パッケージを作るための基本ツールであり、 SPEC ファイルを軸にソースコードをビルドしてパッケージ化します。初心者は rpm-build と rpmdevtools の導入から始め、SPECS ディレクトリに SPEC ファイルを置いて rpmbuild -ba でビルドする流れを覚えるのがコツです。この記事の手順と表を参考に、まずは小さなサンプルから挑戦してみましょう。
rpmbuildの同意語
- rpmbuild
- RPMパッケージをビルドするための主要コマンド。SPECファイルとソースを基に、.rpm形式のパッケージを作成する核となるツールです。
- RPMビルド
- RPM形式のパッケージを作るためのビルド作業全般を指す日本語表現です。rpmbuildを含むビルドプロセスの総称として使われます。
- RPMパッケージのビルド
- RPMパッケージを作成する過程のこと。ソースとSPECからバイナリRPMやソースRPMを生成する一連の作業を含みます。
- RPMパッケージ作成
- RPMパッケージを作ること全体を指す表現。ビルドだけでなく、パッケージの検証や署名なども含むことがあります。
- rpmビルドツール
- RPMパッケージを作るためのツール群の総称。rpmbuildを代表例として挙げられます。
- SPECファイルからのビルド
- SPECファイルに定義された手順に従ってパッケージを作ること。rpmbuildの中心的なワークフローの一部です。
- Red Hat系パッケージのビルド
- Red Hat系ディストリビューション向けのRPMパッケージを作成することを指す表現です。
- RPMパッケージの作成プロセス
- ビルド、検証、署名、配布用RPMの生成など、一連の作業フローをまとめて指します。
- RPMビルドコマンド
- rpmbuildを指す日本語表現。RPMパッケージを作るためのコマンド名です。
- バイナリRPMの生成
- ビルドの結果として得られる実行可能なRPMパッケージ(バイナリ形式)を作る作業です。
- ソースRPMの生成
- ソースコードを含むRPM(ソースRPM)を作る過程。ソース配布用のパッケージを作成します。
- rpmパッケージング作業
- パッケージ化全般の作業。ビルド、パッチ適用、仕様整理、署名などを含む広義の表現です。
rpmbuildの対義語・反対語
- プリビルド済みバイナリの利用
- rpmbuildの対義語として、ビルド工程を省略し、既にビルド済みのRPMパッケージを使用する行為。例: リポジトリから直接rpmを取得してインストールする。
- ビルドを省略する
- パッケージを新規に作成せず、ビルドを飛ばす選択。既存のRPMを使うか、そもそもビルドを必要としない環境を指す。
- 既存RPMのインストール・適用
- 新規ビルドをせず、既存のRPMをそのまま導入する行為。
- ソースからのビルドを回避する
- ソースコードからのビルド手順を実行せず、バイナリ型のパッケージを利用すること。
- パッケージを作成しない
- 新しいRPMパッケージを生成する作業を行わないこと。
- ビルド不要
- 特定の状況でビルドが不要とされる状態。
- リリース済みバイナリの再利用
- 公開済みのRPMを再利用して導入することで、再ビルドを回避すること。
rpmbuildの共起語
- SPECファイル
- rpmbuildが参照する仕様書。パッケージの名前・バージョン・ビルド手順・ファイルリストなどを記述する。
- SRPM(ソースRPM)
- ソースコードとビルド情報を含むRPMパッケージ。rpmbuild -bs で作成されることが多い。
- バイナリRPM
- 実行可能なファイルを含むRPMパッケージ。rpmbuild -ba や -bb の出力として作成される。
- ソースRPM
- SRPMと同義。ソースとビルド情報を含むRPMパッケージ。
- Source0
- SPECファイルで指定する最初のソースアーカイブ。通常は tarball や zip ファイルの名前を指す。
- SourceN
- 複数のソースファイルを参照する Source1, Source2 などの表記。
- Patch0
- ソースに適用する最初のパッチファイル。%patch で適用されることが多い。
- PatchN
- 複数のパッチファイルを順に適用する Patch1, Patch2 などの表記。
- BuildRequires
- ビルド時に必要な依存パッケージ。これが揃わないとビルドは進まない。
- Requires
- 実行時に必要な依存パッケージ。パッケージが動作するために必要なもの。
- Provides
- このパッケージが提供する仮想機能の識別子。他のパッケージとの依存解決に使われる。
- Version
- ソフトウェアのバージョン情報。
- Release
- リリース番号。ビルドごとの識別子。
- Summary
- パッケージの簡易説明。短文で要約を記述する。
- License
- ライセンス情報。例: MIT、GPLv3 など。
- %prep
- ソースの展開・パッチ適用など、ビルド前の前処理を記述する SPEC のセクション。
- %build
- 実際のビルド手順を記述する SPEC のセクション。
- %install
- ビルド成果をビルドルートにインストールする手順を記述するセクション。
- %files
- 最終的にパッケージに含めるファイルのリストを記述するセクション。
- BuildRoot
- ビルド中に使われる一時的なルートディレクトリ。
- rpmbuild -ba
- ソースパッケージとバイナリパッケージの両方を作成する代表的なコマンド。
- rpmbuild -bb
- バイナリパッケージのみを作成するコマンド。
- rpmbuild -bs
- ソースパッケージのみを作成するコマンド。
- --define
- マクロを定義してビルドをカスタマイズするオプション。
- --clean
- ビルド後に一時ファイルを削除するオプション。
- --target
- ビルド対象のアーキテクチャを指定するオプション(例: x86_64)。
- Signature
- パッケージに署名する機能。署名には GPG が使われることが多い。
- rpmlint
- ビルド後の RPM の品質チェックツール。形式・規約違反を検出する。
- rpmdev-setuptree
- RPMビルド用のディレクトリ構成を自動作成する補助ツール。
- mock
- クリーンな環境で RPM をビルドするツール。rpmbuild の代替・補助として使われることがある。
- BuildArch
- ビルド対象の CPU アーキテクチャ。x86_64 など。
- SourceX
- Source0, Source1 など、複数ソースの参照用の表現。
- PatchX
- Patch0, Patch1 など、複数パッチの参照用の表現。
rpmbuildの関連用語
- rpmbuild
- RPMパッケージを作成するためのビルドツール。SPECファイルを元にソースを展開・ビルド・インストールしてRPMを作成します。
- RPM
- Red Hat Package Manager の略。Red Hat系ディストリビューションで使われるパッケージ形式とパッケージ管理の仕組み。
- SPECファイル
- 拡張子 .spec のファイルで、パッケージ名・バージョン・依存関係・ビルド手順などを定義します。
- Source
- ソースコードのアーカイブ。Specファイル内で Source0 などとして指定します。
- Source0
- Specファイルで最初に指定するソースファイルの名称。通常は主要なソースアーカイブです。
- Patch
- ソースに適用する修正ファイル。複数ある場合は Patch0, Patch1 などと番号を付けます。
- Patch0
- 最初のパッチファイルの名称。
- BuildRequires
- ビルド時に必要な依存パッケージ。これが満たされていないと rpmbuild が失敗します。
- Requires
- 実行時に必要となる依存パッケージ。インストール後の動作に必要です。
- Provides
- このパッケージが提供する仮想的な機能名。別パッケージがこれを満たすことで依存を解決します。
- Obsoletes
- このパッケージが他のパッケージを置換することを示します。
- Conflicts
- 他のパッケージと同時にインストールできない関係。
- BuildRoot
- ビルド中に使用される一時的なルートディレクトリ。ビルド成果物はここに作成されます。
- _topdir
- rpmbuild の作業ディレクトリのトップ。SPECS と SOURCES が配置されます。
- SPECS
- Spec ファイルを格納するディレクトリ。
- SOURCES
- ソースファイルとパッチを格納するディレクトリ。
- SRPM
- Source RPM。ソースとパッチを含む RPM。配布時に使用されます。
- Binary RPM
- ビルドして得られる実行用の RPM パッケージ。
- Source RPM
- Source RPM の別表現。ソースとパッチを含むパッケージ。
- %prep
- spec のセクションの1つ。ソースの展開・パッチ適用などの準備を行います。
- %build
- 実際のビルドを行うセクション。コンパイルやリンクを実行します。
- %install
- ビルド成果物をビルドルートへインストールするセクション。
- %files
- パッケージに含めるファイル一覧を定義するセクション。
- %description
- パッケージの長い説明を記述するセクション。
- %summary
- パッケージの要約を記述するセクション。
- %license
- ライセンス情報を記述するセクション。
- %changelog
- 変更履歴を記述するセクション。
- %package
- 新しいサブパッケージを定義するセクション。
- Subpackage
- メインパッケージ以外の追加パッケージを作成する仕組み。
- rpmlint
- RPMパッケージの品質を検査する静的解析ツール。
- rpmdevtools
- RPMパッケージ作成を補助するツール群(テンプレート作成や検査など)。
- mock
- クリーンなビルド環境を再現してビルドするツール。
- Koji
- Fedora/RHEL 系の公式ビルドシステム。大規模ビルドを管理します。
- Copr
- 個人・組織が公開用に RPM をビルド・配布するサービス。
- rpmbuild options
- rpmbuild のコマンドラインオプション群。
- -ba
- ソースとバイナリの両方をビルドするオプション。
- -bb
- バイナリのみをビルドするオプション。
- -bp
- prep ステージのみを実行するオプション。
- -bc
- build ステージのみを実行するオプション。
- BuildArch
- ビルド対象のアーキテクチャ(例: x86_64)。
- Epoch
- バージョン番号の前につく整数の段階。
- Version
- パッケージのバージョン番号。
- Release
- 同一 Version の中のリリース番号。
- SourceX
- Source0 以外の追加ソースファイルを指定する際の名称。
- %autosetup
- 自動的にソースを展開しパッチを適用する便利なマクロ。
- %setup
- ソース展開を行うマクロ。
- Debuginfo
- デバッグ情報を格納するサブパッケージ。
- -doc
- ドキュメント用サブパッケージ。
- rpmsign
- RPM に署名を付与するツール(パッケージ署名)。
- GPG signing
- 署名用の公開鍵暗号。パッケージ署名に使用されます。



















