[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: PocketBSD packages
itojun wrote:
> - pkg_add hoge-1.0.tar.gz core dev
> とかやるとcoreとdevだけ入れる、または
> pkg_add hoge-1.0.tar.gz -man
> とやるとmanだけ除外
> - databaseにはhoge-1.0を登録する
> (+CONTENTSは実際インストールされたファイル分だけ)
> - 「後からmanpageだけいれたい」とかいうのは複雑になるだけなので無視。
> pkg_deleteしてからpkg_addすればよい
> くらいでいいのでは?
私が実装することまで考えるとまさに↑この程度が良さそうです。
参照カウントとかはやっぱりナシ。ナシ。
サブセットには必ず指定できる決まったものがいくつか必要だと
思います。たとえば core, ext, dev, sample, man, doc とか。
これらはどのパッケージに指定しても似たような結果が得られる
ように意味を決めておく必要があります。
そして、どこかの設定ファイルに default を指定しておくようにすると
良いですね。
設定ファイルに default subset = core, ext と書いてあれば
pkg_add hoge-1.0.tar.gz とだけすれば man などはコピーされないとか。
もちろんほとんどのユーザは HDD に余裕があるので、
default subset = ALL とするでしょう。(ALL については後述)
またはなにも設定しなければ ALL でしょう。
#用語
# サブセット
# パッケージの一部または全部 mini=core ext のような別名も含む
# アトミックサブセット
# 別名ではないサブセット @beginsubset〜@endsubset で定義される
この仕組みをうまく動作させるために、mini=core ext のような
別名機能は残したいと思います。で、ALL という特別なサブセットと
REST という特別なアトミックサブセットを導入します。
REST は明示的にはどのサブセットにも属さないファイル全てを
含みます。(現在の pkgsrc の PLIST では全てのファイルが REST に
属することになります。)
ALL は(ALL自身以外の)全てのサブセットを含みます。
例1:現在の pkgsrc の PLIST
@name hoge
usr/bin/hoge
usr/lib/hoge.a
usr/man/man1/hoge.1
REST={hoge, hoge.a, hoge.1}, ALL={REST, core, dev, man},
core=REST, dev=REST, man=REST
→ 当然 pkg_add すれば全てのファイルがコピーされる
例2:ちょっと書き換えた PLIST
@name hoge
usr/bin/hoge
usr/lib/hoge.a
@beginsubset man
usr/man/man1/hoge.1
@endsubset
REST={hoge, hoge.a}, ALL={REST, core, dev, man},
core=REST, dev=REST, man={hoge.1}
→ pkg_add のターゲットが ALL なら全てコピーされる
→ pkg_add のターゲットが core dev なら hoge, hoge.a だけ
コピーされる
→ pkg_add hoge-1.0.tar.gz -man としたばあい ALL を展開中に
man というサブセットが現れたらそれを除外する
ALL -> REST, core, dev, man
-> REST, core, dev ← man は除外
-> REST, REST, REST ← core=REST, dev=REST を展開
-> REST ← 一つにまとめる
hoge, hoge.a がコピーされる
itojun wrote:
> - databaseにはhoge-1.0を登録する
これにしてデータベースは現在と互換にしたいと思います。
itojun wrote:
> - 「後からmanpageだけいれたい」とかいうのは複雑になるだけなので無視。
> pkg_deleteしてからpkg_addすればよい
+CONTENTS には「@target REST」のようにインストールした
アトミックサブセットを記録しておいて、将来的にがんばれば
「後からmanpageだけいれたい」という要望に答えられる余地を
残しておくというのはどうでしょうか。
+CONTENTS:
@target REST
@name hoge
usr/bin/hoge
usr/lib/hoge.a
@beginsubset man
usr/man/man1/hoge.1
@endsubset
pkg_add と pkg_delete をちょっと変更するだけでなんとかなりそう(?)
ところで、OpenBSD も見に行かないと>自分
だれか見に行きました?
Takemura