依存関係の解決

VIVERの目的は、単にCDブートやネットワークブートを支援することではなく、名前解決方法の提供や、サーバー・クライアント・システムの構築、あるいはクラスタ環境の提供まで、シンクライアントシステムに求められる機能の構築を包括的に支援することです。

CDブート/ネットワークブートの後の起動プロセス、つまりLinuxディストリビューションによって提供される起動プロセス(ディストリビューションスペースと命名)は、'VIVER Pacs'でプラグイン式に拡張できます。(うーむ・・・説明がヘタだ・・・)

で、一つのpacは、ほかのpacに依存できます。rpmの依存関係みたいに。pacをディストリビューションスペースに適用するときは、この依存関係を考慮しつつ、一気に並列して適用します。

たとえば、ネットワークを起動するwakenet.pac。
たとえば、DHCPサーバーを起動するdhcpd.pac。
たとえば、tftpサーバーを起動するtftpboot.pac。

dhcpd.pacはwakenet.pacに依存していて、ほかは独立しているとすると、wakenet.pacとtftpboot.pacは並列して適用されます。dhcpd.pacはwakenet.pacの適用が終わった後に適用が開始されます。(このあたり、InitNGからアイディアを拝借)

・・・で、本題ですが、依存関係がある限りは、もしかしたら堂々巡りした依存関係も発生するかもしれないわけです。
AがBに依存していることを

A → B

と表記するとするとして、

nufw.pac → pam-ldap.pac
pam-ldap.pac → wakenet.pac
wakenet.pac → nufw.pac

ということになってしまったら、いつまでたっても適用されないわけです。

というわけで、この解決策を考える。

nufw.pac → dummy.pac
pam-ldap → dummy.pac
wakenet.pac → dummy.pac

としてしまうのはどうか。

図を描いてみました。

うまくいっている、はず。

あとは実装。