富田といいます。

Hiroki Kashiwazaki wrote:

> しかし,nss_ldap や pam_ldap は openldap-client-2.3.41 を必要とし
> ているため,openldap23-client をインストールしようとし始めますが,
> openldap23-client は (既に入っている) openldap23-sasl-clientと競合
> するためインストールに失敗します.僕はこれでてっきり,nss_ldap や 
> pam_ldap を使うなら,sasl なしで (TLS などを使って)運用すべしとい
> う事かなと考えておりました.


/usr/ports/Mk/bsd.port.mkというファイルを読むと気がつくのですが、
たとえば/etc/make.confに、

WANT_OPENLDAP_SASL=yes

と書いておくと、必ず、openldap23-sasl-clientが採用されるようになるため、
自動的にopenldap23-clientがインストールされることはなくなります。



> が,/usr/ports/net/nss_ldap あるいは /usr/ports/security/pam_ldap
> で make install すれば openldap23-client のない環境でもインストー
> ルすることが出来る事が分かりました.僕は ports の中で make install
> する事と -P オプションをつけない portinstall は (pkgtools.conf を
> 見るかどうかの違いこそあれ) 基本的に等価かと思っていたのですが,
> どうやら異なるようで,しかし何がどう違うのかがよく分かりません.

こちらは、たまたまそうなってしまった、なんだと思われます。

(1)
ports/security/pam_ldap/Makefileに
USE_OPENLDAP=   yes
とあるので、openldapがインストールされていることが要求されます。
make実行時のログを見ると気がつくかもしれませんが、

===>   pam_ldap-1.8.4 depends on shared library: ldap-2.3.2 - found

と表示されるように、たぶん、/usr/local/lib/libldap-2.3.so
が存在しれば、foundになります。

(2)
openldap23-client でも openldap23-sasl-client でも、
インストールされるライブラリ名がlibldap-2.3.so という同じ名前に
なっています。
そういうわけで、(1)でfoundになります。




想像ですが、portinstallは、MakefileのLIB_DEPENDSを見るよりも先に、
INDEX*.dbの依存関係の情報を見て、openldap23-clientをインストールしようと
しているのではないでしょうか。

私の場合、portsで戸惑うことがあったときは、たいていは、各portsのMakefile
と、bsd.port.mkを見れば、自己解決できてます。

メールによる返信