RPM パッケージの作成は全く簡単です、特に作成しようとしている ソフトウェアを手に入れられるならなおさらです.
RPM を作成する基本的な課程は以下の通りです.
一般的な操作の下で、RPM はバイナリとソースパッケージを作成します.
現在、RPM の設定は /etc/rpmrc ファイルのみが有効です.例えば以下のよ うになります. [訳注、デフォルトとして、/usr/lib/rpmrc というものがあり、 個人の設定ファイルとして個人のホームディレクトリに .rpmrc を置くこともできます.]
require_vendor: 1
distribution: I roll my own!
require_distribution: 1
topdir: /usr/src/me
vendor: Mickiesoft
packager: Mickeysoft Packaging Account <packages@mickiesoft.com>
optflags: i386 -O2 -m486 -fno-strength-reduce
optflags: alpha -O2
optflags: sparc -O2
signature: pgp
pgp_name: Mickeysoft Packaging Account
pgp_path: /home/packages/.pgp
tmppath: /usr/tmp
require_vendor の行は /etc/rpmrc もしくは spec ファイルのヘッダから vendor の行を探そうとします.これを無効にするには、ナンバーを 0 に変 えて下さい.require_distribution と require_group の行も同様です.
次の行は distribution 行です.ここか spec ファイルのヘッダ中に定義で きます.vender 行も同様ですが、何でもよいです.(例、Joe's Software and Rock Music Emporium)
RPM はまた現在複数のアーキテクチャ上でパッケージを作成する事をサポー トしています.rpmrc ファイルは作成時にアーキテクチャ固有のフラグが求 められるようなパッケージを作成するのに必要な"optflag" 変数を持つ事が できます.
上記のマクロに付け加えて、さらにいくつかあります.
rpm --showrc
とすれば、どのようなタグが設定され、有効な全てのフラグは何かわかりま す.
sepc ファイルについて述べて行きます.spec ファイルはパッケージを作成 するために必要です.spec ファイルは作成の仕方の指示を含むソフトウェ アの説明とインストールされる全てのバイナリファイルのリストです.
標準的な規則に従って spec ファイルの名前を付けたほうがよいでしょう. それは、パッケージ名-ダッシュ-バージョン番号-ダッシュ-リリース番号- ドット-spec とすべきです.
ここに簡単な spec ファイルがあります.(vim-3.0-1.spec) [訳注、vim-3.0-1.spec とありますが、これはeject-1.4-3.spec でしょう.]
Summary: ejects ejectable media and controls auto ejection
Name: eject
Version: 1.4
Release: 3
Copyright: GPL
Group: Utilities/System
Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz
Patch: eject-1.4-make.patch
Patch1: eject-1.4-jaz.patch
%description
This program allows the user to eject media that is autoejecting like
CD-ROMs, Jaz and Zip drives, and floppy drives on SPARC machines.
%prep
%setup
%patch -p1
%patch1 -p1
%build
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
%install
install -s -m 755 -o 0 -g 0 eject /usr/bin/eject
install -m 644 -o 0 -g 0 eject.1 /usr/man/man1
%files
%doc README COPYING ChangeLog
/usr/bin/eject
/usr/man/man1/eject.1
ヘッダは書き込む必要のあるいくつかの標準的なフィールドがあります.またいくつ か注意があります.フィールドは以下のように書き込まなければなりません.
Source0: blah-0.tar.gz
Source1: blah-1.tar.gz
Source2: fooblah.tar.gz
これらのファイルは SOURCES ディレクトリに置きます.(ディレクトリ構
造は後の節 "ソース ディレクトリ ツリー" で扱います.)
Patch0: blah-0.patch
Patch1: blah-1.patch
Patch2: fooblah.patch
これらのファイルは SOURCES ディレクトリに置きます.
Applications
Communications
Editors
Emacs
Engineering
Spreadsheets
Databases
Graphics
Networking
Mail
Math
News
Publishing
TeX
Base
Kernel
Utilities
Archiving
Console
File
System
Terminal
Text
Daemons
Documentation
X11
XFree86
Servers
Applications
Graphics
Networking
Games
Strategy
Video
Amusements
Utilities
Libraries
Window Managers
Libraries
Networking
Admin
Daemons
News
Utilities
Development
Debuggers
Libraries
Libc
Languages
Fortran
Tcl
Building
Version Control
Tools
Shells
Games
これは、spec ファイル中の2番目のセクションです.作成用に準備するソースを得る ために使われます.ここで、パッチの当てられたソースを得るために必要な 事をし make するために必要な準備をします.
注意:各セクションはシェルスクリプトを実際に実行するための場所です.簡単に sh スクリプトを作成し、ソースを解凍しパッチを当てるために %prep タグ の後にそれを置く事ができます.しかしながら、この中には上記の事をを支 援するためのマクロがあります.
それらの最初マクロのは、%setup マクロです.そのもっとも簡単な形は(コ マンドラインのオプションなし)、単にソースを解凍し できたソースディレ クトリの中に cd するだけです.以下のオプションがあります.
このセクションにはマクロはありません.ソースを解凍(untar)し、パッチを当て、 ディレクトリに cd したならここでは単にソフトウェアを作成するために必 要なコマンドを記述して下さい.これは単に sh に渡す他のコマンドの集ま りなので、どんな合法的な sh のコマンド(コメントを含む)でもここで実行 できます.[訳注:これはシェルの組み込みコマンドの事だけをいっている のではありません.]これらのセクションの各々で作業ディレクトリはソー スディレクトリの一番上にリセットされますのでそれを覚えておいて下さい. もし必要ならばサブディレクトリに cd して下さい.
ここにもマクロはありません.基本的にここにインストールに必要なコマン ドなら何でも置けます.作成したパッケージ中で make install が有効なら、 ここに置きます.そうでないのなら、make install の為の makefile への パッチを当て、make install をするか、sh コマンドによって手動でインス トールする事もできます.現在の作業ディレクトリがソースディレクト リのトップレベルである事を考慮して下さい.
バイナリパッケージのインストール / アンインストール を行う前と後に実 行するスクリプトをここに置く事ができます.シェアードライブラリを含む パッケージを インストールもしくはアンインストールした後に ldconfig を実行するような事をするためにこのタグがあります.以下に各々のスクリ プトのためのマクロがあります.
このセクションはバイナリパッケージのためのファイルの一覧を表示しなければなり ません.RPM は make install の結果どのバイナリがインストールされたの か知る方法がないためです.これをする方法はありません! パッケージのイ ンストール前と後に find を実行すればよいのではないかと疑問に思う人も いるかもしれません.マルチユーザーシステムにおいて、パッケージと関係 のないファイルがパッケージを作成している課程の間に作られているかもし れないのでこれは受け入れられません.
同様に特別な事をするために有効なマクロがいくつかあります.以下に説明 します.
ファイル一覧中の最大の注意点はディレクトリの一覧です.もし間違って /usr/bin を一覧に記してしまったら、バイナリパッケージはあなたのシス テムの /usr/bin 中の全てのファイルを含んでしまいます.
まず最初に必要な事は、きちんと設定された作成ディレクトリツリーです. これは /etc/rpmrc ファイルを用いて設定可能です.多くの人々は /usr/src を使うでしょう.
作成ソースディレクトリツリーを作るために以下のディレクトリを作る必要 があるかもしれません.
おそらく最初にしたいことは、RPM を用いずに作成するためのソースツリー を得ることでしょう.これをするために、ソースを解凍し、ディレクトリ名 を $NAME.orig に変更して下さい.そしてもう一度ソースを解凍して下さい. そしてこのソースを作成に使用して下さい.ソースディレクトリに入り作成 するための指示にしたがって下さい.もし何か編集をしなければならないな ら、パッチが必要となります.一度それを作るためにソースディレクトリを きれいにします../configure スクリプトにより生成されたファイルを確認 し削除します.[訳注:要するに、いわゆる make 一発状態にすれば良いと いう事です.] そして、ソースディレクトリの親ディレクトリに cd します. 以下のようにします.
diff -uNr dirname.orig dirname > ../SOURCES/dirname-linux.patch
これは、spec ファイルで使用可能なパッチを作成します.上記の"linux"は 単に識別子であることに注意して下さい.なぜパッチを作成しなければなら ないかを説明するために "config" や "bugs" の様なより説明的なものを使っ てもよいでしょう.間違ってバイナリを含めないように確認するために作成 したパッチを使用する前に調べるのはよい考えです.
作成するためのソースを手にいれ、それをどうやって作成するかわかったな らば、作成しインストールします.インストールの結果の出力から spec ファ イルで用いるためのファイルリストを作成します.私たちは、たいてい全て のステップで並行して spec ファイルを作成しています.最初のファイルリ ストを作成して簡単な部分を書き込み、そして順を追って埋めていきます.
spec ファイルを書き終えたなら、パッケージを作成する準備ができました. もっとも有効な方法は、以下のようなコマンドを使うことです.
rpm -ba foobar-1.0.spec
-b スイッチには以下のような有用なオプションがあります.
-b スィッチには以下のようないくつかの変更子があります.
いったん、ソース及びバイナリの rpm パッケージを作成したら、それをテ ストする必要があります.最も簡単で良い方法は、パッケージを作成したマ シンと全く異なったマシン上でテストする事です.なぜなら、あなたのマシ ン上で何度も make install をしているので、きちんとインストールされる はずだからです.
テストのために rpm -u パッケージ名 とすることもできます、[訳注: おそらくこれは typo で rpm -e でしょう.rpm -u は現在では動作しません. ]しかしパッケージ作成の時に make install を実行しているので間違う 事もあります. もしファイルリストに洩れがあると、アンインストールされません.その時 にはバイナリパッケージを再インストールしてシステムを再び完全なものに します、しかし rpm パッケージはまだ完全ではありません.あなたは、 rpm -ba specファイル名 をしただけだという事をしっかり心に止めておい てください.多くの人々は パッケージをインストールするのに rpm -i パッケージ名 を行うだけです.バイナリがインストールされる時に 必要な事を build セクションや install セクションで何もしていないこと を確認してください.
いったん、あなたが RPM パッケージを作成したなら(すでに何か RPM 化し たと仮定します)、あなたの作成したパッケージで他の人に貢献する事がで きます(作成した RPM パッケージが自由に配布可能なものとします).そう するために、ftp.redhat.com にアップロードしてください. ftp://ftp.redhat.com
新しい RPM パッケージですることとテストに関しては上記のセクションを 見てください.私達は 取得可能な 全ての RPM パッケージを募集していま す.そして、それらが素晴らしい RPM パッケージであることを望んでいま す.作成したパッケージをよく時間をかけてテストしてください.そして、 万人の利益のためにそれをアップロードするために時間をかけてください. 同様に、自由に配布できるソフトウェアのみをアップロードするようにして ください.商用ソフトウェア及びシェアウェアはそれらの著作権がはっきり と自由に配布する事が許される事を言及してない限りアップロードすべきで はありません.これには、Netscape ソフトウェア、ssh、pgp 等が含まれま す.