ここでは、RPMの作り方を説明します。
RPMとは、RedHat Package Managerの略で、Linux上で最も普及しているパッケージ管理システムです。 パッケージを使うことにより、プログラムのインストール、アンインストール、アップグレードが容易にできるようになります。
 RPMには、バージョン2, 3, 4があり、かなり仕様が違います。
Vine Linuxの
http://www.vinelinux.org/MakingRPM/
や、ダウンロードしたSRPMのspecファイルが参考になりました。
 まずは、RPMのバージョンを確認しましょう。
ここでは、RPM3をベースに解説します。
unix# rpm --version RPM version 3.0.3  | 
パッケージ作成環境は、以下のディレクトリ構成となっています。
| SOURCES | ソースのアーカイブ、パッチ格納用 | 
|---|---|
| SPECS | rpmの定義ファイル(パッケージ作成手順)格納用 | 
| BUILD | 作業用(ソースの展開、メイクで使用) | 
| RPMS | 作成したバイナリパッケージ格納用 | 
| SRPMS | 作成したソースパッケージ格納用 | 
パッケージを作成する場合のファイル名は、以下の規則に従います。
<パッケージ名>-<バージョン番号>.<リリース番号>.spec <パッケージ名>-<バージョン番号>.<リリース番号>.<アーキテクチャ>.rpm  | 
パッケージを作成するための、作業ディレクトリを.rpmmacros(RPM2の場合.rpmrc)で指定します。 パッケージを作成する場合は、以下のディレクトリを作成する必要があります。 $RPM_BUILD_ROOTは、/tmpなどを指定する場合が多いですが、ここでは、topdir配下のROOTを指定しています。
unix# vi $HOME/.rpmmacros %_topdir /home/joe/rpm unix# mkdir rpm; cd rpm unix# mkdir BUILD RPMS SOURCES SPECS SRPMS unix# mkdir RPMS/i386 unix# mkdir ROOT  | 
パッケージを作成するために必要な、ソースファイルのアーカイブや、パッチファイルをSOURCESディレクトリにダウンロードします。 パッチファイルを作成する場合は、「diff -c」コマンドを使います。
インストール手順や、アンインストール手順は、SPEC配下の*.specファイルに記述します。 ここでは、ASHの作成した16進ダンプツール(xd-1.0)を例を掲載しています。
name: xd
Version: 1.0
Release: 0
Copyright: ASH
Group: Utilities
Source: xd-1.0.tar.gz
Summary: heX Dump tool
Packager: Joe Masumura
Distribution: TurboLinux
BuildRoot: /home/joe/rpm/ROOT
%description
xd-1.0
%prep
rm -rf $RPM_BUILD_ROOT/*
mkdir -p $RPM_BUILD_ROOT/usr/local/{bin,man/man1}
%setup
%build
make
%install
install -s xd $RPM_BUILD_ROOT/usr/local/bin
install -s xd.1 $RPM_BUILD_ROOT/usr/local/man/man1
%clean
rm -rf $RPM_BUILD_ROOT
%files
%attr(-, root, root) /usr/local/bin/xd
%attr(-, root, root) /usr/local/man/man1/xd.1
 | 
パッケージの作成はrpmコマンドで行います。 rpmコマンドは、オプションにより、ステップ毎に動作確認を行うことができます。
unix# rpm -bp xd-1.0.spec(Build Patch) %prep %setup %patch まで実行します。 ls ../BUILD/xd-1.1/ で状況を確認できます。 unix# rpm -bc xd-1.0.spec(Build Compile) %prep %setup %patch %build まで実行します。 ls ../BUILD/xd-1.1/ で状況を確認できます。 unix# rpm -bi xd-1.0.spec(Build Install) %prep %setup %patch %build %install まで実行します。 ls ../ROOT/usr/local で状況を確認できます。 unix# rpm -bl xd-1.0.spec(Build List) %filesの内容をチェックします。 unix# rpm -bb xd-1.0.spec(Build Binary) バイナリパッケージ(RPMS)を作成します。 unix# rpm -ba xd-1.0.spec(Build All) バイナリパッケージ(RPMS)とソースパッケージ(SRPMS)を作成します。  |