ここでは、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)を作成します。 |