openSUSE:パッケージメンテナンス
警告!
|
openSUSE Build Service では、すべてのパッケージが完全に公開されます。そのため、公開が規制されているようなセキュリティ更新については、 Build Service をお使いいただくことができません。公開が規制されているような更新については、規制が解除されてから修正を適用してください。 |
目次
作業対象のパッケージを探す
Build Service には様々なバージョンのパッケージが提供されています。公式のリリースだけでなく、ユーザによって現在開発中のパッケージなども、ホームプロジェクト内に存在しています。メンテナンス対象のパッケージを簡単に見つけたい場合は、 osc maintained コマンドをお使いください。たとえば下記の例では、 nfs-utils パッケージを検索しています:
$ osc maintained nfs-utils
openSUSE:13.1:Update/nfs-utils
openSUSE:13.2:Update/nfs-utils
openSUSE:Leap:42.1:Update/nfs-utils
ブランチを作成する
Build Service では、オリジナルのパッケージを不用意に変更したりせずに、作業を行なう方法が用意されています。ユーザ側で、ホームプロジェクト内にパッケージの独自版を作成して対応してください。この独自版は、オリジナルのパッケージに対する差分として記録されるようになっているため、修正が完了した独自版をオリジナルに戻す場合も、その差分を簡単に適用することができます。
1 つのプロジェクトから 1 つのパッケージをブランチ (分岐) させたい場合は、下記のように実行します:
$ osc branch -M -c openSUSE:13.1 nfs-utils [...]
なお、 nfs-utils に対する更新がすでに公開されているような場合は、更新済みのソースコードは異なるプロジェクト (例えば openSUSE:12.1:Update など) 内に存在していることに注意してください。プロジェクトだけ指定すれば、それ以上に詳しく指定する必要はありません。 osc が正しく処理を行なって、必要な更新済みソースコードを取得します。そのため、この手順に従う以上の要件はなく、これだけでパッケージのブランチ処理が完了します。
既に対象のパッケージに対するブランチを作成済みの場合は、いったん削除してから再作成してください。ブランチ元は独自に更新され続けるものであることから、そのまま利用してしまうと古いものに対する作業を実施していることになってしまうため、 submit-request (送信要求) なども受け付けられなくなってしまいます。なお、ブランチを削除してしまうことで、それまでに何らかの変更を行なっていた場合は、その変更が消えてしまうことにも注意してください。
ブランチは、作成した時点での状態を維持します。そのため、誰かがその間に変更点をコミットしてしまうと、既存のブランチのままではそれらは失われてしまいます。ブランチの削除はパッケージの削除と同じで、 osc rdelete プロジェクト パッケージ のようにコマンドを実行してください。たとえばこの例では、 osc rdelete home:jeff_mahoney:branches:openSUSE:12.1:Update:Test nfs-utils のように実行します。
すべてのコードストリームに対して一括でブランチを作成する
たとえばセキュリティ更新など、メンテナンス対象のコードストリームに対するパッケージを一括で更新する必要が発生したりすることができます。上述のような方法では、たとえば 11.4 と 12.1 の両方に対して作業を行ないたいような場合は、ブランチを作成してパッケージをチェックアウトするのを 2 回繰り返さなければなりません。
このようなことを一括で行ないたい場合は、 osc mbranch コマンドをお使いください。このコマンドは Build Service に対して問い合わせを行ない、メンテナンス対象として設定されているプロジェクトの一覧を取得することができます。
警告!
|
このコマンドは、 Build Service 側が正しく設定されていることを前提にしたコマンドです。 osc mbranch で表示された一覧が正しくないとお考えの場合は、メンテナンスチーム宛にお問い合わせください。 |
osc mbranch collects all copies of the package from all projects flagged for maintenance and creates branches of those packages in one project:
$ osc mbranch nfs-utils Project home:jeff_mahoney:branches:OBS_Maintained:nfs-utils created.
$ osc co home:jeff_mahoney:branches:OBS_Maintained:nfs-utils A home:jeff_mahoney:branches:OBS_Maintained:nfs-utils A home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_13.1 [...] A home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_13.2 [...] A home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_Leap_42.1
警告!
|
パッケージ内に複数の spec ファイルが存在する場合は、すべての spec ファイルに対してパッケージが作成されていることを確認するため、 osc ls home:ユーザ名:branches:OBS_Maintained:パッケージ名 を実行してください。 |
メンテナンス対象のコピーの一覧を手作業で取得する
何か問題があれば、メンテナンスチームに問い合わせて一覧を取得してください。
変更を実施する
ここまでの作業で、パッケージの独自コピーを作成することができています。あとはパッケージに対して必要な変更を実施してください。ファイル一覧を更新する必要がある場合は、不要な一時ファイルなどをパッケージのディレクトリから削除したあと、 osc addremove コマンドを実行するとよいでしょう。
また、新しい修正を追加した場合は、その修正が 修正タグのガイドライン に従っているかどうかもご確認ください。
必要な変更作業を終えたら、 osc vc コマンドで .changes ファイルに項目を追加します。
- 1 行に 1 つずつ、問題点を簡潔に説明してください。
- (bnc#12345) のような形式で、バグ番号を示してください (メンテナンス更新の場合は必須です) 。
- セキュリティ更新の場合は、可能であれば CVE の番号も記述してください。
あとは osc commit コマンドで、ブランチをコミットすれば完了です。
詳しくは changes ファイルの作成 もお読みください。
変更点を送信する
作成したブランチは、この時点ではまだ孤立した存在であり、ホームプロジェクト内で独自にビルドされているだけの状況です。ビルドシステムの強固な制約下で構築を行ない、適切にテストをしておくことが重要です。テストが完了したら、残りの送信作業はシンプルです。
チェックアウトしたディレクトリにいる状況では、下記のように実行します:
$ osc mr created request id 22864
リモートのプロジェクト内にある全パッケージを対象とする場合は、下記のように実行します:
$ osc mr $prj created request id 22864
リモートのプロジェクト内にある特定のパッケージを対象とする場合は、下記のように実行します:
$ osc mr $prj $pkg $target #($target は openSUSE:13.2:Update などを指定します) created request id 22864
osc は送信要求に対するメッセージ入力を求めるようになります。通常は .changes ファイルに記録した内容と同じ内容を入力します。
上記がうまく動作しない場合は、チェックアウトしたパッケージのディレクトリから下記のように実行します:
$ osc sr WARNING: WARNING: Project does not accept submit request, request to open a NEW maintenance incident instead WARNING: created request id Request: #180441