การติดตั้ง Ruby Gem Json ล้มเหลวบน Mavericks และ Xcode 5.1 - อาร์กิวเมนต์ที่ไม่รู้จัก: '-multiply_definedsuppress'


105

ฉันพยายามเรียกใช้ gem install json และได้รับข้อผิดพลาดต่อไปนี้

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
linking shared-object json/ext/generator.bundle
clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: *** [generator.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /opt/boxen/repo/.bundle/ruby/2.0.0/gems/json-1.8.0 for inspection.
Results logged to /opt/boxen/repo/.bundle/ruby/2.0.0/extensions/universal-darwin-13/2.0.0/json-1.8.0/gem_make.out

ฉันกำลังใช้:

Os X: 10.9.2
Xcode: 5.1 Build เวอร์ชัน 5B130a
Command Line Tools (CLT): 5.1.0.0.1.1393561416
Ruby: ruby ​​2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
Ruby Gem: 2.2 .2
GCC: 4.2.1 Apple LLVM เวอร์ชัน 5.1 (เสียงดัง -503.0.38) (อิงตาม LLVM 3.4svn)


1
ฉันทำหลายสิ่งหลายอย่างเพื่อพยายามแก้ปัญหานี้และฉันไม่รู้ว่าตัวใดแก้ไขได้อย่างแน่นอน แต่ฉันติดตั้ง Ruby เวอร์ชันใหม่ดาวน์โหลด Command Line Tools เวอร์ชันก่อนหน้า (ปลายเดือนตุลาคม) และดำเนินการคำสั่งของ @Muncken (ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future {original command}) นั่นช่วยแก้ปัญหาของฉันได้ ในกรณีเฉพาะของฉันฉันใช้ boxen เพื่อติดตั้งสภาพแวดล้อมของฉันดังนั้นคำสั่งสุดท้ายที่ฉันใช้คือ ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen - ไม่มี-fde ขอบคุณทุกคนที่ช่วย
g8M

Mavericks 10.9.3 อัปเดต Ruby เป็น: Ruby 2.0.0p451 (2014-02-24 แก้ไข 45167) [universal.x86_64-darwin13] ดูเหมือนว่าจะช่วยแก้ปัญหาได้
Shahar Hadas

1
ปัญหาคือทับทิมรุ่นเก่าเช่น @Sash กล่าว ฉันต้องอัปเดตเป็น 2.0.0p451 ด้วยตนเองจาก 2.0.0p2 .. โดยใช้ rvm: rvm ติดตั้ง ruby-2.0.0-p451 rvm ควรตั้งเป็นเวอร์ชันเริ่มต้นจากนั้นคุณต้องติดตั้งอัญมณีของคุณใหม่
Adam Spence

ฉันมีปัญหากับ rvm ruby ​​2.2.0p0 (2014-12-25 แก้ไข 49005)
Sonny Parlin

คำตอบ:


145

ฉันพบปัญหาเดียวกันแน่นอนหลังจากอัปเดต Xcode เป็น 5.1 และข่าวจาก Apple ไม่ดี จากXcode 5.1 Release Notes :

  • คอมไพเลอร์ Apple LLVM ใน Xcode 5.1 ถือว่าตัวเลือกบรรทัดคำสั่งที่ไม่รู้จักเป็นข้อผิดพลาด ปัญหานี้เกิดขึ้นเมื่อสร้างทั้งส่วนขยายเนทีฟ Python และ Ruby Gems ซึ่งในขณะนี้มีการระบุตัวเลือกคอมไพเลอร์ที่ไม่ถูกต้อง

โปรเจ็กต์ที่ใช้อ็อพชันคอมไพเลอร์ที่ไม่ถูกต้องจะต้องมีการเปลี่ยนแปลงเพื่อลบอ็อพชันเหล่านั้นออก เพื่อช่วยให้การเปลี่ยนแปลงง่ายขึ้นคอมไพลเลอร์จะยอมรับตัวเลือกในการดาวน์เกรดข้อผิดพลาดเป็นคำเตือนชั่วคราว:

-Wno-error=unused-command-line-argument-hard-error-in-future

เมื่อต้องการแก้ไขปัญหานี้ให้ตั้งค่าตัวแปรสภาพแวดล้อม ARCHFLAGS เพื่อปรับลดรุ่นข้อผิดพลาดเป็นคำเตือน

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName

ดูเหมือนว่าอัญมณีทั้งหมดที่ละเมิดตัวเลือกคอมไพเลอร์จะต้องได้รับการอัปเดตเพื่อใช้ตัวเลือกที่ถูกต้อง มันเป็นเรื่องที่ระบุไว้อย่างชัดเจนว่าตัวเลือกนี้ [ปรับลดข้อผิดพลาดในการเตือน] จะไม่ได้รับการสนับสนุนในอนาคต

บันทึกเสียงดังที่เราเห็น ( นี่จะเป็นข้อผิดพลาดอย่างหนัก (ไม่สามารถลดระดับเป็นคำเตือนได้) ในอนาคต ) สอดคล้องกับการเปลี่ยนแปลงที่ประกาศในบันทึกประจำรุ่น


ในการตอบคำถามของคุณโดยเฉพาะให้ใช้สิ่งต่อไปนี้เพื่อติดตั้ง json gem:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install json

อย่างไรก็ตามโปรดทราบว่านี่เป็นเพียงการแก้ไขชั่วคราว


1
ขอบคุณมากคุณช่วยฉันมาก ตั้งแต่การอัปเดตเป็น Xcode CLI tools เวอร์ชัน 5.1 ฉันได้รับข้อผิดพลาดจำนวนมากเมื่อพยายามรวมโครงการ Rails 4 แม้ว่าฉันจะต้องผ่านARCHFLAGSสองครั้ง: เมื่อติดตั้งอัญมณีที่เสียหายเฉพาะและเมื่อเรียกใช้ Bundler

ดีใจที่ช่วยราฟาเอลได้ ฉันใช้เวลาเกือบทั้งวันไปกับความยุ่งเหยิงเดิม ๆ
Kasper Munck

ฉันทำหลายสิ่งหลายอย่างเพื่อพยายามแก้ปัญหานี้และฉันไม่รู้ว่าวิธีใดที่แก้ไขได้ แต่ฉันติดตั้ง Ruby เวอร์ชันใหม่ดาวน์โหลด Command Line Tools เวอร์ชันก่อนหน้า (ปลายเดือนตุลาคม) และดำเนินการคำสั่งในคำตอบนี้ สิ่งนี้ช่วยแก้ปัญหาของฉันได้ ในกรณีของฉันฉันใช้กล่องเพื่อติดตั้งสภาพแวดล้อมของฉันดังนั้นคำสั่งสุดท้ายที่ฉันใช้คือ ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen - ไม่มี-fde ขอบคุณทุกคนที่ช่วย
g8M

2
ฉันไม่สามารถแก้ปัญหานี้ได้ผลสำหรับฉัน ยังคงล้มเหลวกับclang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]ความคิดใด ๆ ?
rauberdaniel

1
คุณสามารถลองส่งออกอย่างชัดเจนexport ARCHFLAGS="..."จากนั้นเรียกใช้คำสั่งคอมไพล์ของคุณในบรรทัดใหม่เช่นgem install json(ฉันกำลังรวบรวมโมดูล Python ด้วยตัวเอง) อย่างไรก็ตามอย่าลืมเพิ่ม Archflags ที่มีอยู่ก่อนหน้านี้ลงในบรรทัดมิฉะนั้นจะถูกเขียนทับ
Michiel Kauw-A-Tjoe

107

ซับเดียวเพื่อแก้ไขปัญหานั้น

curl https://gist.githubusercontent.com/Paulche/9713531/raw/1e57fbb440d36ca5607d1739cc6151f373b234b6/gistfile1.txt | sudo patch /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb

ไม่ได้ผล วิ่งตามคำสั่งและล้มเหลว:patching file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb Hunk #1 FAILED at 82. Hunk #2 FAILED at 125. 2 out of 2 hunks FAILED -- saving rejects to file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb.rej
Elijah Murray

19

ในการแก้ไขปัญหาคุณสามารถติดตั้ง Ruby เวอร์ชันล่าสุดได้ตามที่ @Sash อธิบายไว้ คุณสามารถใช้คำสั่งต่อไปนี้เพื่อทำได้ ในกรณีที่คุณติดตั้ง rvm แล้วคุณไม่จำเป็นต้องติดตั้งใหม่

#Install rvm
\curl -sSL https://get.rvm.io | bash -s stable

#Install ruby version 2.0.0-p451
rvm install ruby-2.0.0-p451

#Print ruby version to verify that it was installed successfully
ruby -v

#Install json gem
sudo gem install json

12

ปัญหาที่ Ruby ได้รับการแก้ไขแล้ว:

https://bugs.ruby-lang.org/issues/9624

ตอนนี้เราต้องรอให้ Apple อัปเดตเวอร์ชันทับทิม (2.0.0p247) เป็นเวอร์ชันล่าสุด (2.0.0p451) ซึ่งยังไม่ออกมา ... (หรือชง / macport)

อัปเดต (2014-05-15): Mavericks 10.9.3 อัปเดตทับทิมเป็น ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] และดูเหมือนว่าจะช่วยแก้ปัญหาได้


4

@Muncken ได้ให้คำตอบในการติดตั้งอัญมณีทีละคนแล้ว:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName

จากคำตอบของ Muncken ฉันได้ลองแล้วว่ามันยังใช้งานได้เมื่อใช้ bundle install

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future bundle install

ช่วยให้คำอธิบายได้ไหม?
bjb568

เหมือนที่ @Muncken กล่าว แต่เขาเพิ่งให้คำตอบgem installฉันพยายามแล้วbundle installก็ยังได้ผล
worldask

คำตอบของคุณควรสมบูรณ์ด้วยตัวเองแม้ว่าจะไม่มีบริบทของคำตอบอื่น ๆ
bjb568

ได้. ดีขึ้นมากและสมบูรณ์
bjb568

ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future นี้สามารถใช้ได้ในทุกคำสั่งที่ล้มเหลวด้วย clang: error: Unknown argument: '-multiply_definedsuppress' อันที่จริงสิ่งนี้บอกคอมไพเลอร์เสียงดังว่าข้อผิดพลาดนี้ควรถือเป็นคำเตือน
g8M

2

ในกรณีของฉันจริง ๆ แล้วฉันมีปัญหาที่คล้ายกัน แต่ไม่ใช่บนทับทิมระบบ แต่เป็นทับทิมที่ติดตั้งโดย rvm จาก OSX 10.8 และมีปัญหาหลังจากอัปเกรดเป็น OSX 10.9

การติดตั้งใหม่อย่างง่าย: rvm reinstall ruby-2.1.1


หลังจากลองทำทุกอย่างภายใต้แสงแดดเพื่อแก้ไขปัญหานี้แล้วนี่คือสิ่งที่ทำเพื่อฉัน! ขอบคุณ!
Trespassers W

1

บน OSX 10.10 ฉันมีปัญหาหลายอย่างเมื่อใช้งานrails new firstappเช่น:

ERROR:  Error installing json:
ERROR: Failed to build gem native extension.
fatal error: 'ruby/config.h' file not found

ฉันอัปเดต rvm ด้วยการกำหนดค่านี้และข้อผิดพลาดทั้งหมดก็หายไป!:

rvm get stable --auto-dotfiles

คุณสามารถบอกได้จากชื่อแอปที่ฉันเพิ่งเริ่มเล่นเกม Ruby on Rails ดังนั้นคำแนะนำข้างต้นอาจใช้ได้หรือไม่ได้ผลสำหรับคุณ


1

ซับเดียวของ Paul Chechetin ดูเหมือนจะไม่ทำงานอีกต่อไป (9/21/15) อย่างไรก็ตามการตอบกลับโพสต์ที่กล่าวถึงในคำตอบของ Pete ช่วยแก้ปัญหาให้ฉันได้:

  • (a) ติดตั้ง XCode ของ Apple จากนั้น (b) เปิดใช้งานและยอมรับเงื่อนไขการให้สิทธิ์การใช้งาน (ฉันได้ทำไปแล้ว (a) แต่ไม่ใช่ (b))
  • sudo gem uninstall compass
  • sudo gem install compass

ฉันได้อัปเดต Xcode แล้ว แต่ไม่เคยเปิดใช้งาน เมื่อฉันเปิดใช้งานระบบจะแจ้งให้ฉันยอมรับบางอย่างจากนั้นจึงต้อง "ติดตั้งส่วนประกอบ" หลังจากนั้นฉันก็ลองgem install jsonอีกครั้งและได้ผล!
Sarah Vessels

1

สิ่งเหล่านี้ไม่ได้ผลสำหรับฉัน

ในที่สุดสิ่งที่ได้ผลคือการรันคำสั่งด้วย sudo -

ติดตั้งอัญมณี byebug -v '9.0.6'


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