configure がエラーで失敗する

パッケージをインストールする際に、yum とか apt-get とかじゃなくて、一番最新バージョンをインストールするために、ソースファイルそのものをダウンロードしないと行けない時があります。

ダウンロードしたソースファイルを make でコンパイルする前に、一番最初に実施するコマンドが、configure ですが、この configure コマンドを実行したら、以下のエラーで失敗しました。

以下は、keepalivedmake コンパイルする前に、実行した configure の結果です。

keepalived : configure エラー
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
# ./configure
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes

・・・

checking openssl/ssl.h usability... no
checking openssl/ssl.h presence... no
checking for openssl/ssl.h... no
configure: error:
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.            !!!
#

configure とは

configure コマンドは、現在のシステム情報をチェックし、コンパイルに必要な Makefile を作成します。

make でソースファイルをコンパイルするためには、この Makefile が必要となるため、ソースビルドする際には、必ず一番最初に、configure を実行し、Makefile を生成する必要があります。

原因と対策

エラーメッセージ line : 16 では、OpenSSL が正しくインストールされてないよ と言っています。 OpenSSL 入ってるんだけどな。。

一番ヒントになったのは、line : 17Can not include OpenSSL headers files. というメッセージです。

つまり、OpenSSL ヘッダファイルをインクルードできません。 と。

ここで、openssl-devel パッケージが足りない・入ってないことに気がつきました。

openssl-devel インストール
1
2
3
4
5
■ Ubuntu の場合
# apt-get install libssl-dev

■ CentOS & RHEL の場合
# yum -y install openssl-devel

openssl-devel とは

OpenSSL 自体は、暗号化をサポートするためのツールとして色んな企業、サービスで広く使われています。

そして、openssl-devel パッケージには、OpenSSL を使用するアプリケーションの開発に必要な各種アルゴリズム・プロトコル・静的ライブラリ・ヘッダファイル等が含まれています。

そのため、openssl-devel を追加でインストール必要がありました。

openssl-devel インストール後の configure

openssl-devel パッケージインストールが終わったらもう一回 configure コマンドを実行します。

keepalived : openssl-devel 導入後の configure 実行結果
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# ./configure
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes

・・・

configure: creating ./config.status
config.status: creating Makefile
config.status: creating genhash/Makefile
config.status: creating keepalived/core/Makefile
config.status: creating lib/config.h
config.status: creating keepalived.spec
config.status: creating keepalived/Makefile
config.status: creating lib/Makefile
config.status: creating keepalived/vrrp/Makefile
config.status: creating keepalived/check/Makefile
config.status: creating keepalived/libipvs-2.6/Makefile

Keepalived configuration
------------------------
Keepalived version       : 1.2.19
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lssl -lcrypto -lcrypt
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
IPVS use libnl           : No
fwmark socket support    : Yes
Use VRRP Framework       : Yes
Use VRRP VMAC            : Yes
SNMP support             : No
SHA1 support             : No
Use Debug flags          : No
#

問題なく、configure が完了しました。

システムを構築する段階で、リソース節約、不要なパッケージ・サービスは動かさないつもりで必要最低限のパッケージだけ入れたのですが、結果的には、パッケージが足りなかったってことになりますね。

一応、最小構成で構築して、足りないパッケージは後から導入する考え方で良いと思うので、これで良しとします。

以上、OpenSSL is not properly installed on your system エラー対策方法でした。