ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

簡単なRPMの作り方

 ここでは、RPMの作り方を説明します。

RPMとは

 RPMとは、RedHat Package Managerの略で、Linux上で最も普及しているパッケージ管理システムです。 パッケージを使うことにより、プログラムのインストール、アンインストール、アップグレードが容易にできるようになります。

RPMのバージョン

 RPMには、バージョン2, 3, 4があり、かなり仕様が違います。 Vine Linuxの http://www.vinelinux.org/MakingRPM/ や、ダウンロードしたSRPMのspecファイルが参考になりました。
 まずは、RPMのバージョンを確認しましょう。 ここでは、RPM3をベースに解説します。

unix# rpm --version
RPM version 3.0.3

パッケージ作成環境

ディレクトリ構成

 パッケージ作成環境は、以下のディレクトリ構成となっています。

SOURCESソースのアーカイブ、パッチ格納用
SPECSrpmの定義ファイル(パッケージ作成手順)格納用
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配下の*.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)を作成します。


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp