Prev / Next

2013-05-29 / pkgbuild での version 指定

自分でビルドしたパッケージ(以下 pkg-A)が新しすぎたので、
古いバージョンに下げたところ、それに依存するパッケージ(以下 pkg-B)によって
version が古いことを理由に reject されインストールできなかった。

http://pkgbuild.sourceforge.net/spec-files.txt の Requires の項目を見ると

When creating IPS packages, by default, pkgbuild automatically
adds a minimum version specification to all dependencies. The
minimum version used is the version of the package currently
installed on the system.

ということで、ビルドしているホスト上にインストールされているバージョンが
minimum version として指定されるらしい。

'>=' で minimun バージョンを指定するか、
'= *' で "any version" と指定をしたほうがよさげ
と思い、指定して rebuild したが、
やっぱり reject される。

ビルド環境にインストールしている pkg-B のバージョンに依存しているようなので、
ビルド環境から pkg-B をアンインストールする。

で、rebuild するが、これでも reject。

pkg-A をビルドした時の pkgbuild のログを眺めると、
pkg-B がローカルにインストールされていない場合、
publisher に見にいっているっぽい。

ということで、pkg-B を pkgrepo remove で publisher から消して
pkg-A を rebuild。

これでインストールできた。

また、Requires なパッケージが
- ローカルにインストールされていない
- publisher にない
場合、生成したパッケージに該当する Requires は適用されないので注意。

必要なパッケージ pkg-A を作って、それから依存するパッケージ pkg-B を作る場合は、
パッケージ pkg-B を作った後にパッケージ pkg-A を rebuild すること。

comments powered by Disqus