configure がエラーで失敗する

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

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

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

keepalived : configure エラーRaw Code(S)Raw Code(T)
# ./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 インストールRaw Code(S)Raw Code(T)
━━━━ 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 実行結果Raw Code(S)Raw Code(T)
# ./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 エラー対策方法でした。