>> 単純に
>> ports/security/openssh-portable/Makefile
>> のバグだと思います。OPENSSH_OVERWRITE_BASE=1のときにrc.d/opensshをイン
>> ストールする必要ないので。
> 必要ないのですが、インストールするつもりのようです...
> sshdのパスをきちんと考慮しているみたいですし。

前のメールのcvswebで示したように元々はOPENSSH_OVERWRITE_BASEが*ないと
き*にrc.d/opensshをインストールするためのコードです。パスがあうのは
PREFIX使ってるのでたまたまです。

> ともかく、/usr/local 以下を作るのがインストーラの仕事でないことを
> 確認したかったのですが、src/usr.sbin/sysinstall/install.c に
> 
>       /* Now run all the mtree stuff to fix things up */
>         vsystem("mtree -deU -f /etc/mtree/BSD.root.dist -p /");
>         vsystem("mtree -deU -f /etc/mtree/BSD.var.dist -p /var");
>         vsystem("mtree -deU -f /etc/mtree/BSD.usr.dist -p /usr");
> 
> としかないので、/usr/local 以下はここで作られるのではないようですね。
> # そもそも/usr/local である必要もないわけですし。

これは認識あってます。

> あとは、何らかの方法で、最初のports/packagesの利用時に
> 作成されるのかと思ったのですが、そのような機構もなさそうです。

portsでやってくれるはずです。手元で試してないですが、他のportsであれば
install時に /usr/local/ 以下が install-mtree(ports/Mk/bsd.ports.mk) に
よって、作成されるはずです。

packagesの場合は、rc.d以下のファイルが当該packageに含まれるんなら、当然
ながらそのファイルを展開するタイミングでディレクトリが作られます。

> では、個別のportsのインストール時しかないわけで、インストーラに任せるのか、
> その前にportsでディレクトリを作るのかが気になりますが、
> 先に作る、ということでよいのでしょうか?

ということで、portsのインストール時の直前です。

> ports/Mk/bsd.ports.mk の install-mtree ターゲットがこれかと思うのですが。
> # しかし、ports/security/openssh-portable で OPENSSH_OVERWRITE_BASE=1 の時には、
> # "特殊なPREFIX"なのでこれが動かない、と。

Yes。これは認識あってます。

> ports/security/openssh-portable については、既に先に mkdir -p するように
> send-prしました。

「"特殊なPREFIX"なのでこれが動かない」かつ、そもそも/usr/local以下にファ
イルを置く必要がないので、rc.d/opensshをインストールしないのが僕の結論
です。

ちなみに、このportsですが、

.if defined(WITH_OVERWRITE_BASE)
        @${REINPLACE_CMD} -e 's|%%PREFIX%%|${LOCALBASE}|' \
                -e 's|%%RC_SCRIPT_NAME%%|${RC_SCRIPT_NAME}|' ${WRKSRC}/sshd.8
.else
        @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|' \
                -e 's|%%RC_SCRIPT_NAME%%|${RC_SCRIPT_NAME}|' ${WRKSRC}/sshd.8
.endif

ここもロジック逆ですね。直さないと。

---
Munechika SUMIKAWA @ FreeBSD.org

メールによる返信