一般ユーザで RPM を作成する
提供:maruko2 Note.
- ソースコードや SRPM から RPM パッケージを作る時、root で作業しない方がいいらしい。
- root ユーザだとコンパイルできないものもあるので、一般ユーザで RPM パッケージを作成できるようにする。(デフォルトの RPM 作成用のディレクトリ /usr/src/redhat/ は、所有者が root になっているので、所有者を一般ユーザに変える方法もある。)
目次 |
RPM ビルド用環境設定
- ホームディレクトリに rpmbuild で使用するディレクトリを作成
- rpmbuild の設定ファイル(~/.rpmmacros)を作成
- rpmbuild コマンドをインストール
1. ホームディレクトリに rpm という名前のディレクトリを作り、その中に BUILD, SOURCES, SPECS, SRPMS, RPMS という名前のディレクトリを作成する。
$ mkdir -p ~/rpm/{BUILD,SOURCES,SPECS,SRPMS,RPMS}
- ビルドされたパッケージは、~/rpm/RPMS/アーキテクチャ名 のディレクトリ (athron,i386,noarch など) に作成されるが、それらアーキテクチャ名のディレクトリはビルド時に自動的に作成されるので作っておかなくてよい。
2. ユーザ用の RPM 設定ファイル .rpmmacros をホームディレクトリに作成する
$ echo "%_topdir $HOME/rpm" > ~/.rpmmacros
3. rpmbuild コマンドをインストールする
$ yum -y install rpm-build
rpmbuild コマンドの使用例
rpmbuild コマンドでパッケージをビルドする時、ソースコードの種類として、1. SRPM ファイル、2. SPEC ファイルを含む tar ボール、3. SPEC ファイルを含まない tar ボールの3種類ある。 また、ビルド後、RPM のみ作成、RPM と SRPM を作成、SRPM のみ作成するオプションもある。
SRPM からビルドする
$ rpmbuild --rebuild <SRPMファイル>
SPEC ファイルを含む tar ボール
.spec ファイルを含む tar ボールから RPM (のみ)を作成する場合、次のようにする。
$ rpmbuild -tb <tar ボール>
オプションを -ta にすると RPM と SRPM ともに作成し、-ts だと SRPM のみ作成する。
SPEC ファイルを含まない tar ボール (編集した SPEC ファイルを使う場合)
.spec ファイルを含まない tar ボールからビルドする場合、あるいは、.spec ファイルを編集してビルドする場合、.spec ファイルを指定して rpmbuild コマンドを実行する。
ビルド時に必要になるソースコード (tar ボール) は、~/rpm/SOURCES ディレクトリに入れておく。
spec ファイルから RPM のみ作成
rpmbuild -bb ~/rpm/SPECS/<specfile.spec>
spec ファイルから RPM と SRPM を作成
rpmbuild -ba ~/rpm/SPECS/<specfile.spec>
spec ファイルから SRPM のみ作成
rpmbuild -bs ~/rpm/SPECS/<specfile.spec>
参考ページ
- RPM で快適 Linux 環境(Part 1)
- RPM で快適 Linux 環境(Part 2)
- IT media エンタープライズ: tar ボールから RPM パッケージを作るコツ
- Manpage of RPM
- Manpage of RPMBUILD