web-dev-qa-db-ja.com

CentOS 6.4でredisを行うjemallocおよびその他のエラー

Redisを使用して、新しい専用のcentos 6.4システムをセットアップしています。 redisを何度もインストールしましたが、この問題に遭遇したことはありません(centos 6.4を以前に使用したことがありません)。

cd redis-2.6.16
Sudo make install

エラー:

MAKE jemalloc
cd jemalloc && ./configure --with-lg-quantum=3 --with-jemalloc-prefix=je_ --enable-cc-silence CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS=""
/bin/sh: ./configure: Permission denied
make[2]: *** [jemalloc] Error 126
make[2]: Leaving directory `/tmp/redis32/redis-3.2.6/deps'
make[1]: [persist-settings] Error 2 (ignored)


    sh: ./mkreleasehdr.sh: Permission denied
and later:
    zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
    zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

Jemallocを直接(redis tarballの/ src領域から)ビルドしようとすると、他のエラーには以下が含まれます。

cd src && make jemalloc
sh: ./mkreleasehdr.sh: Permission denied
make[1]: Entering directory `/tmp/rediswork/redis-2.6.16/src'
make[1]: *** No rule to make target `jemalloc'.  Stop.
make[1]: Leaving directory `/tmp/rediswork/redis-2.6.16/src'
make: *** [jemalloc] Error 2

私もredis 2.6.7を試してみましたが、同じ問題があります。

私はあちこちを掘り下げており、進むべき道を見つけることができません。

このシステムでは/tmpがマウントされましたnoexec

Redisは、インストール中に/tmpからいくつかのシェルスクリプトを実行するため、noexecフラグなしで/tmpを再マウントすることが解決策です。これは一時的にこれを行います:

mount -o remount,exec /tmp

この解決策はすべてのredis 2.xおよび3.xバージョンに適用されることを追加する必要があります(4.xは私にはあまり知られていません)

CentOS 6.4で同じ問題に遭遇し、次のコマンドを実行する必要がありました。

cd deps
make hiredis jemalloc linenoise lua geohash-int
cd ..
make install

なぜdepが構築されなかったのかは分かりませんが、過去にあったと思いました。ただし、これにより、必要なバージョンのredisを使用できるようになりました。

105
Ray Hunter

パッケージ(gcc)がないために最初の障害が発生した後も、同じエラーが発生しました。
gccをインストールした後、もう一度makeを試行すると、これらのエラーが発生しました:

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

これらのエラーは、最初のmakeコマンドの失敗後にここに残ったいくつかのファイルが原因でした。どうやら私は次のコマンドでこれらのファイルをクリーンアップする必要がありました:

make distclean  

そして、再度makeを実行すると、うまくいきました。

ソース: https://groups.google.com/forum/#!topic/redis-db/-guYpX2OCSk

81
Clemorphy

要求されたパッケージをインストールしてみましたか?

yum install jemalloc-devel

これはEPELリポジトリにあります。これは、CentOSシステムにすでに追加されているはずです。

考えてみてください、redisもEPELにあります...

1
Michael Hampton

ダーティメイクファイルが原因で発生するため、実行前に

$ Sudo make  

これを実行してください:

$ make distclean

すべての依存関係が解決されることを確認してください。

1
manendra

次のように、RHEL-6.6上のRedis 3.0.2でこれを解決しました。

Redisインストールディレクトリから、

  1. ./deps/update-jemalloc.sh 3.6.0を実行します(ここで3.6.0は、この記事の執筆時点でRedis 3.0.2と連携するjemallocの最新バージョンです)

  2. make distclean && makeを実行します

1
KAGasser

ビルドを途中で終了してもう一度作成しようとしたところ、この問題が発生しました。 make cleanは役に立たなかったので、ディレクトリを削除してやり直しましたが、正常にコンパイルされました。

0
nullability

centOS-6.6x86でredis-3.0.0を作成したときに遭遇したのと同じ問題、これを作成してみてください。

make MALLOC=libc
0
gokaka

最初に、gccがインストールされていなかったため、redis.<version>.tar.gzからのファイルの抽出に失敗しました。

gcc: Command not found

だから私はgccをインストールしました:

Sudo yum install gcc-c++

それから私はもう一度メイクを実行しました、私は受け取りました:

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

Redis extracedフォルダーを削除し、redis.<version>.tar.gzから再抽出しました。今回はgccがインストールされているため、makeを実行するとすべてが正常に実行されました。私はredisで抽出されたディレクトリ内から実行しました:

Sudo make install
0
App Work