[Momonga-devel.ja:01053] Re: mph


あかがきです。

kazさんから個人的に指摘をうけて気づいたのですが..

0.90.0 では、今までの mph で行っていた
Require と Provide の対で解決できない依存関係、
たとえば 

/bin/awk を libgcj-devel が Require している。
/bin/awk を Provide するパッケージは存在しない。という場合
local の rpmdb を調べて gawk のファイルリストに /bin/awk が存在する。
だから、更新後の gawk パッケージも/bin/awk を持ってるにちがいない。
と推定する。

という処理を行っていません。

よって mph 0.90.0 で gawk と libgcj-devel を同時にインストールしよう
としたときに、処理できなくなるはずです。

この問題の解決策として、

1. gawk が Provide: /bin/awk する。
2. libgcj の Require: /bin/awk を消して Require: gawk にする。
3. mph データベースにファイルリストをもたせる。
4. 0.14 と同じ推定処理を 0.90 にも持たせる。

程度が考えられます。
#実は、多分、rpm が #!/bin/awk を拾ってると思われるので
#(2)はハナから不可っぽいですが。

(1),(2) は問題のある spec の書き換えが必要になります。
(3)は mph-scanpackages に 1,2行ほど足してやるだけで簡単に
   実現できますが、当然ファイルサイズが多きくなります。
(4)は、ある意味反則ですし、gawk が/bin/awk を持たなくなったら
   おしまいなのであまりやりたくないです。

結局、一番美しい解決策としては (3) だと思いますが、dbのサイズは
-rw-rw-r--    1 dora     dora      1082154 Dec 10 01:10 i586.mph
-rw-rw-r--    1 dora     dora      1054941 Dec 10 01:10 i586.mphrpm
-rw-rw-r--    1 dora     dora       163870 Dec 10 01:10 noarch.mph
-rw-rw-r--    1 dora     dora       300862 Dec 10 01:10 noarch.mphrpm
と、バイナリの場合は 0.14の頃とほぼ同じサイズまで、 noarch の場合は
逆転するまで肥大化します。

で私としては、このように他のパッケージから Require される
可能性のあるファイルやディレクトリは、提供する側のパッケージで
明示的に Provide する。
というルールをつくりたいのですが、いかがでしょうか。

ご意見おまちしています。