FreeRadiusをインストール
SolarisにFreeRadiusをインストール。バックエンドにLDAPを控えさせて、Radiusで認証できるか実験を予定しています。とりあえずはインストールを。
ソースダウンロード
ソースはFreeRadius.orgのページからダウンロード可能です。最新番は1.1.7です。
コンパイル、リンク
展開して、configure,make,make install。ちょっと気を利かせてsslを有効にしようとおもって、こんなconfigureをしてみると見事にエラーに。
$ ./configure --with-openssl=/usr/local/ssl $ /usr/local/bin/make *** Warning: Linking the shared library rlm_perl.la against the *** static library /usr/local/lib/perl5/5.8.5/sun4-solaris/auto/DynaLoader/DynaL oader.a is not portable! gcc -shared -Wl,-h -Wl,rlm_perl-1.1.7.so -o .libs/rlm_perl-1.1.7.so .libs/rlm_p erl.o -R/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/lib/.libs -R/usr/l ocal/lib /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/lib/.libs/libradiu s.so -L/usr/local/lib -L/opt/gnu/lib /usr/local/lib/perl5/5.8.5/sun4-solaris/aut o/DynaLoader/DynaLoader.a -L/usr/local/lib/perl5/5.8.5/sun4-solaris/CORE -lperl -ldl -lm -lc -lnsl -lresolv -lsocket -lposix4 -lpthread -lc Text relocation remains referenced against symbol offset in file <unknown> 0x25d0 /usr/local/lib/perl5/5.8.5/sun4- solaris/CORE/libperl.a(perl.o) __floatdidf 0x8f90 /usr/local/lib/perl5/5.8.5/sun4-solaris/CORE/libperl.a(pp_sys.o) ld: fatal: relocations remain against allocatable but non-writable sections collect2: ld returned 1 exit status make[6]: *** [rlm_perl.la] Error 1 make[6]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_perl' make[5]: *** [common] Error 2 make[5]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules' make[4]: *** [all] Error 2 make[4]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules' make[3]: *** [common] Error 2 make[3]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src' make[2]: *** [all] Error 2 make[2]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src' make[1]: *** [common] Error 2 make[1]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7' make: *** [all] Error 2
うーん、デフォルトがsharedなのかな。ちょっと手を変えてこういうconfigureをしてみる。
$ ./configure --with-openssl=/usr/local/ssl --disable-shared (中略) gcc -g -O2 -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -Wall -D_GNU_SOURCE -DNDEBUG -I/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/include -I/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_sql -c rlm_sqlippool.c -o rlm_sqlippool.o In file included from rlm_sqlippool.c:37: /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/include/modpriv.h:7:18: error: ltdl.h: No such file or directory In file included from rlm_sqlippool.c:37: /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/include/modpriv.h:16: error: expected specifier-qualifier-list before 'lt_dlhandle' In file included from rlm_sqlippool.c:39: /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_sql/rlm_sql.h:15:18: error: ltdl.h: No such file or directory In file included from rlm_sqlippool.c:39: /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_sql/rlm_sql.h:68: error: expected specifier-qualifier-list before 'lt_dlhandle' rlm_sqlippool.c: In function 'sqlippool_command': rlm_sqlippool.c:311: error: 'SQL_INST' has no member named 'module' rlm_sqlippool.c: In function 'sqlippool_query1': rlm_sqlippool.c:358: error: 'SQL_INST' has no member named 'module' rlm_sqlippool.c: In function 'sqlippool_postauth': rlm_sqlippool.c:539: warning: pointer targets in passing argument 2 of 'strNcpy' differ in signedness rlm_sqlippool.c:526: warning: unused variable 'self' make[6]: *** [rlm_sqlippool.lo] Error 1 make[6]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_sqlippool' make[5]: *** [common] Error 2 make[5]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules' make[4]: *** [all] Error 2 make[4]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules' make[3]: *** [common] Error 2 make[3]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src' make[2]: *** [all] Error 2 make[2]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src' make[1]: *** [common] Error 2 make[1]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7' make: *** [all] Error 2
むー、妙だ。ltdl.hがないといっている。しかし、開発環境以下にちゃんとあるぞ。
$ find . -name ltdl.h 2> /dev/null ./libltdl/ltdl.h
しかたない。CFLAGSを設定。
$ CFLAGS=-I/export/home2/hogehoge/freeradius/freeradius-1.1.7/libltdl/ $ ./configure --disable-shared --with-openssl-includes=/usr/local/ssl/include --with-openssl-libraries=/usr/local/ssl/lib $ /usr/local/bin/make (中略) gcc .libs/radiusdS.o -pie -static -o radiusd acct.o auth.o client.o conffile.o exec.o files.o log.o mainconfig.o modules.o modcall.o nas.o proxy.o radiusd.o radius_snmp.o request_list.o session.o smux.o threads.o util.o valuepair.o version.o timestr.o xlat.o ../modules/rlm_acct_unique/.libs/rlm_acct_unique.a ../modules/rlm_always/.libs/rlm_always.a ../modules/rlm_attr_filter/.libs/rlm_attr_filter.a ../modules/rlm_attr_rewrite/.libs/rlm_attr_rewrite.a ../modules/rlm_chap/.libs/rlm_chap.a ../modules/rlm_dbm/.libs/rlm_dbm.a ../modules/rlm_detail/.libs/rlm_detail.a ../modules/rlm_digest/.libs/rlm_digest.a ../modules/rlm_eap/.libs/rlm_eap.a ../modules/rlm_exec/.libs/rlm_exec.a ../modules/rlm_expr/.libs/rlm_expr.a ../modules/rlm_fastusers/.libs/rlm_fastusers.a ../modules/rlm_files/.libs/rlm_files.a ../modules/rlm_ldap/.libs/rlm_ldap.a /usr/local/lib/libldap_r.so /usr/local/lib/liblber.so -lgen /usr/local/lib/libsasl2.so ../modules/rlm_mschap/.libs/rlm_mschap.a ../modules/rlm_ns_mta_md5/.libs/rlm_ns_mta_md5.a ../modules/rlm_otp/.libs/rlm_otp.a -L/usr/local/ssl/lib ../modules/rlm_pam/.libs/rlm_pam.a -lpam ../modules/rlm_pap/.libs/rlm_pap.a ../modules/rlm_passwd/.libs/rlm_passwd.a ../modules/rlm_perl/.libs/rlm_perl.a -L/usr/local/lib -L/opt/gnu/lib -L/usr/local/lib/perl5/5.8.5/sun4-solaris/CORE -lperl -lm -lc ../modules/rlm_preprocess/.libs/rlm_preprocess.a ../modules/rlm_radutmp/.libs/rlm_radutmp.a ../modules/rlm_realm/.libs/rlm_realm.a ../modules/rlm_sql/.libs/rlm_sql.a ../modules/rlm_sql_log/.libs/rlm_sql_log.a ../modules/rlm_sqlcounter/.libs/rlm_sqlcounter.a ../modules/rlm_sqlippool/.libs/rlm_sqlippool.a ../modules/rlm_unix/.libs/rlm_unix.a ../modules/rlm_checkval/.libs/rlm_checkval.a ../modules/rlm_eap/types/rlm_eap_md5/.libs/rlm_eap_md5.a ../modules/rlm_eap/types/rlm_eap_leap/.libs/rlm_eap_leap.a ../modules/rlm_eap/types/rlm_eap_tls/.libs/rlm_eap_tls.a ../modules/rlm_eap/types/rlm_eap_ttls/.libs/rlm_eap_ttls.a ../modules/rlm_eap/types/rlm_eap_sim/.libs/rlm_eap_sim.a ../modules/rlm_eap/types/rlm_eap_peap/.libs/rlm_eap_peap.a /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_eap/libeap/.libs/libeap.a ../modules/rlm_eap/types/rlm_eap_mschapv2/.libs/rlm_eap_mschapv2.a ../modules/rlm_eap/types/rlm_eap_gtc/.libs/rlm_eap_gtc.a ../modules/rlm_sql/drivers/rlm_sql_postgresql/.libs/rlm_sql_postgresql.a -L/usr/lib -lpq ../modules/rlm_eap/libeap/.libs/libeap.a /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/lib/.libs/libradius.a ../lib/.libs/libradius.a -lcrypt /export/home2/hogehoge/freeradius/freeradius-1.1.7/libltdl/.libs/libltdl.a -ldl -lnsl -lresolv -lsocket -lposix4 -lpthread -lssl -lcrypto -R/usr/local/lib -R/usr/local/lib ld: fatal: input of shared object `/usr/local/lib/libldap_r.so' in static mode ld: fatal: input of shared object `/usr/local/lib/liblber.so' in static mode ld: fatal: input of shared object `/usr/local/lib/libsasl2.so' in static mode ld: fatal: library -lpam: not found ld: fatal: library -ldl: not found ld: fatal: library -lresolv: not found ld: fatal: library -lposix4: not found ld: fatal: library -lpthread: not found ld: fatal: File processing errors. No output written to radiusd collect2: ld returned 1 exit status rm -f .libs/radiusdS.o make[4]: *** [radiusd] Error 1 make[4]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/main' make[3]: *** [common] Error 2 make[3]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src' make[2]: *** [all] Error 2 make[2]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src' make[1]: *** [common] Error 2 make[1]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7' make: *** [all] Error 2
libdl.soとか、libresolv.soなんかは/usr/libにあるんだけどなぁ。ここからさきは明日にしよう。