FreeBSDでpkgのメッセージが二重にURIエンコードされてて、盛大に勘違いした
Posted on 2015/08/15(Sat) 17:45 in technical
導入
FreeBSD 10.1-RELEASE-p16にpkgからOpenLDAPを入れて認証基盤にしようとしたところ、:
/usr/local/etc/rc.d/slapd: WARNING: slapd: Can't find socket /var/run/openldap/ldapi
なるWARNINGが止まらなかったのだけど、そう設定しろって言ってくるpkgのバグだってことが分かるまでのお話。
状況
FreeBSD 10.1-RELEASE-p16にpkgを使ってopenldap-serverをインストールすると、以下のような説明が出ました。:
************************************************************ Message for openldap-server-2.4.41: ************************************************************ The OpenLDAP server package has been successfully installed. In order to run the LDAP server, you need to edit /usr/local/etc/openldap/slapd.conf to suit your needs and add the following lines to /etc/rc.conf: slapd_enable="YES" slapd_flags='-h "ldapi://%252fvar%252frun%252fopenldap%252fldapi/ ldap://0.0.0.0/"' slapd_sockets="/var/run/openldap/ldapi" Then start the server with /usr/local/etc/rc.d/slapd start or reboot. Try `man slapd' and the online manual at http://www.OpenLDAP.org/doc/ for more information. slapd runs under a non-privileged user id (by default `ldap'), see /usr/local/etc/rc.d/slapd for more information. ************************************************************
これに従って、以下のように /etc/rc.conf に設定を入れます。:
# sysrc slapd_enable="YES" # sysrc slapd_flags="-h 'ldapi://%252fvar%252frun%252fopenldap%252fldapi/ ldap://0.0.0.0/'" # sysrc slapd_sockets="/var/run/openldap/ldapi"
警告
余談だけど、sysrcを使ってインストール時のメッセージをそのまま投入すると、 ' が " に変更されてしまうので、投入可能な記載に変更してます。
/usr/local/etc/openldap/slapd.conf の設定は省略するけど、上記の起動パラメータで起動すると以下のようなWARNINGが出ます。:
# sysrc slapd_flags slapd_flags: -h 'ldapi://%252fvar%252frun%252fopenldap%252fldapi/ ldap://0.0.0.0/' # service slapd restart Stopping slapd. Waiting for PIDS: 1604. Starting slapd. /usr/local/etc/rc.d/slapd: WARNING: slapd: Can't find socket /var/run/openldap/ldapi
調査
まずはバージョン:
# uname -a FreeBSD ldap.ainoniwa.net 10.1-RELEASE-p16 FreeBSD 10.1-RELEASE-p16 #0: Tue Jul 28 12:04:19 UTC 2015 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64 # pkg info openldap-server | head openldap-server-2.4.41 Name : openldap-server Version : 2.4.41 Installed on : Sat Aug 15 03:45:16 JST 2015 Origin : net/openldap24-server Architecture : freebsd:10:x86:64 Prefix : /usr/local Categories : net databases Licenses : OPENLDAP Maintainer : delphij@FreeBSD.org
起動状況:
# ps ax | grep "[l]dap" 4132 - Is 0:00.01 /usr/local/libexec/slapd -h ldapi://%252fvar%252frun%252fopenldap%252fldapi/ ldap://0.0.0.0/ -u ldap -g ldap # netstat -an | grep ldap fffff8000d3733c0 stream 0 0 fffff80018150760 0 0 0 %2fvar%2frun%2fopenldap%2fldapi
古いやつ(FreeBSD 8.4で動いているやつ)の動作状況:
# ps ax | grep "[l]dap" 1296 ?? Is 0:01.13 /usr/local/libexec/slapd -h ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/ -u ldap -g ldap # netstat -an | grep ldap ffffff00185cf690 stream 0 0 ffffff0018d18ce8 0 0 0 /var/run/openldap/ldapi
ん? %252f じゃなくて %2f だぞ?
結論
pkgのdescriptionやmessageが二重にURIエンコードされているようだ。
古いやつに合わせたらちゃんと動作した。:
# sysrc slapd_flags slapd_flags: -h 'ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/' # service slapd restart Stopping slapd. Waiting for PIDS: 3849. Starting slapd.
つまり、pkgでインストールした時のメッセージは正しくはこう(試しに/usr/portsからも入れてみたけど、そっちはこうだった):
************************************************************ Message for openldap-server-2.4.41: ************************************************************ The OpenLDAP server package has been successfully installed. In order to run the LDAP server, you need to edit /usr/local/etc/openldap/slapd.conf to suit your needs and add the following lines to /etc/rc.conf: slapd_enable="YES" slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"' slapd_sockets="/var/run/openldap/ldapi" Then start the server with /usr/local/etc/rc.d/slapd start or reboot. Try `man slapd' and the online manual at http://www.OpenLDAP.org/doc/ for more information. slapd runs under a non-privileged user id (by default `ldap'), see /usr/local/etc/rc.d/slapd for more information. ************************************************************
で、どうも pkg のバグ(https://github.com/freebsd/pkg/pull/1306)らしいので、今後は直る気配。
おしまい。
蛇足
最初動かねぇ!とか思ってバグ報告投げた(https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=202343)んだけど、論点がずれてたっぽくてメンテナの方にはご迷惑をおかけしたようだ。すまない。