- コンパクトで軽量な日本語ディストリビューション -
いよいよ、パッケージ作成の肝となるSPECファイルの記述について説明します。
SPECファイルの内容は、以下の主要部分に分類できます。
パッケージ情報
パッケージの作成やインストール等の手順(スクリプト部)
インストールされるファイルの一覧
パッケージの変更履歴
SPECファイルの文字コードはUTF-8にしてください。
SPECファイルの冒頭にパッケージのバージョンなど頻繁に使用されるものをマクロとして定義しておくと後々の修正が楽になります。
%define macro literal
ようにするとパッケージ作成時に%{macro}と書かれた部分をliteralに置換して処理します。
「標準で定義されているマクロ」も参照して下さい。
rpmコマンドでパッケージに関する問い合わせを実行した場合に表示される情報やパッケージの依存情報などを記述します。
例5.1 パッケージ情報の記述例
以下にパッケージ情報の記述例を示します。(#を記述すると#から行末までがコメントとして扱われます。)
# 基本情報
Summary: hoge is a harehare horehore
Summary(ja): hoge は harehare な horehore です。
Name: hoge
Version: 1.1
Release: 1%{?_dist_release}
License: GPL2
Group: Applications/Internet
URL: http://www.fugahogo.com/hogehoge.html
Vendor: Project Vine
Distribution: Vine Linux
Packager: yourid,otherid
# パッケージの作成時に必要となる情報
Source: %{name}-%{version}.tar.gz
Patch: hoge.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-root
# 依存情報
Requires: piyo
BuildRequires: piyo-devel
# 詳しい解説
%description
Hoge is a harehare horehore and convenient for fugafuga.
Enjoy!
%description -l ja
hoge は harehare な horehore で、fugafuga するときなどとても便利なツー
ルです。みんなでなかよく使いましょう。
# 基本情報
Summary: hoge is a harehare horehore
Summary(ja): hoge は harehare な horehore です。
Name: hoge
Version: 1.1
Release: 1%{?_dist_release}
License: GPL2
Group: Applications/Internet
URL: http://www.fugahogo.com/hogehoge.html
Vendor: Project Vine
Distribution: Vine Linux
Packager: yourid,otherid
# パッケージの作成時に必要となる情報
Source: %{name}-%{version}.tar.gz
Patch: hoge.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-root
# 依存情報
Requires: piyo
BuildRequires: piyo-devel
# 詳しい解説
%description
Hoge is a harehare horehore and convenient for fugafuga.
Enjoy!
%description -l ja
hoge は harehare な horehore で、fugafuga するときなどとても便利なツー
ルです。みんなでなかよく使いましょう。
基本情報から依存情報の部分は、1行につき1つの情報を記述する構成となっています。
各行は「Summary:」のようにタグとそれに続くコロンで始まり、さらにタグに対応する情報が続く形式になっています。
表5.1「基本情報で使用されるタグ」の情報は、rpm -qiなどでパッケージに関して問い合わせを行った場合に表示されます。
表5.1 基本情報で使用されるタグ
| タグ | 内容 |
|---|---|
| Summary | パッケージの簡単な説明を英語で記述します。 |
| Summary(ja) | Summaryを日本語で翻訳します。 |
| Name | パッケージの名前です。定義以降、%{name}というマクロで参照できます。 |
| Version | パッケージのバージョンです。定義以降、%{version}というマクロで参照できます。 |
| Release | 冒頭の数字は同じバージョンで何回目のリリースになるかを意味します。%{?_dist_release}は、vl5の様に対象となるVine Linuxのバージョンに置き換えられます。定義以降、%{release}というマクロで参照できます。 |
| License | アプリケーションのライセンス |
| Group | アプリケーションの種類。付録B Vine Linux で使用できるGroup一覧を参照して下さい。 |
| Packager | パッケージメンテナ。BTS.VineLinux.Orgへのログインユーザ名を使用してください。複数のメンテナがいる場合、カンマで区切ります。 |
| Distribution | VinePlusやVineSeedのパッケージは、Vine Linuxを指定します。 |
| Vendor | 作成したrpmパッケージに関する責任を負うVendor名です。VinePlusやVineSeedのパッケージは、Project Vineを指定します。 |
| Url | アプリケーションの情報を提供しているURL |
表5.2 パッケージ作成時に必要となるタグ
| タグ | 内容 |
|---|---|
| Source | パッケージ化するアプリケーションのソースファイル名。ソースの入手先を明示するためにURL形式で記述することも可能。 |
| Patch | 「パッチの用意」で用意したパッチファイルを指定します。 書式はSourceと同じです。 |
| BuildRoot | 仮想インストールのためのディレクトリ名を書きます。直接ディレクトリ名を書くのではなく、例のようにマクロを利用してください。 |
複数のソースファイルやパッチがあるときはSource0、Source1、...やPatch0、Patch1、...というふうに番号をふって列挙します。(Source0は、Sourceと省略できます。)
Souce数字 で指定したファイルは %{SOURCE数字} というマクロとして 「スクリプト部」の %prep や %install などの部分で利用できます。
パッケージの依存情報など他のパッケージとの関係を示すには、表5.3「パッケージの依存関係を扱うタグ」のようなタグを使用します。
表5.3 パッケージの依存関係を扱うタグ
| タグ | 内容 |
|---|---|
| Requires | 作成しているrpmパッケージが動作するのに必要なパッケージ名 |
| BuildRequires | パッケージの作成時に必要となるパッケージ名 |
| Conflicts | 共存できないパッケージ名 |
| Provides | 作成するパッケージが他のパッケージの代替となる場合、そのパッケージ名を記述 |
| Obsoletes | パッケージをインストールする際にアンインストールしたいパッケージ名 |
| BuildConflicts | パッケージ作成時にはインストールしておけないパッケージ名 |
<, >, =, >=, <=といった演算子を使うとパッケージのバージョン、リリース番号を限定することもできます。
演算子の両側にスペースやタブを入れない場合、パッケージ名からバージョンまでが一つのパッケージ名として認識されてしまいます
例えば、
BuildRequires: gtk2-devel>=2.16.0
とすると「gtk2-devel>=2.16.0」というパッケージ名だと認識してしまいます。
複数のパッケージが関係する場合は、カンマ(,)やスペースで区切って列挙したり、複数行に分けて記述できます。複数行に分ける場合は、各行にタグが必要です。
パッケージがいくつかのグループに分類できる場合には、複数行に書いた方がわかりやすくなります。
例5.5 複数行に分けて記述する例
Requires: ghostscript >= 5.10, ghostscript-fonts, VFlib = 2.24 Requires: tetex, tetex-extra