118 votes

Comment faire fonctionner Ruby / Homebrew / RVM sur Yosemite ?

Après l'installation de Yosemite, je n'ai pas pu lancer brew ou ruby.

J'ai obtenu cette erreur lors de la mise à jour de Brew :

/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory
/usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

j'obtiens cette erreur sur l'irb :

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in mkdir': Permission denied - /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14 (Errno::EACCES) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:infu_mkdir'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:219:in block (2 levels) in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:inreverse_each'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:in block in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:ineach'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:in mkdir_p' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:210:inwrite_gem_make_out'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:132:in build_error' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:171:inrescue in build_extension'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:156:in build_extension' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:198:inblock in build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:in each' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1436:in block in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/user_interaction.rb:45:inuse_ui'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1434:in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/stub_specification.rb:60:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/basic_specification.rb:56:in contains_requirable_file?' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:925:inblock in find_inactive_by_path'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in each' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:infind'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in find_inactive_by_path' from /Library/Ruby/Site/2.0.0/rubygems.rb:185:intry_activate'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:150:in block in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:158:inblock in each_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:167:in each_sublocale' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:157:ineach_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:145:in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:124:infind'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:108:in load' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:32:ininitialize'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:in new' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:ininit_config'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:16:in setup' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb.rb:380:instart'
from /usr/bin/irb:12:in `'

281voto

raz0r Points 1195

Cette erreur peut être facilement corrigée en suivant les étapes suivantes :

1) Terminal ouvert

2) Type nano /usr/local/Library/brew.rb

3) Dans la première ligne, remplacez "1.8" par "Current" :

#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0

via http://blog.ic3man.gr/2014/06/homebrew-ruby-bad-interpreter-no-such-file-or-directory/

14 votes

Lorsque j'effectue ce changement, j'obtiens l'erreur "Homebrew requiert Leopard ou une version plus récente. Pour le support de Tiger, voir : github.com/mistydemeo/tigerbrew "même si je fonctionne avec Yosemite

4 votes

Ce qui donne un Please, commit your changes or stash them before you can merge. lorsque vous essayez de brew update malheureusement.

10 votes

La lettre "C" doit être mise en majuscule pour l'expression "courant". #!/System/Library/Frameworks/Ruby.framework/Versions/Current‌​/usr/bin/ruby -W0

39voto

Jason R Points 321

J'ai mis à jour vers Yosemite et j'ai découvert plus tard que brew a été brisée.

/usr/local/bin/brew: /usr/local/Library/brew.rb: 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

Si vous n'avez pas encore apporté de modifications au brassage, voici ce que je vous recommande. Sinon, lisez ce qui suit.

  1. cd /System/Library/Frameworks/Ruby.framework/Versions/
  2. sudo ln -s Current 1.8
  3. brew update
  4. sudo unlink 1.8

Vous avez déjà apporté des modifications aux fichiers de brassage et vous êtes bloqué dans un désordre git ?

J'ai essayé de modifier /usr/local/Library/brew.rb mais la modification locale de mon repo git a empêché brew update de tirer vers le bas les mises à jour. J'ai essayé d'autres solutions mentionnées sur cette page et sur d'autres sites et je me suis retrouvé avec un désordre git et tout ce que je voulais faire était d'annuler tout ce que j'avais fait à brew.

Je me suis engagé à changer, mais cela n'a fait qu'empirer les choses. Finalement, j'ai dû annuler mes validations et git reset --hard HEAD~1 jusqu'à ce que je sois au bon niveau d'engagement. J'avais aussi des fichiers non versionnés en pagaille (j'ai changé les permissions des fichiers dans /usr/Local) donc j'ai fait un git clean -f -d qui a supprimé tous les fichiers et répertoires non versionnés et m'a ramené au point de départ, avant toute modification.

3 votes

Cette réponse a fonctionné (y compris l'annulation du désordre de git) alors que la réponse la plus votée m'a laissé avec un problème de git.

0 votes

Très utile après la mise à jour de votre système ! Merci de votre compréhension.

0 votes

Cela échoue dans El Capitan avec "ln : operation not permitted" à cause du mode sans racine. Vous pouvez trouver une solution de contournement ici : apple.stackexchange.com/questions/196224/

37voto

eden Points 304

Marche à suivre pour y remédier :

  1. Installer les outils de ligne de commande pour Xcode 6

  2. Réinstaller le brassage :

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. Une fois brew installé, rvm fonctionnera :

    rvm install ruby

Ça a marché pour moi, yahoo !

0 votes

J'ai réussi à faire fonctionner ruby, mais cela ne fonctionne toujours pas pour moi : stackoverflow.com/questions/24113251/

0 votes

J'ai supprimé complètement rvm et nginx et je les ai réinstallés après avoir installé les outils de développement Xcode 6. Maintenant cela fonctionne comme un charme.

1 votes

Cela a fonctionné pour moi aussi, je voulais juste préciser qu'il fallait exécuter cette commande pour l'étape 1 : xcode-select --install

33voto

Otto Points 5166

La modification du script signifie que brew update ne fonctionnera pas ; il y a des modifications locales dans les fichiers suivis, ce qui entraîne la création d'un fichier de suivi. git pull à l'échec.

J'ai procédé de la manière suivante, que je soupçonne d'être plus propre :

cd /usr/local/Library
git pull -q origin refs/heads/master:refs/remotes/origin/master

Il n'y a pas de plaintes de la part de brew doctor .

0 votes

Lorsque je fais cela, j'obtiens une erreur concernant des fichiers non suivis qui doivent être déplacés avant la fusion. Ces fichiers se trouvent tous dans Library/Formula/.

0 votes

En supposant que vous n'ayez rien modifié, lorsque cela m'arrive, cela signifie que je dois lancer l'application brew doctor et suivre quelques instructions. Le problème étant que brew doctor ne fonctionne probablement pas pour vous, si vous êtes ici. Vous pouvez peut-être juste git stash et continuer.

7voto

Eli Points 5047

Il s'agit d'un conglomérat de réponses provenant d'autres posts et d'un peu de recherche sur Google, mais je me suis dit qu'il fallait que je le mette en ligne pour que la réponse complète se trouve en un seul endroit. Plus précisément, cela permet de faire fonctionner les choses maintenant, mais aussi de faire des mises à jour de brassage comme d'habitude et de tout nettoyer à nouveau.

  1. Ouvrir /usr/local/Bibliothèque/brew.rb (emacs/vi/nano/whatever)
  2. Modifier la première ligne comme suit : #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0 . Vous changez simplement le "1.8" qui était dans cette ligne en "Current" (assurez-vous de garder le "C" majuscule sinon git s'embrouillera plus tard).
  3. cd $(brew --repository)
  4. git add Library/brew.rb
  5. git commit -m "upgrading to ruby 2.0"
  6. brew update (ou sudo brew update si votre brew est configuré pour n'effectuer des changements de système qu'avec sudo)

Crédit : une grande partie de ces informations provient de ici Bien que je recommande vivement de ne pas le faire git commit -am dans votre dossier /usr/local.

0 votes

C'est la seule solution qui a fonctionné pour moi. C'est à cause de ce genre de problèmes que je m'éloigne de Ruby et Rails pour ma prochaine application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X