LoginSignup
1
1

More than 5 years have passed since last update.

CentOS 7でのFreeRadiusのbuild

Last updated at Posted at 2016-02-05

背景

事情 (yumではバージョンが古いものしか入らない?という噂本当?) によりFreeRadiusの最新版をソースからbuildしたところ少し嵌ったので書いておきます.

インストール手順まとめ

結論からまとめると以下の様な手順でbuildできました.

% sudo yum install -y libtalloc-devel
% sudo yum install -y openssl-devel
% ./configure
% make

hogehoge.soへのsymbolic linkはhogehoge-develをインストールすると作成されるというのを初めて知りました.まぁ,そうですねぇ.うーん,Linuxは難しい.個人的にはBSDの方が楽だなぁ.

七転八倒具合

  1. github.com上でhttps://github.com/FreeRADIUS/freeradius-server/をfork
  2. forkしたものをclone
  3. configureするとこける
% cd freeradius-server
% ./configure
(snip)
configure: WARNING: talloc library not found. Use --with-talloc-lib-dir=<path>.
configure: error: FreeRADIUS requires libtalloc
  1. libtallocが無いということなのでインストール
% sudo yum install -y libtalloc
  1. まだconfigureでこける
% cd freeradius-server
% ./configure
(snip)
configure: WARNING: talloc library not found. Use --with-talloc-lib-dir=<path>.
configure: error: FreeRADIUS requires libtalloc

6.libtallocが入っていないのかと確認してみる,と入ってはいる… が,libtalloc.soが無い!!

% ls /usr/lib64/ | grep libtalloc
libtalloc.so.2
libtalloc.so.2.1.2
  1. ということで,symbolic linkを張る.
% sudo ln -s /usr/lib64/libtalloc.so{.2,}

8.再度configureにチャレンジ…が,今度はヘッダーファイルが無いと怒られる…まぁ,そうですね.

% ./configure
(snip)
configure: WARNING: talloc headers not found. Use --with-talloc-include-dir=<path>.
configure: error: FreeRADIUS requires libtalloc
  1. 開発用のファイルもインストールして再度チャレンジ…も,また,ライブラリが無いと…
% sudo yum install -y libtalloc-devel
% ./configure
(snip)
configure: error: in `/usr/local/src/freeradius-server':
configure: error: failed linking to libcrypto. Use --with-openssl-lib-dir=<path>, or --with-openssl=no (builds without OpenSSL)
See `config.log' for more details
  1. opensslをインストールして再度チャレンジ…
% sudo yum install -y openssl
% ./configure
(snip)
configure: error: in `/usr/local/src/freeradius-server':
configure: error: failed linking to libcrypto. Use --with-openssl-lib-dir=<path>, or --with-openssl=no (builds without OpenSSL)
See `config.log' for more details
  1. だんだん飽きてきた…が,libcryptoって複数あるじゃないですか…で,OpenSSLの方にリンクを張る…さて…
% ls /usr/lib64/libcrypto*
/usr/lib64/libcrypto.so.1.0.1e  /usr/lib64/libcrypto.so.10
% sudo ln -s /usr/lib64/libcrypto.so{.1.0.1e,}
% ./configure
(snip)
configure: error: in `/usr/local/src/freeradius-server':
configure: error: failed linking to libssl. Use --with-openssl-lib-dir=<path>, or --with-openssl=no (builds without OpenSSL)
See `config.log' for more details
  1. いくつかdisableされたものもあるけど,ようやくconfigureが通った!!
% ls /usr/lib64/libssl*
/usr/lib64/libssl.so.1.0.1e  /usr/lib64/libssl.so.10  /usr/lib64/libssl3.so
$ sudo ln -s /usr/lib64/libssl.so{.1.0.1e,}
% ./configure
(snip)
configure: creating ./config.status
config.status: creating all.mk
config.status: creating config.h
  1. 何がdisableされたかチェックしてみようとするが,WARNINGがやけに少ない…
% grep WARNING config.log 
configure:5642: WARNING: snmpget not found - Simultaneous-Use and checkrad may not work
configure:5687: WARNING: snmpwalk not found - Simultaneous-Use and checkrad may not work
configure:6881: WARNING: pcap library not found, silently disabling the RADIUS sniffer, and ARP listener.  Use --with-pcap-lib-dir=<path>.
configure:7121: WARNING: collectdclient library not found. Use --with-collectdclient-lib-dir=<path>.
configure:7339: WARNING: cap library not found, debugger checks will not be enabled. Use --with-cap-lib-dir=<path>.
  1. ということで,configureを遣り直してstdoutに出たものもチェックすると,大量にdisableされていたことが分かる.
% ./configure > config.log.stdout 2>&1
% grep WARNING config.log.stdout
(沢山出てくる)
  1. が,とりあえず,buildしてみると,大量のエラーが出てもうmakeそう…
% make
(snip)
In file included from src/modules/rlm_eap/libeap/eap_tls.c:74:0:
src/modules/rlm_eap/libeap/eap_tls.h:58:1: エラー: 不明な型名 ‘fr_tls_status_t’ です
 fr_tls_status_t eap_tls_process(eap_session_t *eap_session);
 ^
src/modules/rlm_eap/libeap/eap_tls.h:67:46: エラー: 不明な型名 ‘SSL’ です
 void eap_tls_gen_mppe_keys(REQUEST *request, SSL *s, char const *prf_label);
                                              ^
src/modules/rlm_eap/libeap/eap_tls.h:68:29: エラー: 不明な型名 ‘SSL’ です
 void eap_ttls_gen_challenge(SSL *s, uint8_t *buffer, size_t size);
                             ^
src/modules/rlm_eap/libeap/eap_tls.h:69:49: エラー: 不明な型名 ‘SSL’ です
 void eap_tls_gen_eap_key(RADIUS_PACKET *packet, SSL *s, uint32_t header);
(snip)
  1. eap_tls.cでincludeされているsrc/include.hを調べてみるとWITH_TLSがdefineされないとコンパイルが通らない様に見え,openssl/ssl.hが無いと駄目な模様…ってそりゃそうだ…が,何でconfigure通ったんだろうか…
% grep -rl 'define.*WITH_TLS'
src/include/features-h
src/include/features.h
src/main/listen.c
% view src/include/features.h
(snip)
#ifdef WITHOUT_TLS
#  ifndef HAVE_OPENSSL_SSL_H
#    error TLS requires OpenSSL
#  endif
#else
#  ifdef HAVE_OPENSSL_SSL_H
#    ifndef WITH_TLS
#      ifndef NO_OPENSSL
#        define WITH_TLS (1)
#      endif
#    endif
#  endif
#endif
(snip)
  1. openssl-develを入れて再度チャレンジ…おお,compile通った!!
% sudo yum install -y openssl-devel
% ./configure
% make
(snip)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1