EPEL/GuidelinesAndPolicies/ja

From FedoraProject

Jump to: navigation, search

Contents

EPEL 向けのパッケージングガイドラインとポリシー

EPEL におけるパッケージングは Fedora のパッケージングとメンテナンスガイドラインに従います。 FESCoパッケージング委員会によってメンテナンスされたパッケージングガイドラインパッケージ名ガイドラインパッケージレビューガイドライン、そしてパッケージングポリシーになりますが、それらに制限されたものではありません。次のような EPEL に特化した例外事項もあります。

"ガイドライン" と "ポリシー" のセクションはわざとそのような名前を使用していることに注意してください。ガイドラインは通常守るべき内容と考えてください。しかし、そうしない理由が何かあるなら守る必要はありません。その理由が適切かどうか疑問に思ったら EPEL SIG メンバーへ尋ねてください。"ポリシー"という言葉には強い意味があります。そのセクションに記載された内容は必ず守らなければならないルールと考えてください。

パッケージメンテナンスと更新ポリシー

EPEL は我々のリポジトリのユーザに対して共通の "見た目" を提供したいです。そのため EPEL SIG は EPEL におけるパッケージメンテナンスと更新のための規定を定めたポリシーを作成しました。そのポリシーは現在の Fedora の規定よりも少しだけ厳しい内容になります。

ダイジェスト

その目的はエンタープライズ Linux ディストリビューションを拡張するパッケージを EPEL に持つことです。つまり、そのディストリビューションから提供されている元のパッケージを置き換えるか、提供されていないパッケージに対してビルドしたものを提供することです。リポジトリにあるパッケージは、可能なら、エンタープライズ Linux ディストリビューション向けにビルドされたエンタープライズなパッケージと似たような方法でメンテナンスされるべきです。言い換えると、何か理由があればその部分のみを変更し、通常は何も変更しないパッケージの安定版セットを多く持つことです。"やあ、新しいバージョンがあるからビルドしたよ、それを提供しようよ"といった考え方ではありません。


ポリシー

EPEL パッケージは機能拡張のみを目的にするもので、決してエンタープライズ Linux ディストリビューションのためにビルドされたパッケージの品質を悪くするものではありません。つまり EPEL パッケージは、ベースディストリビューションやその派生プロダクトを含めた対象ディストリビューションで提供されているパッケージを置き換えることは決してしません。例えば、カーネルモジュールの追加は、ちょっとしたことでベースカーネルの動作に影響することがあるので認められません。

リポジトリにあるパッケージは、可能ならば、エンタープライズディストリビューション向けにビルドされたパッケージとよく似た方法でメンテナンスすべきです。言い換えれば、ほとんどの安定版パッケージは通常は決して変更せず、変更をするのに適切な理由がある場合のみ変更します。これは安定したエンタープライズ環境を提供するための基本的な考えです。

行わなければならない変更は異なるリリースツリーの中に入れます。重要なバグ(データ汚染、セキュリティの問題、本当に悩ましいバグ)を修正するアップデートのみ、短期間、テストブランチに置かれた後に安定版ブランチへ追加されます。パッケージに署名をして、EPEL パッケージを公開 repo へ追加する担当者は、"安定版ブランチのための重要なアップデートのみ" という目的が実行されていることを確認するために、安定版 repo のための更新パッケージリストに目を通します。

その他のアップデートは徐々にテストリポジトリへ追加されます。テストリポジトリは少なくとも2週間テストされた後に新たな安定版ブランチになります。しかし、これらのアップデートはできるだけ修正のみに制限されるべきです。もしできれば、事前に Fedora でテストすべきです。ABI を変更する、又は設定ファイルの変更が必要なアップデートパッケージはできるだけ避ける必要があります。もし ABI を変更する以外にパッケージをアップデートする方法がないなら、旧 ABI を提供する Compat パッケージをリポジトリで提供する必要があります。テスト repo にあるパッケージは依存関係の問題やメンテナが安定していると感じていない箇所があり、安定版リポジトリへの追加を控えています。メンテナは、2週間後又はアップデートパッケージに十分なカルマを体得した後、安定版リポジトリへ追加するためにリクエストする必要があることを覚えておいてください。テストリポジトリから安定版リポジトリへ自動的に追加するようなことはありません。

3ヶ月ごとの新しいアップデートがリリースされる場合、EPEL はそのアップデートが利用可能になる CentOS のバージョンがリリースされるまで待つでしょう。

ワークフローの例 / 情報

このポリシーのガイドラインと背景

パッケージを更新して良いかどうかの例

上述したポリシーを実際に適用する方法の大まかな概要を把握するのに役立つことを願って複数の例を紹介します。

マイナーバージョンアップ

EPEL 5.0 でパッケージ foo がバージョン 1.0.1 として提供されたと仮定します。アップストリームの開発者は、現在 1.0.2 を提供しています。

マイナーバージョンアップよりは少しだけ大きな修正

EPEL 5.0 でパッケージ foo がバージョン 1.0.1 として提供されたと仮定します。アップストリームの開発者は、現在 1.2.0 を提供しています。ABI は 1.0.1 と互換性があり、既存の設定ファイルはそのまま動作します。

マイナーバージョンアップより少しだけ大きな修正のさらなる別の修正

EPEL 5.0 でパッケージ foo がバージョン 1.0.1 として提供されたと仮定します。アップストリームの開発者は、現在 1.4.0 を提供しています。ABI は 1.0.1 と互換性がありますが、設定ファイルは手動で調整する必要があります。

メジャーバージョンアップ

EPEL 5.0 でパッケージ foo がバージョン 1.0.1 として提供されたと仮定します。アップストリームの開発者は、現在 2.0.0 を提供しています。ABI が変更されるか、設定ファイルは手動で調整する必要があります。

セキュリティアップデート

セキュリティアップデートはそれ自体は bodhi と見なされるべきで、安定版リポジトリへ追加されるでしょう。このために、様々な修正内容の中からできるだけ少ない修正でアップデートパッケージを作成するようにすべきです。バックポートされた修正のみ、又はあなたが必須だと思うものを適用するか、その修正のみを提供する新バージョンを提供してください。セキュリティアップデートと他の修正を一緒に追加しないようにやってみてください。

パッケージに関する多くのドキュメントを追加する

もし多くのパッケージに関するドキュメントを追加するなら、分割されたドキュメント内へ追加するようにしてください。

EPEL 向けにパッケージを提供して良いかどうか自信がない

EPEL 開発者メーリングリストか、freenode.org の #epel チャンネルで尋ねてみて EPEL SIG メンバーから意見をもらうようにしてください。

Fedora Extras で行っていたように最新パッケージでリリースを行わないのはなぜですか?

どうして我々なのですか?Fedora Extras で行われていたことや活動したこと、うまく活動していることもあります。しかし、主には Fedora (Core) があまりにも早い前倒しのリリーススキーム/サイクルのために、多くのアップデートパッケージを持つことになってしまいます。我々がビルドしたエンタープライズ Linux はより長期間のライフサイクルで、もっと慎重なアップデートパッケージを提供します。つまり、EPEL 向けのパッケージもエンタープライズ Linux と同様にすべきです。大半のユーザは、彼らが何らかの理由があって安定したディストリビューションを選択したように、Fedora Extras のような方法よりも EPEL のような慎重なアップデートパッケージを提供する方法をおそらくは好みます。もし最新のパッケージを欲しいなら、Fedora を選択しているでしょう。

もちろん、求められたパッケージに加えて、かなり新しいパッケージのセットと安定したベースとなるパッケージを混在させて提供できる部分も多くあります。*たぶん* EPEL プロジェクトは長期間、それらの問題に対する解決方法(並行して慎重にリポジトリを更新しながら)を提供するでしょう。しかし、それを始めることはしません。既にこの方向性で何らかのパッケージを提供するサードパーティのリポジトリがあります。そのため、もうユーザはそういったリポジトリからパッケージを取得しているでしょう。

もっと突っ込むと、Fedora Extras が行ったような前倒しのリリーススキームは別の理由で多くの EPEL パッケージャにとっては難しいです。新しいパッケージはよくコアライブラリの特定のバージョンを要求します。これは EPEL において問題を引き起こします。それは OS のコアになるライブラリ群を置き換えるようなアップデートライブラリを提供することができないからです。

例として、このドキュメントは RHEL5 がリリースされたときに書かれました。RHEL5 向けにビルドされた多くのパッケージは、この時点で既に RHEL4 向けにはビルドできませんでした。例えば、RHEL4-gtk2 は2年前のもので、多くのカレントのアプリケーションでは古く、依存するパッケージは新しい gtk2 を必要とします。そのため、たとえかなり新しいパッケージを前倒しのスキームで提供しようとしても我々は失敗するでしょう。例えば、ライブラリの依存関係のためにビルドできなかったりします。結果的にリポジトリにはかなり新しいパッケージと大半のかなり古いパッケージが残ります。そういったパッケージを混在させることは "最新パッケージ" か "慎重なアップデートパッケージのみ" かのどちらか一方しか幸せにしないでしょう。そのため、我々は目的を "慎重なアップデートパッケージのみ" に絞り込んでいます。EPEL のサポートとアップデートサイクルは Fedora のライフサイクルよりもずっと長期に渡ることを覚えておいてください。

EPEL から Fedora パッケージを取得する

EPEL にある Fedora パッケージを取得する手続きをご覧ください。

ディストリビューションに特化したガイドライン

EL5 やそれよりも前のディストリビューションでは noarch サブパッケージをサポートしません。noarch パッケージの debuginfo ファイルをパッケージングできないことでビルドに失敗するなら、EL5 やそれよりも前のディストリビューション上で使用されない noarch パッケージに関して BuildArch: noarch がラップされます。

エンタープライズ Linux 4

エンタープライズ Linux 5

BuildRoot タグ

EPEL5 やそれ以下の rpm は自動的に BuildRoot タグ設定を提供しません。そのため、パッケージャによって spec ファイルの中で設定しなければなりません。

BuildRoot には次の %{_tmppath}/ を設定しなければなりません。そして少なくとも %{name}%{version}%{release} を含まなければなりません。これは全てのシステム上で存在することが保証されているので mktemp を実行するかもしれません。そこから、パッケージャは1つの健全な BuildRoot を使用することを期待します。

BuildRoot タグのための 推奨設定 は次の通りです(優先される設定の降順に記載します)。

%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%{_tmppath}/%{name}-%{version}-%{release}-root

よく分からなければ、1番上のものを選択してください。

 %install のために BuildRoot を設ける

あなたのパッケージの %install セクションの中で適切な BuildRoot を準備することは重要です。それは EPEL5 やそれ以下の rpm はこの設定を自動的に行わないからです。これらのリリース向けのパッケージは、いずれにせよ %install セクションを持たなければなりません。

%install
rm -rf %{buildroot}

又は

%install
rm -rf $RPM_BUILD_ROOT

これは %install セクションで BuildRoot が作り直されることを保証します。

競合するパッケージに対するポリシー

EPEL に既に存在するパッケージが RHEL へ追加される場合、我々はそのパッケージが EPEL からアップデートされるのをブロックする必要があります。この手順は次の通りです。