雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|

2007-11-17 [長年日記]

[FreeBSD] NAREGI-CA インストール

久々のソースからのコンパイルでちょっと手間取ったのでメモ。

README.jに書いてある通りにconfigure & make すると、次のようなエラーが出てコンパイルに失敗する。

gcc -O2 -DHAVE_CONFIG_H -DAICONFIG=\"/usr/local/naregi-ca/lib/aica.cnf\" -DPREFIX=\"/usr/local/naregi-ca\" -DLOCKDIR=\"/usr/local/naregi-ca/lock\" -I../ -I../include -I../aicrypto/include -c aireg_op.c
aireg_op.c: In function `aiop_regidone':
aireg_op.c:389: warning: assignment makes pointer from integer without a cast
aireg_op.c:393: error: `LDAP_SUCCESS' undeclared (first use in this function)
aireg_op.c:393: error: (Each undeclared identifier is reported only once
aireg_op.c:393: error: for each function it appears in.)
aireg_op.c: In function `aiop_upd_userentry':
aireg_op.c:628: error: `LDAPMessage' undeclared (first use in this function)
aireg_op.c:628: error: `res' undeclared (first use in this function)
aireg_op.c:628: error: `ent' undeclared (first use in this function)
aireg_op.c:630: error: `LDAP_SCOPE_BASE' undeclared (first use in this function)
aireg_op.c:639: warning: assignment makes pointer from integer without a cast
aireg_op.c:641: error: `LDAP_SUCCESS' undeclared (first use in this function)
aireg_op.c:658: error: `LDAP_MOD_REPLACE' undeclared (first use in this function)
aireg_op.c:659: error: `LDAP_MOD_ADD' undeclared (first use in this function)
*** Error code 1

LDAP_SUCCESSの定義を探す。

% grep LDAP_SUCCESS /usr/local/include/*.h
/usr/local/include/ldap.h:#define LDAP_SUCCESS 0x00

ldap.hをincludeしていない?

configure時に生成されるaiconfig.hをチェック。

% grep LDAP aiconfig.h
/* #undef HAVE_LDAP_H */
/* #undef HAVE_LDAP_LIB */

ありゃ。もう一回configureして結果をチェック。

% sh configure
loading cache ./config.cache

checking for ldap_unbind in -lldap... (cached) no

checking for ldap.h... (cached) no

/usr/local/libや/usr/local/includeを見ていないっぽい。

% gcc -print-search-dirs
install: /usr/libexec/(null)
programs: =/usr/bin/:/usr/libexec/
libraries: =/usr/lib/

configureのキャッシュを消して--with-cflagsを試す。

% rm config.cache
% sh configure --with-cflags="-I/usr/local/include -L/usr/local/lib"
creating cache ./config.cache

checking for ldap_unbind in -lldap... no

checking for ldap.h... no

だめなので、マニュアルを読んで環境変数でパス指定。

% setenv CPATH /usr/include:/usr/local/include
% setenv LIBRARY_PATH /lib:/usr/lib:/usr/lib/compat:/usr/local/lib
% rm config.cache
% sh configure
creating cache ./config.cache
 :
checking for ldap_unbind in -lldap... yes
 :
checking for ldap.h... yes

configureが成功したようなので、make clean & make

% make clean
 :
% make
 :

これでコンパイルも最後まで進み、ちょっと試した限りでは問題なく使えている模様。

ちなみに、README.jには「FreeBSD4.3で動作確認済み」とあるが、手元の4.11マシンでは同じエラーでコンパイルできなかった。謎。