openSUSE:Factory への貢献方法

移動先: 案内, 検索


この記事では、貢献者という観点での openSUSE Factory に対する概要を説明しています。ここにはたとえば、考え方や実行すべきコマンド、話し合っておくべき人々などが書かれています。この記事はあくまでも開始点を説明したものであり、ブログらミンク言語やコンパイラ、 パッケージングOpen Build Service などの詳細な説明を書き換えるものではありません。下記では、これらの内容について既に知っていることを前提にしています。この記事を大まかに略すと、要は Factory への貢献は 簡単で かつ いつでも歓迎 、ということです。
他の開発者との連絡やコメント欄への記入など、すべてのやり取りは英語で行ないます。もちろん全員が英語ネイティブというわけではありませんので、翻訳サービスなどを利用して英語に翻訳のうえ、作業を行なってください。よくわからない場合は、日本語の メーリングリストやフォーラムなど で質問してみてください。

パッケージに対する修正の送信方法

Factory に対して、もっとも簡単で便利な貢献方法は、修正を送信することです。なぜパッケージが 構築できないのか 、なぜ うまく動作しないのか について、解決方法をご存じであれば、ぜひとも修正をお送りください。また、パッケージのバージョンが 古い ような場合は、ぜひとも新しいバージョンをお送りください。 Factory に対する貢献を 誰にでも できるようにするため、 openSUSE の開発者は Open Build Service の対話機能を大きく進化させています。これにより、誰にでも openSUSE:Factory のパッケージをコピーして修正を行ない、その内容を送信できるようになっています。それはまるで、スーパーマーケットのレジを通すかのように簡単に行なうことができます。まずは下記のように osc を実行して、パッケージを複製します:

osc branch -m 'Fix XY' openSUSE:Factory aaa_base


上記を実行することで、 devel (開発) プロジェクト 内のパッケージに対する正確なコピーを、あなたのホームプロジェクト内に保存することができます。あとはこれをローカルマシンにチェックアウトして、必要な変更を実施してください:

osc checkout home:yourname:branches:Base:System/aaa_base


修正すべき内容を反映し、構築や動作に問題がないことを確認したら、まず複製先に変更内容を送信します:

osc checkin -m 'Added fix XY for problem Z'


あとは下記のように実行して、パッケージの開発者にレビューを依頼します:

osc submitrequest -m 'Added fix XY for problem Z'


上記を実行すると、パッケージの開発者に対してその旨が通知され、レビューが行なわれます。このような流れを、我々は BURP と呼んでいます。 .

  • Branch (複製して)
  • Update (更新したあと)、
  • Request (要求を行なって)
  • the Package (パッケージ化する)

Factory に新しいパッケージを追加する方法

今までパッケージを作成したことがない場合は、 OBS にパッケージを送信する前に、 このチュートリアル などをお読みください。

何よりも先に、パッケージを送信するには devel (開発プロジェクト) が必要です。 devel (開発) プロジェクトはトップレベルの (1 階層目に表示される) プロジェクトであり、かつ home: 以下のプロジェクトではないものでなければなりません。まずは既存の devel (開発) プロジェクトを参照し、もっとも適切であると思われるリポジトリを見つけて、そこのメンテナにパッケージを送信したい旨をお伝えください。単にパッケージを devel プロジェクトに送信するだけでもかまいません。

osc submitrequest -m 'I want to maintain python-cerealizer in Factory and would like to use devel:languages:python as the devel project.' home:yourname/python-cerealizer devel:languages:python


現時点での devel プロジェクトの一覧は、 このページ 内の冒頭にあるドロップダウンリストから参照することができます。すべてのプロジェクトを参照したい場合は、 こちら から参照することができます。適切なプロジェクトが見つからない場合は、包括的なプロジェクトである devel:openSUSE:Factory をお使いください。また、全く新しい種類のパッケージを複数お持ちの場合は、独自の devel プロジェクト を作成することもできます。この場合は、新しい devel プロジェクトFactory メーリングリスト に申し込む必要があります。すると、 Open Build Service のメンテナから、次にやるべきことを教えてもらうことができます。

devel プロジェクト が見つかったら、パッケージを openSUSE:Factory に submit-request してください。 submit-request には、対象となるパッケージに対する注記を記述しなければなりません。また、できれば opensuse-factory メーリングリストでパッケージを紹介し、 submitrequest にその旨を記述しておくとよいでしょう。下記の例では、アップストリーム (ソフトウエアの提供元) プロジェクトとそこでのメンテナンス状況、およびディストリビューションに取り込んだ場合の利点などを説明しています。

osc submitrequest -m 'New package see http://lists.opensuse.org/opensuse-factory/2011-05/msg00018.html ' devel:languages:python/python-cerealizer openSUSE:Factory


Factory 内のパッケージメンテナになる方法

既存のパッケージに対して支援を行なったり、責任を引き継ぎたい場合は、その時点での開発者に対して連絡をとってください。なお、 Factory メンテナの責任と権利 についてもご注意ください。

現在のメンテナを知りたい場合は、 build.opensuse.org にアクセスするか、下記のコマンドを実行してください:

osc maintainer openSUSE:Factory aaa_base


なお、多くのプロジェクトでは、メンテナをメールアドレスではなく名前で記しています。それぞれ "@opensuse.org", "@suse.com", "@suse.de" を付加してメールアドレスを判断してください。

現在のメンテナに連絡を取る以外の方法には、下記のようなものがあります:

  • osc requestmaintainership openSUSE:Factory aaa_base
  • build.opensuse.org を開いてログインし、パッケージを検索して対象のパッケージに対して "Request role addition" (役割の追加要求) を行なう方法

devel (開発) プロジェクト内のパッケージに対して修正を統合する方法

Open Build Service では、電子メールで新しい要求 (リクエスト) を通知します。既存の要求を検索するには、下記のように実行してください:

osc request -s new


変更点の受け入れは、要求の受け入れと同様にシンプルな方法で行なうことができます。もちろん、あらかじめ変更点を確認しておく必要があります。

osc request show -d 12345


確認作業が終わったら、下記のコマンドで受け入れることができます。

osc request accept 12345


openSUSE:Factory に対するパッケージ送信

devel プロジェクト でのパッケージ構築に問題が無ければ、あとはパッケージを openSUSE:Factory に送信するだけです。

osc submitrequest devel:languages:python/python-cerealizer openSUSE:Factory


リリース済み製品に対してパッケージを送信する方法

既にリリースされているディストリビューション (たとえば openSUSE 13.1) に対して修正を行ないたい場合は、これらに加えて追加の手順を踏む必要があります。詳しくは パッケージメンテナンス のガイドラインをお読みください。

パッケージを削除する方法

Process-stop.png
警告!
あなたがパッケージのメンテナでない場合は、下記に示す手順を実施する前に、まずはパッケージのメンテナに対して連絡を取ってください。
パッケージを削除する前に、まずは openSUSE:Factory に対する 削除ポリシー をお読みください。

ここでは、 devel プロジェクトdevel:openSUSE:Factory である oldstuff というパッケージを、 Factory から削除する場合を想定します。まずは Factory 内で、 oldstuff に依存しているパッケージがないかどうかを調べます。

osc whatdependson openSUSE:Factory/oldstuff standard i586


何らかのパッケージが oldstuff に依存している場合は、下記のいずれかの手段で解決を図ります:

  1. 削除をあきらめて oldstuff の維持を続ける
  2. 依存しているパッケージを先に削除する
  3. これらのパッケージを oldstuff に依存しないように変更する

上記の問題が解決できたら、あとは openSUSE:Factory 内で oldstuff に対する削除要求を送信します。削除要求には、削除に至った理由を記述します。

osc deleterequest -m "Dropping oldstuff because XXX" openSUSE:Factory oldstuff


パッケージが Factory から削除されても、 devel プロジェクトからは自動的に削除されることはありません。それは Factory の管理外でもパッケージを使用し続けることができるためで、 devel プロジェクトからの削除は別途の理由で発生するものであるためです。要件に応じて devel プロジェクトからも手作業で削除してください。

osc deleterequest -m "Dropping oldstuff because XXX" devel:openSUSE:Factory oldstuff


openSUSE:Factory からパッケージが削除されると、その時点での最終バージョンが openSUSE:Dropped プロジェクト内に作成され、必要であれば将来の復元に備えることができるようになっています。

削除済みパッケージを復元する方法

openSUSE:Dropped に移動されたパッケージを復元する作業になります。 Factory にパッケージを追加する方法と同じ手順で実施してください。