状況
プライベートサブネット上にredis用のインスタンスを立ち上げ、NATを介してwgetでredisのソースをダウンロード。その後/usr/local/srcにて解凍してmakeしようとしたときに最初にgccがないとエラーが出た。
sudo yum -y install gcc
でgccを入れた後に以下のエラーが出た。
・パブリックサブネット上のインスタンスで同じことをやったら普通にいけた。おそらくプライベートのredis用インスタンス固有の問題?
[ec2-user@ip-10-0-2-10 redis-2.8.17]$ sudo make
cd src && make all
make[1]: ディレクトリ `/usr/local/src/redis-2.8.17/src' に入ります
LINK redis-server
cc: error: ../deps/hiredis/libhiredis.a: そのようなファイルやディレクトリはありません
cc: error: ../deps/jemalloc/lib/libjemalloc.a: そのようなファイルやディレクトリはありません
make[1]: *** [redis-server] エラー 1
make[1]: ディレクトリ `/usr/local/src/redis-2.8.17/src' から出ます
make: *** [all] エラー 2
原因
パブリックに作ったインスタンスとプライベートに作ったredis用のインスタンスで特に変わっていることはNATを介してインターネットアクセスしてるかどうかだが、特に影響なさそうだなと思ったので、makeの問題だと予想
んでいろいろ調べてたら githubのredis2.6のissuesで同様の問題に関するものを発見
自分と同様に、最初gccが入ってなくてmakeをやりなおしていてエラーが出ていて、
makeしたときにできる.make-*filesが悪さをしてるとのコメントを発見
charsyam commented on 23 Nov 2012
どうやらmakeをしたときに /usr/local/src/redis-2.8.17/ のディレクトリの下にmake関連のファイルができて、一回目のgccでエラーでこけたときにそのファイルが消えずに悪さをしていた模様 実際みてみると、./deps/ と./src/の下に .make-* のファイルがいくつか見つかったのでそれを消してもう一度やったらうまく行きました。
>・パブリックサブネット上のインスタンスで同じことをやったら普通にいけた。おそらくプライベートのredis用インスタンス固有の問題?
パブリックのインスタンスでは普通に出来たのは、もともと別の作業でgcc入れてたからでした。
after first building failure, it already made some .make-*files
so it disturbs building of redis server.
remove dep/.make-cflags deps/.make-ldflags deps/.make-prerequisites
and remove src/.make-prerequisites src/.make-setting