Ruby Gem installa Json non riesce su Mavericks e Xcode 5.1 - argomento sconosciuto: '-multiply_definedsuppress'


105

Stavo provando a eseguire gem install json e ho ricevuto il seguente errore

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

Sto usando:

Os X: 10.9.2
Xcode: 5.1 Build version 5B130a
Command Line Tools (CLT): 5.1.0.0.1.1393561416
Ruby: ruby ​​2.0.0p247 (2013-06-27 revisione 41674) [universal.x86_64-darwin13]
Ruby Gem: 2.2 .2
GCC: 4.2.1 Apple LLVM versione 5.1 (clang-503.0.38) (basato su LLVM 3.4svn)


1
Ho fatto un sacco di cose cercando di risolvere questo problema e non so esattamente quale sia stato risolto ma ho installato la nuova versione di ruby, scaricato la versione precedente di Command Line Tools (Fine ottobre) ed eseguito il comando @Muncken's answer (ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future {original command}). Questo ha risolto il mio problema. Nel mio caso specifico stavo usando boxen per installare il mio ambiente, quindi il comando finale che ho usato è stato ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-fde. Grazie a tutti quelli che hanno aiutato.
g8M

Mavericks 10.9.3 aggiorna ruby ​​a: ruby ​​2.0.0p451 (2014-02-24 revisione 45167) [universal.x86_64-darwin13] Questo sembra risolvere il problema.
Shahar Hadas

1
Il problema è con la vecchia versione di ruby ​​come dice @Sash. Ho dovuto aggiornare manualmente a 2.0.0p451 da 2.0.0p2 .. utilizzando rvm: rvm install ruby-2.0.0-p451. rvm dovrebbe impostarlo come versione predefinita, quindi devi solo reinstallare le tue gemme
Adam Spence

Ho questo problema con rvm ruby ​​2.2.0p0 (2014-12-25 revisione 49005)
Sonny Parlin

Risposte:


145

Sto riscontrando lo stesso identico problema dopo aver aggiornato Xcode a 5.1 e le notizie da Apple non sono buone. Dalle note di rilascio di Xcode 5.1 :

  • Il compilatore Apple LLVM in Xcode 5.1 tratta le opzioni della riga di comando non riconosciute come errori. Questo problema è stato riscontrato durante la creazione di estensioni native di Python e Ruby Gems, in cui sono attualmente specificate alcune opzioni del compilatore non valide.

I progetti che utilizzano opzioni del compilatore non valide dovranno essere modificati per rimuovere tali opzioni. Per facilitare la transizione, il compilatore accetterà temporaneamente un'opzione per eseguire il downgrade dell'errore in un avviso:

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

Per risolvere questo problema, impostare la variabile di ambiente ARCHFLAGS per eseguire il downgrade dell'errore in un avviso.

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

Sembra che tutte le gemme che violano le opzioni del compilatore debbano essere aggiornate per utilizzare opzioni valide. Si afferma esplicitamente che: Questa opzione [downgrade da errore ad avviso] non sarà supportata in futuro .

La nota clangore che stiamo vedendo ( questo sarà un grave errore (non può essere declassato a un avviso) in futuro ) corrisponde alla modifica annunciata nelle note di rilascio.


Per rispondere in modo specifico alla tua domanda, usa quanto segue per installare la gemma json:

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

Notare, tuttavia, che questa è solo una soluzione temporanea.


1
Grazie mille, mi hai aiutato molto. Dall'aggiornamento alla versione 5.1 di Xcode CLI tools ho ricevuto un sacco di errori durante il tentativo di raggruppare un progetto Rails 4. Anche se dovevo passare ARCHFLAGSdue volte: durante l'installazione di gemme danneggiate specifiche e durante l'esecuzione di Bundler.

Sono contento di aver potuto aiutare Rafael. Ho passato la maggior parte della mia giornata nello stesso casino.
Kasper Munck

Ho fatto molte cose cercando di risolvere questo problema e non so esattamente quale sia stato risolto, ma ho installato la nuova versione di ruby, scaricato la versione precedente di Command Line Tools (fine ottobre) ed eseguito il comando su questa risposta. Questo ha risolto i miei problemi. Nel mio caso stavo usando box per installare il mio ambiente, quindi il comando finale che ho usato è stato ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-FDE. Grazie a tutti coloro che hanno aiutato
g8M

2
Non riesco a far funzionare questa soluzione per me. Ancora fallisce con clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]qualche idea?
rauberdaniel

1
Potresti provare a esportare in modo esplicito export ARCHFLAGS="...", quindi eseguire il comando di compilazione in una nuova riga, ad esempio gem install json(Sto compilando i moduli Python da solo). A proposito, non dimenticare di aggiungere archflags esistenti in precedenza alla riga, altrimenti verranno sovrascritti.
Michiel Kauw-A-Tjoe

107

Una riga per risolvere il problema

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

Non ha funzionato. Ha eseguito il comando e ha avuto errori: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

Per risolvere il problema puoi installare la versione più recente di ruby ​​come descritto da @Sash. È possibile utilizzare i seguenti comandi per farlo. Nel caso in cui hai già installato rvm, non è necessario reinstallarlo.

#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

Problema già affrontato da Ruby:

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

ora dobbiamo solo aspettare che Apple aggiorni la sua versione ruby ​​(2.0.0p247) a quella successiva all'ultima (2.0.0p451) che non è ancora uscita ... (o preparala / macportala)

Aggiornamento (2014-05-15): Mavericks 10.9.3 aggiorna ruby ​​a ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] E questo sembra risolvere il problema.


4

@Muncken ha già fornito una risposta per installare gem uno per uno:

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

Sulla base della risposta di Muncken, ho provato che funziona anche durante l'utilizzo bundle install

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

Puoi dare una descrizione?
bjb568

come ha detto @Muncken, ma ha appena fornito la risposta gem install, ho provato che bundle installfunziona anche
worldask

La tua risposta dovrebbe essere completa da sola, anche senza il contesto di altre risposte.
bjb568

Sì. Molto meglio e completo.
bjb568

Questo ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future può essere utilizzato in ogni comando che fallisce con clang: errore: argomento sconosciuto: '-multiply_definedsuppress'. In realtà questo dice al compilatore clang che questo errore dovrebbe essere trattato come un avvertimento
g8M

2

Nel mio caso, ho effettivamente un problema simile, ma non sul sistema ruby, ma su rubies installato da rvm da OSX 10.8, e ha problemi dopo l'aggiornamento a OSX 10.9.

Una semplice reinstallazione funziona: rvm reinstall ruby-2.1.1


Dopo aver provato tutto sotto il sole per risolvere questo problema, questo è ciò che ha fatto per me! Grazie!
Trespassers W

1

Su OSX 10.10, ho avuto diversi problemi durante l'esecuzione rails new firstappcome:

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

Ho aggiornato rvm con questa configurazione e tutti gli errori sono spariti !:

rvm get stable --auto-dotfiles

Puoi dire dal nome dell'app che ho appena iniziato a giocherellare con Ruby on Rails, quindi il consiglio di cui sopra potrebbe o non potrebbe funzionare per te.


1

La battuta di Paul Chechetin sembra non funzionare più (21/9/15). Tuttavia, questa risposta al post menzionato nella risposta di Pete ha risolto il problema per me:

  • (a) Installa XCode di Apple, quindi (b) avvialo e accetta i termini di licenza (avevo fatto (a), ma non (b).)
  • sudo gem uninstall compass
  • sudo gem install compass

Avevo aggiornato Xcode ma non l'avevo mai lanciato. Quando l'ho lanciato, mi ha spinto ad accettare qualcosa, quindi ha dovuto "installare i componenti". Dopodiché, ho provato di gem install jsonnuovo e ha funzionato!
Sarah Vessels

1

Nessuno di questi ha funzionato per me.

Ciò che alla fine ha funzionato è eseguire il comando con un sudo -

gem install byebug -v '9.0.6'


-1

Ho usato una soluzione semplice ... installare tramite brew

brew install name

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.