[パッケージングに関する指針(改定中)]
VineSeed, VinePlus のパッケージングの際は原則として以下の指針にしたがっ
てくださるようお願い致します。バージョン番号等をこれまでと変更する必要
のある物件は、バージョンアップ等の際にアップグレードに支障の無いよう考
慮しつつ順次新しい指針にしたがっていただけるようよろしくお願い致します。
~/.rpmmacros について
~/.rpmmacros には以下を記述しておください。
%vendor Project Vine
%distribution Vine Linux
%packager Your Name
パッケージ署名
VineSeed および VinePlus/3.0 以降では、原則として GnuPG による署名を
行っていただきます。GnuPG 鍵の作成方法は web などを参照してください。
まず以下の記述を ~/.rpmmacros に追加してどの鍵を利用するか指定しておき
ましょう。
%_signature gpg
%_gpg_name KEYID
ここで GnuPG により署名を行う場合は、rpm の作成時に
rpm -ba --sign hoge.spec
などと指定するか、rpm を作成した後に以下の操作でパッケージに署名を追加す
ることができます。この場合はソースとバイナリ双方に署名してください。
rpm --addsign hoge.rpm
また以下のような記述を ~/.popt に追加することで、rpm 作成時に自動的に署名
を行うことができます。
rpm exec --ba rpmb -ba --sign
rpm exec --bb rpmb -bb --sign
rpm exec --bs rpmb -bs --sign
rpm exec --ta rpmb -ta --sign
rpm exec --rebuild rpmb --rebuild --sign
rpmbuild alias --rebuild --rebuild --sign
[spec ファイルの名前]
原則として、パッケージ名.spec または
パッケージ名-vl.specとする(バージョンとかは入れない)。
ただし、この名称でメンテナンス上問題がある場合(複数のバージョンのメン
テをしてる等)は、メンテナにまかせる。
[バージョン番号]
- ソースのバージョン番号
これまで (バージョン番号)_jp などとあった _jp は廃止
[リリース番号]
[Epoch]
- 原則として Epoch は使用しない。
- バージョンがもどることにならないような設定を心がける。
- どうしても利用が必要と考えられる場合はメーリングリストにおいて提案を行ってください。
[グループ名]
- 原則として /usr/share/doc/rpm-*/GROUPS 参照のこと
[Vendor,Distributor,Packager]
VinePlus も VineSeed も以下に統一してください。
Vendor: Project Vine
Distribution: Vine Linux
Packager: hoge fuga <hoge@fuga.org>
Vine Linux オフィシャルリポジトリへ収録するもの以外(たとえばwebで
独自に公開しているものなど)の場合は Vendor/Distribution に Vine の
名称は使わないでください。
- VinePlus の場合
Packager: 最初の作成者 あるいは 最終更新者
- VineSeed
Packager: 主メンテナ あるいは 最終更新者
[カテゴリ]
カテゴリ(main,plus,extras)がすでに付けられている場合は、アップロード
後に自動的にそのカテゴリに収録されます。カテゴリが設定されていない場合
は標準ではextrasへ収録されます。
以下の場合はアップロード前にカテゴリ変更を提案してください
- 現在 extras だが今後継続的なメンテナンスを行う場合
- サブパッケージが追加される場合
- plus のパッケージを更新する際、新たに extras のライブラリ等に依存が発生する場合
Vine Linux 3.1 では extras カテゴリは標準では apt により参照されなません。また、
main/plus のパッケージが extras カテゴリに依存することがないようにしてください
。
カテゴリリスト
[重要な変更]
- 以下の場合においてはパッケージの更新(アップロード)の前にメーリング
リストに提案を行って下さい。
- [カテゴリリスト]に
おける core パッケージのメジャーバージョン、依存関係等を変更する場合
- 他のパッケージに影響のある変更を行う場合
(ライブラリのバージョンがかわる場合など)
- パッケージ名が変わる場合
- メジャーバージョンを変更する場合
- 既存のパッケージ(自分が主にメンテナンスを行っていないもの)をObsoleteする場合
- 仕様が変更になり互換性がそこなわれる場合
- 依存情報に大きな変更がある場合
- 自分が主メンテナではない場合
- その他、必要と思われる場合
[依存関係]
- 必要な PreReq, Requires, BuildRequires, Conflicts, Obsoletes を入れる
- 共存できるパッケージに対する Conflicts, Obsoletes は設定しない
- 低いレベルのカテゴリへの依存は行わない。
(例: main のパッケージが plus のライブラリに依存するなど)
- 動作に必ずしも必要でないパッケージへの依存はしない
- 一部の機能/バイナリを分離することで本体への依存関係を減らせる場合は、
サブパッケージに分離することが望ましい。ただし、全体の動作に支障がある
場合はこの限りでない。
- 構築時に自動的に追加される共有ライブラリに対する依存は記述しなくても良い
-
[その他]
specファイルの雛型
新規にパッケージを作成する場合、必要であれば以下の雛型を利用してください。