Instalasi Ruby Gem Json gagal pada Mavericks dan Xcode 5.1 - argumen tidak diketahui: '-multiply_definedsuppress'

105

Saya mencoba menjalankan gem install json dan mendapatkan kesalahan berikut

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

Saya menggunakan:

Os X: 10.9.2
Xcode: 5.1 Bangun versi 5B130a
Command Line Tools (CLT): 5.1.0.0.1.1393561416
Ruby: ruby ​​2.0.0p247 (2013-06-27 revisi 41674) [universal.x86_64-darwin13]
Permata Ruby: 2.2 .2
GCC: 4.2.1 Apple LLVM versi 5.1 (clang-503.0.38) (berdasarkan LLVM 3.4svn)

g8M
sumber
1
Saya melakukan banyak hal untuk mencoba memecahkan masalah ini dan saya tidak tahu persis mana yang dapat diselesaikan tetapi saya menginstal versi ruby ​​yang baru, mengunduh versi Command Line Tools sebelumnya (Akhir Oktober) dan menjalankan perintah @Muncken jawaban (ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future {perintah asli}). Itu memecahkan masalah saya. Dalam kasus khusus saya, saya menggunakan boxen untuk menginstal lingkungan saya sehingga perintah terakhir yang saya gunakan adalah ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-fde. Terima kasih semua yang telah membantu.
g8M
Mavericks 10.9.3 memperbarui ruby ​​ke: ruby ​​2.0.0p451 (revisi 2014-02-24 45167) [universal.x86_64-darwin13] Tampaknya ini menyelesaikan masalah.
Shahar Hadas
1
Masalahnya ada pada ruby ​​versi lama seperti yang dikatakan @Sash. Saya harus memperbarui ke 2.0.0p451 secara manual dari 2.0.0p2 .. menggunakan rvm: rvm install ruby-2.0.0-p451. rvm harus mengaturnya sebagai versi default maka Anda hanya perlu menginstal ulang permata Anda
Adam Spence
Saya mengalami masalah ini dengan rvm ruby ​​2.2.0p0 (revisi 2014-12-25 49005)
Sonny Parlin

Jawaban:

145

Saya mengalami masalah yang sama persis setelah memperbarui Xcode ke 5.1 dan berita dari Apple tidak bagus. Dari Catatan Rilis Xcode 5.1 :

  • Kompiler LLVM Apple di Xcode 5.1 memperlakukan opsi baris perintah yang tidak dikenal sebagai kesalahan. Masalah ini telah terlihat saat membangun ekstensi asli Python dan Permata Ruby, di mana beberapa opsi kompilator yang tidak valid saat ini ditentukan.

Proyek yang menggunakan opsi kompilator yang tidak valid perlu diubah untuk menghapus opsi tersebut. Untuk membantu memudahkan transisi itu, compiler akan menerima sementara opsi untuk menurunkan kesalahan menjadi peringatan:

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

Untuk mengatasi masalah ini, setel variabel lingkungan ARCHFLAGS untuk menurunkan versi kesalahan menjadi peringatan.

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

Tampaknya semua permata yang melanggar opsi kompiler harus diperbarui untuk menggunakan opsi yang valid. Dinyatakan secara eksplisit bahwa: Opsi ini [downgrading error to warning] tidak akan didukung di masa mendatang .

Catatan dentang yang kami lihat ( ini akan menjadi kesalahan yang sulit (tidak dapat diturunkan menjadi peringatan) di masa mendatang ) sesuai dengan perubahan yang diumumkan dalam catatan rilis.


Untuk menjawab pertanyaan Anda secara khusus, gunakan yang berikut ini untuk menginstal permata json:

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

Perhatikan, bagaimanapun, bahwa ini hanya perbaikan sementara.

Kasper Munck
sumber
1
Terima kasih banyak, Anda telah banyak membantu saya. Sejak pembaruan ke alat Xcode CLI versi 5.1, saya mendapatkan banyak kesalahan saat mencoba memaketkan proyek Rails 4. Meskipun saya harus melewati ARCHFLAGSdua kali: saat menginstal permata rusak tertentu dan saat menjalankan Bundler.
Senang bisa membantu Rafael. Saya menghabiskan sebagian besar hari saya dalam kekacauan yang sama.
Kasper Munck
Saya melakukan banyak hal untuk mencoba memecahkan masalah ini dan saya tidak tahu persis mana yang dapat diselesaikan tetapi saya menginstal versi ruby ​​baru, mengunduh versi Command Line Tools sebelumnya (Akhir Oktober) dan menjalankan perintah pada jawaban ini. Ini memecahkan masalah saya. Dalam kasus saya, saya menggunakan kotak untuk menginstal lingkungan saya sehingga perintah terakhir yang saya gunakan adalah ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-fde. Terima kasih semua yang telah membantu
g8M
2
Saya tidak bisa mendapatkan solusi ini bekerja untuk saya. Masih gagal dengan clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]Ada ide?
rauberdaniel
1
Anda dapat mencoba mengekspor secara eksplisit export ARCHFLAGS="...", lalu menjalankan perintah kompilasi Anda di baris baru, seperti gem install json(Saya sedang mengompilasi modul Python sendiri). Ngomong-ngomong, jangan lupa untuk menambahkan archflag yang ada sebelumnya ke baris, atau mereka akan ditimpa.
Michiel Kauw-A-Tjoe
107

Satu baris untuk memperbaikinya

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
Paul Brit
sumber
Tidak berhasil. Menjalankan perintah dan mengalami kegagalan: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

Untuk mengatasi masalah ini, Anda dapat menginstal ruby ​​versi terbaru seperti yang dijelaskan oleh @Sash. Anda dapat menggunakan perintah berikut untuk melakukannya. Jika Anda sudah menginstal rvm, Anda tidak perlu menginstalnya kembali.

#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
Sbhklr
sumber
12

Masalah sudah ditangani oleh Ruby:

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

sekarang kita hanya perlu menunggu Apple untuk memperbarui versi ruby ​​mereka (2.0.0p247) ke versi terbaru (2.0.0p451) yang belum keluar ... (atau buat / macport itu)

Perbarui (2014-05-15): Mavericks 10.9.3 memperbarui ruby ​​ke ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] Dan ini tampaknya menyelesaikan masalah.

Shahar Hadas
sumber
4

@Muncken sudah memberikan jawaban untuk memasang gem satu per satu:

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

Berdasarkan jawaban Muncken, saya sudah mencobanya juga berfungsi saat menggunakan bundle install

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future bundle install
worldask
sumber
Bisakah Anda memberikan gambaran?
bjb568
seperti yang dikatakan @Muncken, tetapi dia hanya memberikan jawabannya gem install, saya mencoba itu bundle installjuga berfungsi
worldask
Jawaban Anda harus lengkap dengan sendirinya, bahkan tanpa konteks jawaban lain.
bjb568
Ya. Jauh lebih baik dan lengkap.
bjb568
ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future ini dapat digunakan di setiap perintah yang gagal dengan clang: error: argumen tidak diketahui: '-multiply_definedsuppress'. Sebenarnya ini memberi tahu compiler clang bahwa kesalahan ini harus diperlakukan sebagai peringatan
g8M
2

Dalam kasus saya, saya sebenarnya memiliki masalah yang sama, tetapi tidak pada ruby ​​sistem, tetapi pada rubi yang diinstal oleh rvm dari OSX 10.8, dan memiliki masalah setelah memutakhirkan ke OSX 10.9.

Penginstalan ulang sederhana berfungsi: rvm reinstall ruby-2.1.1

xbeta.dll
sumber
Setelah mencoba segalanya untuk memperbaiki masalah ini, inilah yang berhasil untuk saya! Terima kasih!
Pelanggar W
1

Di OSX 10.10, saya mengalami beberapa masalah saat menjalankan rails new firstappseperti:

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

Saya memperbarui rvm dengan konfigurasi ini dan semua kesalahan hilang !:

rvm get stable --auto-dotfiles

Anda dapat mengetahui dari nama aplikasinya bahwa saya baru saja mulai mengutak-atik Ruby on Rails, jadi saran di atas mungkin berhasil atau tidak untuk Anda.


sumber
1

Satu baris Paul Chechetin tampaknya tidak berfungsi lagi (9/21/15). Namun, balasan untuk postingan yang disebutkan dalam balasan Pete ini memecahkan masalah saya:

  • (a) Instal XCode Apple, lalu (b) luncurkan dan terima persyaratan lisensi (saya telah melakukan (a), tetapi tidak (b).)
  • sudo gem uninstall compass
  • sudo gem install compass
Menandai
sumber
Saya telah memperbarui Xcode tetapi belum pernah meluncurkannya. Ketika saya meluncurkannya, itu mendorong saya untuk menerima sesuatu, lalu harus "menginstal komponen." Setelah itu, saya mencoba gem install jsonlagi dan berhasil!
Sarah Vessels
1

Tak satu pun dari ini berhasil untuk saya.

Apa yang akhirnya berhasil adalah menjalankan perintah dengan sudo -

pasang permata byebug -v '9.0.6'

Alex Jose
sumber
-1

Saya menggunakan solusi sederhana ... instal melalui minuman

brew install name

pengguna3800976
sumber