CentOS 6.4でredisを作成するjemallocおよびその他のエラー


41

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も試しましたが、同じ問題があります。

私はあちこち掘りましたが、先に進む道はありません。


回答:


100

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

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

デップが構築されていない理由がわからない、私は彼らが過去にあったと思った。ただし、これにより、必要なバージョンのredisを使用して実行できました。


1
おかげで、これはEC2のcentos 6.4インスタンスで機能しました。
theTuxRacer 14

2
更新:これは機能しました:unset ARCH; make hiredisgithub.com/redis/hiredis-rb/issues/2
ダニエル

1
CentOSの7の上に私のために働いた
アイデア

1
Ubuntuの16.04 EC2インスタンスでの魅力のように働いたとしても
カーティケヤン

1
同じUbuntuの18.04で問題とこの修正は、あまりにも私のために働いた
ケビン・フックの

78

パッケージ(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


これは、Ubuntu 14.04.2 LTSで機能しました。私は同じシナリオを持っていました:とをmakeインストールする前に実行build-essentialしましたtcl8.5
NathanAldenSr

私のために働いていなかった
ダニエル

4

このシステム/tmpに搭載されましたnoexec

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

mount -o remount,exec /tmp

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


1
質問で投稿したエラーは、これでどのように解決しますか?!
マイケルハンプトン

ねえ、私は知らない。しかし、私が働いている技術がそれを提案し、解決したことを知っています。私はredisを数回インストール/ビルドしましたが、この問題に遭遇したことはありません。

@MichaelHamptonのエラーの一部は、作成中の「アクセス拒否」エラーです。投稿されたエラーが最初のエラーです(makeの出力は長いと思います)。

4
完全な出力を投稿する必要があります。この質問と回答は、まったく意味をなしません。
マイケルハンプトン

問題のシステムが32ビットである可能性がありますか?@MichaelHamptonその場合、make 32bitを試してください。
ローマンM

1

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

yum install jemalloc-devel

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

考えredisてみると、EPELにもあります...


はい、私はそれを試みました....助けにはなりませんでした....解決策は上記です。

1

次のように、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

メイクファイルが汚れているために発生するため、実行する前に

$ sudo make  

これを実行します:

$ make distclean

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


0

CentOS-6.6x86でredis-3.0.0を作成したときに出会ったのと同じ問題があります。これを試してみてください。

make MALLOC=libc

0

ビルドを途中で強制終了し、再度作成しようとした後、この問題が発生しました。make clean助けにはならなかったので、ディレクトリを削除して最初からやり直すと、問題なくコンパイルされました。


0

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

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の余分なフォルダーを削除し、そこから再抽出しました。redis.<version>.tar.gz今回はgccがインストールされているので、実行するとすべてが正常に実行されましたmake。私はredis抽出ディレクトリ内から実行しました:

sudo make install
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.