梅本です。

>>> Tue, 10 Jan 2006 21:12:29 +0900 の刻に「okumura」、すなわち
>>> Yoshihiro OKUMURA <[EMAIL PROTECTED]> 氏曰く

okumura> サポートに関しては、少なくとも、OS 自体の Security Advisories がサポート
okumura> される限り ports-current との連携も保守されつづけるのではないかと思います。

  5.x に関しては、おそらく大丈夫だと思いますが、ports については個々の
メンテナの頑張り次第のところもあるので、なんともいえないかもしれません。

# 4.x については、もう build できないものが増えてきていますね。GNOME も
# 4.x のサポートを切っちゃいましたし。

okumura> # 例えば、 FreeBSD 4.x でも、sysutils/rc_subr に依存することによって今の rcNG
okumura> # (/etc/rc.conf などで起動制御)はサポートされています。

  あくまで、rc.subr を使った起動スクリプトが動くという意味でのサポート
です。rcorder を使った起動順序の制御はされません。

> このあたりの方針も含め、どこかにまとめられているとは思いますので、
> ご存知の方があれば教えてください。
> # 日本語訳があれば、なお助かります。

okumura> これは私も知りたいです。

  MFC のやりかたがまずかったのはないかとか、今まさに、ports@ でワイワイ
やってますね。

okumura> 文書化されたものとなると、

okumura> http://people.freebsd.org/~yar/rcng/article.html
okumura> 
http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/rc-scripts.html

okumura> あたりしか見付けられませんでした。

  全体像がまとまったものは多分ないのではないかという気がしますが、個々
の要素に関しては、rc(8), rc.subr(8), rcorder(8) あたりが参考になると思
います。

okumura>  - rcorder 必須 (ただし, 5.x 以降)
okumura>    USE_RCORDER=
okumura>   (ただし今後、 Mk/bsd.port.mk にも 6.1以降用のトリックは欲しい..)
okumura>   - それ以外 + 4.x
okumura>    USE_RC_SUBR=

  USE_RCORDER は、/etc/rc.d/ に rcNG 対応の起動スクリプトをインストール
するというオプションです。
  ports の中には、もっと早い時点で起動したいものが、いくつか存在します。
rcNG 化は、それに対する希望であったわけです。しかし、rc.subr を使うよう
になっても、/usr/local/etc/rc.d/ が rcorder の対象にならない時期がかな
り長く続きました。これに対して、USE_RCORDER は見切りで入ったものだと私
は思っています。
  rcorder の対象になるのは現状で 7-CURRENT と 6-STABLE ですが、おそらく、
5.x に MFS されることはないでしょう。つまり、7-CURRENT および 6-STABLE
では、RC_ORDER は必要ありませんが、5.x (および 6.0-RELEASE) で rcorder
の対象にするためには USE_RCORDER を使用する必要があります。しかし、中途
半端に使用すると、混乱を招く可能性があります。このような経緯を考えると、
注意して使う必要があるでしょう。

okumura> 3. rc スクリプトのファイル名
okumura>  .if ${OSVERSION} >= 600101
okumura>   # .sh 無
okumura>  .else
okumura>   # .sh 有
okumura>  .endif

  これについては、/usr/local/etc/rc.d/ が rcorder の対象になった初期の
混乱で紛れ込んだ対策です。
  /etc/rc.d/ では、.sh で終わっていれば subshell で、そうでなければ
main shell で実行されるというのが仕様です。
  この仕様のまま /usr/local/etc/rc.d/ も対象にしてしまったために、main
shell で動くことが想定されていない起動スクリプトが main shell で起動さ
れてしまい、問題を引き起こしました。この対策として個々の port のメンテ
ナが慌てて入れたのが上記です。
  現在は、/usr/local/etc/rc.d/ の場合は .sh で終わっていても subshell
で起動されるように修正されていますので、この問題は起こらなくなっている
はずです。

  なお、rcNG 対応の起動スクリプトの末尾が .sh で終わるかどうかは、今後
変わる可能性がありますが、bsd.ports.mk で吸収される方向になるのではない
かと思っています。

okumura> で、例外として以下も最低限実行はサポート

  PROVIDE と書いてないことを祈りましょう。:)

okumura> b. rc スクリプト
okumura>  - 自前で start/stop/restart などの引数の動作を記述

  rcNG 対応の起動スクリプトに対しては、boot 時は start ではなく
faststart が引数として起動されます。いくつかの port がこれに引っかかっ
たようです。

-- 
梅本 肇 @ インターネット互助会横浜  http://www.imasy.org/~ume/
[EMAIL PROTECTED]  [EMAIL PROTECTED],jp.}FreeBSD.org
プログラムは書いた人の意図ではなく書かれた通り動く  I hate Modula-3 :-)

メールによる返信