Open Build System(OBS)で依存関係のソースのリポジトリを指定する

普段、サーバでNAXSIというWeb Application Firewallを使ってるので、せっかくだからディストリビューション開発もくもく会に参加したので、勢いでOBSにリポジトリを作ってみました。 作ったリポジトリがhttps://build.opensuse.org/package/show/home:Manami:nginx-modules/nginx-module-naxsiです。

この際に困ったのが、Nginxのバージョンです。Nginxには公式のリポジトリで提供されている安定版とOBSのServer:httpで提供されている最新版があって、Server:httpではNginxのいろいろなモジュールが公開されていることから、自分は後者を使っています。ところが、普通にSpecファイルでBuildRequiresを書くと安定版のNginxを使用されます。それだと実際にインストールしようとした時にバージョンが違うとコンフリクトを起こすので困ります。そこで、特定のリポジトリから提供されているパッケージを使用してほしいのですが設定にやや戸惑ったので記録しておきます。

まず、リポジトリのページに行き、”Repositories”に移動し、”You can configure individual flags for this package here. The repositories are inherited from the project (Repository Name)”の(Repository Name)のリンクをクリックします。
すると、以下の様に追加したターゲットのRepository pathsが表示されているので、各た0ゲットの”+”ボタンをクリックします。

そこで、リポジトリ名をいれるところがでるので、”server:http”とか”Virtualization”などいれます。Repositoryはターゲットのバージョンに合わせて選びます。

これで、Acceptを押せば、追加されるので、追加されたパスの横にある”↑”ボタンを押して優先度を上げてやれば完了です。

残念ながらプロジェクト毎の調整はできないみたいですが、OBSにはサブプロジェクトというものがあるそうです。(クロスディストロの方々に教えていただきました。)

“Your Home Project”をクリックして、”Overview”の欄にある”Subprojects”をクリックして、右側の”Actions on this page”にある、”Create subproject”をクリックして適宜作ってください。

あと、先にビルドしちゃうとこの変更に伴う再ビルドはされないみたいなのでファイルのアップデートやRelease番号のインクリメントなどで対応してみてください。