jemalloc และข้อผิดพลาดอื่น ๆ ทำให้ redis บน centos 6.4


41

ฉันกำลังตั้งค่าระบบ 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 โดยตรง (จากพื้นที่ / src ของ redis tarball) ข้อผิดพลาดอื่น ๆ ได้แก่ :

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

ฉันไม่แน่ใจว่าทำไม deps ที่ไม่ได้สร้างฉันคิดว่าพวกเขาในอดีต อย่างไรก็ตามสิ่งนี้ทำให้ฉันทำงานได้กับ Redis รุ่นที่ฉันต้องการ


1
ขอบคุณนี้ใช้งานได้กับผมบน Centos 6.4 บน EC2
theTuxRacer

2
ปรับปรุง: unset ARCH; make hiredisทำงานนี้: จากgithub.com/redis/hiredis-rb/issues/2
Daniel

1
ทำงานสำหรับฉันใน centos 7
ความคิด

1
ทำงานเหมือนมีเสน่ห์ใน Ubuntu 16.04 EC2 เช่นกัน
Karthikeyan

1
ปัญหาเดียวกันใน Ubuntu 18.04 และการแก้ไขนี้ก็ใช้ได้สำหรับฉันเช่นกัน
Kevin Hooke

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

ไม่ทำงานสำหรับฉัน
Daniel

4

ในระบบนี้/tmpถูกเมานnoexecต์

Redis รันเชลล์สคริปต์จำนวนหนึ่ง/tmpระหว่างการติดตั้งดังนั้นโซลูชันคือการเมานต์ใหม่/tmpโดยไม่มีnoexecแฟล็ก สิ่งนี้ทำได้ชั่วคราว:

mount -o remount,exec /tmp

ฉันควรเพิ่มว่าโซลูชันนี้ใช้กับ redis 2.x และ 3.x ทุกรุ่น (4.x เป็นระบบปฏิบัติการที่ไม่รู้จักฉัน)


1
วิธีนี้แก้ไขข้อผิดพลาดที่คุณโพสต์ไว้ในนรกได้อย่างไร?!
Michael Hampton

เฮ้ฉันไม่รู้ แต่ฉันรู้ว่าเทคโนโลยีที่ฉันกำลังทำงานด้วยแนะนำและมันก็แก้ปัญหาได้ ฉันได้ติดตั้ง / สร้างใหม่แล้วหลายครั้งและไม่เคยมีปัญหานี้มาก่อน

@MichaelHampton ข้อผิดพลาดบางอย่างเกิดจากข้อผิดพลาด "การเข้าถึงถูกปฏิเสธ" ในระหว่างการทำ การโพสต์ข้อผิดพลาดเป็นข้อผิดพลาดครั้งแรก (ฉันเชื่อว่าผลลัพธ์ที่ออกมาจะเป็น loooong)

4
คุณควรผ่านรายการผลลัพธ์ที่สมบูรณ์ คำถามและคำตอบนี้ไม่สมเหตุสมผลเลย
Michael Hampton

เป็นไปได้ว่าระบบใน 32 บิตของคำถาม? @MichaelHampton ในกรณีนี้ลองสร้าง 32 บิต
Roman M

1

คุณลองติดตั้งแพ็คเกจที่ขอหรือไม่

yum install jemalloc-devel

สามารถพบได้ในที่เก็บ EPEL ซึ่งคุณควรเพิ่มไว้ในระบบ CentOS ของคุณแล้ว

ลองคิดดูสิมันredisอยู่ใน EPEL ...


ใช่ฉันลองแล้ว .... ไม่ช่วย .... แก้ปัญหาอยู่ด้านบน

1

แก้ไขสิ่งนี้สำหรับ Redis 3.0.2 บน RHEL-6.6 ดังนี้:

จากไดเร็กทอรีการติดตั้ง Redis

  1. Run ./deps/update-jemalloc.sh 3.6.0(โดยที่ 3.6.0 เป็น jemalloc เวอร์ชันล่าสุดที่ทำงานร่วมกับ Redis 3.0.2 ในการเขียนนี้)

  2. วิ่ง make distclean && make


1

มันเกิดขึ้นเนื่องจากทำให้ไฟล์สกปรกดังนั้นก่อนที่จะทำงาน

$ sudo make  

รันสิ่งนี้:

$ make distclean

แน่ใจว่ามันจะแก้ปัญหาการพึ่งพาทั้งหมด


0

ปัญหาเดียวกับที่ฉันเจอเมื่อทำการ redis-3.0.0 บน CentOS-6.6x86 ลองทำมันดู

make MALLOC=libc

0

ฉันมีปัญหานี้หลังจากที่ฉันได้ฆ่าสิ่งก่อสร้างทางผ่านและพยายามที่จะทำให้มันอีกครั้ง make cleanไม่ได้ช่วยฉันจึง nuked ไดเรกทอรีและเริ่มต้นใหม่และรวบรวมได้ดี


0

ในตอนแรกหลังจากแตกไฟล์จากredis.<version>.tar.gzmake ไม่สำเร็จเนื่องจากไม่มีการติดตั้ง gcc:

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.