2014年11月26日水曜日

Cygwin上にRedisをインストール

概要

過去にWindows上にRedisをインストールする方法を紹介しましたが、この方法だと実はCygwin上では使えません
今回はCygwin上で実行できるRedisのインストール方法をご紹介します

環境

  • Windows7 64bit
  • Cygwin 1.7.32-1
  • apt-cyg 0.59
    • make, gcc-core
    • 事前にapt-cygでmakeに必要なパッケージをインストールしておいてください、apt-cygのインストール方法はこちらから
  • Redis 2.6.14

インストール

インストールはRedisのソースコードをmakeビルドしてインストールします

Redisインストール

まずはソースをダウンロードして解凍します

wget https://redis.googlecode.com/files/redis-2.6.14.tar.gz
tar zvxf redis-2.6.14.tar.gz

既存のソースコードをCygwin でビルドできるように修正します

cd redis-2.6.14/src/
vim redis.h

redis.hはすでに存在するファイルでこれに追記します
追記する箇所は「Data types」の上に以下を追記します
(左の番号は行数なのでコピペしないでください)

307 #ifdef __CYGWIN__
308 #ifndef SA_ONSTACK
309 #define SA_ONSTACK 0x08000000
310 #endif
311 #endif
312
313 #if defined(__CYGWIN__)
314 #define strtold(a,b)    ((long double)strtod((a),(b)))
315 #endif
316
317 /*-----------------------------------------------------------------------------
318  * Data types
319  *----------------------------------------------------------------------------*/

追記できたらあとはビルドします

make

P.S 20160822
make 時に「エラー: 不明な型名 ‘u_int’ です」となってエラーになる場合は以下のように実行してみてください
CFLAGS='-D_GNU_SOURCE'

成功すると最後は以下のようになりました
警告でまくりでしたがうまく成功しているようです

...この前にもいろいろビルドログが出ている...

...

redis-check-aof.c: 関数 ‘process’ 内:
redis-check-aof.c:118:17: 警告: 関数 ‘strcasecmp’ の暗黙的な宣言です [-Wimplicit-function-declaration]
                 if (strcasecmp(str, "multi") == 0) {
                 ^
redis-check-aof.c: 関数 ‘main’ 内:
redis-check-aof.c:177:5: 警告: 関数 ‘fileno’ の暗黙的な宣言です [-Wimplicit-function-declaration]
     if (redis_fstat(fileno(fp),&sb) == -1) {
     ^
redis-check-aof.c:198:17: 警告: 関数 ‘strncasecmp’ の暗黙的な宣言です [-Wimplicit-function-declaration]
                 strncasecmp(buf,"y",1) != 0) {
                 ^
    LINK redis-check-aof

Hint: To run 'make test' is a good idea ;)

実行するのはmakeだけでOKです(make testやmake installは不要)

動作確認

バイナリファイルが存在するか確認しましょう
redis-2.6.14/src/配下でls -ltrを実行して以下のファイルがあればOKです

-rwxr-xr-x 1 user None 2056256 11月 26 15:51 redis-server.exe
-rwxr-xr-x 1 user None 2056256 11月 26 15:51 redis-sentinel.exe
-rw-r--r-- 1 user None  139609 11月 26 15:51 redis-cli.o
-rwxr-xr-x 1 user None  424068 11月 26 15:51 redis-cli.exe
-rw-r--r-- 1 user None   52283 11月 26 15:51 redis-benchmark.o
-rwxr-xr-x 1 user None  337399 11月 26 15:51 redis-benchmark.exe
-rw-r--r-- 1 user None   44586 11月 26 15:51 redis-check-dump.o
-rwxr-xr-x 1 user None  114399 11月 26 15:51 redis-check-dump.exe
-rw-r--r-- 1 user None   23556 11月 26 15:51 redis-check-aof.o
-rwxr-xr-x 1 user None   84892 11月 26 15:51 redis-check-aof.exe

あとは

cd redis-2.6.14/src/
./redis-server.exe

でredis-serverを立ち上げて別のcygwinターミナルから

cd redis-2.6.14/src/
./redis-cli.exe

すれば問題なく使えると思います

自分の場合は何も失敗することなくスムーズにmakeビルドできましたが、makeする環境が整っていないとエラーになると思います
その場合はapt-cygがあればapt-cygで必要なライブラリやモジュールをインストールすれば問題ないと思います

参考サイト

0 件のコメント:

コメントを投稿