Comment faire fonctionner Ruby / Homebrew / RVM sur Yosemite?


118

Après avoir installé Yosemite, je n'ai pas pu exécuter d'infusion ou de rubis.

J'obtenais cette erreur lors de la mise à jour de la bière:

/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

obtenir cette erreur sur 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 `'

Réponses:


281

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

1) Terminal ouvert

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

3) Dans la première ligne, remplacez "1,8" par "Actuel", cela devrait donc ressembler à ceci:

#!/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
lorsque j'effectue cette modification, j'obtiens l'erreur "Homebrew requiert Leopard ou supérieur. Pour le support Tiger, voir: github.com/mistydemeo/tigerbrew " même si j'utilise yosemite
scientiffic

4
cela donne une Please, commit your changes or stash them before you can merge.erreur lorsque vous essayez brew updatemalheureusement.
Naoise Golden

10
"C" doit être en majuscule pour Current#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Diablo

@Diablo Je crois que cela a été mis à jour dans 10.10.1. Dans la version précédente, le "C" n'était pas en majuscule. Merci.
raz0r

1
J'ai également eu le Homebrew requires Leopard or higher- j'ai suivi la réponse ci-dessous installer les outils de ligne de commande xcode et cela fonctionne maintenant: stackoverflow.com/a/24225960/1062936
greg

39

J'ai mis à jour vers Yosemite et j'ai découvert plus tard qu'il brewétait cassé.

/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 à l'infusion, voici ce que je recommande. Sinon, lisez plus loin ci-dessous.

  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à modifié les fichiers de brassage et coincé dans un git mess?

J'ai essayé de modifier /usr/local/Library/brew.rbmais la modification locale de mon dépôt git empêchait brew updatede retirer les mises à jour. J'ai essayé d'autres solutions mentionnées sur cette page et à partir d'autres sites et je me suis retrouvé avec un git mess et tout ce que je voulais faire était d'annuler tout ce que j'avais fait pour brasser.

J'ai commis mon changement mais cela a empiré les choses. Finalement, j'ai dû annuler mes commits et git reset --hard HEAD~1jusqu'à ce que je sois au bon commit. J'avais aussi un fouillis de fichiers non versionnés (j'ai changé les autorisations de fichiers dans / usr / Local), donc j'ai fait un git clean -f -dqui a supprimé tous les fichiers et répertoires non versionnés et m'a permis de revenir à mon point de départ avant d'apporter des modifications.


3
Cette réponse a fonctionné (y compris l'annulation de git mess) alors que la réponse la plus votée m'a laissé un problème git.
Steve M

Très utile après la mise à niveau de votre système! Merci
coding addicted

Cela échoue dans El Capitan avec "ln: opération non autorisée" en raison du mode sans racine. Vous pouvez trouver une solution de contournement ici: apple.stackexchange.com/questions/196224/…
Jorge Ortiz

37

Étapes pour y remédier:

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

  2. Réinstaller l'infusion:

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

    rvm install ruby

A travaillé pour moi, yahoo!


J'ai eu ruby ​​opérationnel, mais cela ne fonctionne toujours pas pour moi: stackoverflow.com/questions/24113251/…
eden

J'ai complètement supprimé rvm et nginx et les ai réinstallés après l'installation des outils de développement Xcode 6. Maintenant, ça marche comme un charme.
sans

1
Cela a fonctionné pour moi aussi, je voulais juste clarifier pour exécuter cette commande pour l'étape 1: xcode-select --install
James Toomey

33

Modifier le script signifie que brew updatecela ne fonctionnera pas; des modifications locales des fichiers suivis entraînent l' git pulléchec du.

J'ai fait ceci, ce que je soupçonne est plus propre:

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

Il n'y a aucune plainte de brew doctor.


Lorsque je fais cela, j'obtiens une erreur concernant les fichiers non suivis qui doivent être déplacés avant la fusion. Ce sont tous les fichiers dans Library / Formula /.
septerr

En supposant que vous n'ayez rien modifié, lorsque cela m'arrive, cela signifie que je dois courir brew doctoret suivre certaines instructions. Le problème est que brew doctorcela ne fonctionne probablement pas pour vous, si vous êtes ici. Vous pourrez peut-être le faire git stashet continuer.
Otto

7

Il s'agit d'un conglomérat à partir des réponses des messages d'autres personnes ainsi que d'un peu de fouille sur Google, mais j'ai pensé que je l'avais mis en place pour qu'une réponse complète se trouve au même endroit. Plus précisément, cela permet aux choses de fonctionner maintenant, mais vous permet également de faire des mises à jour d'infusion comme d'habitude et de tout nettoyer à nouveau.

  1. Ouvrez /usr/local/Library/brew.rb (emacs / vi / nano / peu importe)
  2. Modifiez la première ligne à lire: #!/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 sera confus 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 infusion est configurée pour ne faire que des changements système avec sudo)

Crédit: une grande partie de cela vient d' ici , bien que je déconseille vraiment de le faire git commit -amdans votre dossier / usr / local.


C'est la seule solution qui a fonctionné pour moi. C'est à cause des fréquents désordres super laids comme celui-ci que je m'éloigne de Ruby and Rails pour ma prochaine application.
Deborah le

3

Comme celui dit précédemment: 1) Passer à l'actuel 2) installer xcode 6

Si vous avez maintenant d'autres problèmes avec brew et ruby, cela devrait aider: d'une manière ou d'une autre, brew a besoin de ruby ​​sur la version 1.8, alors créez le dossier:

sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin

et créez un lien symbolique:

sudo ln -s /usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

Merci! C'était la seule solution qui fonctionnait pour moi;)
alejandromp


1

J'ai corrigé cela comme suit :

  1. sudo chown -R $(whoami):admin /usr/local
  2. cd $(brew --prefix) && git fetch origin && git reset --hard origin/master


0

Remarque: ne procédez comme suit que si vous vous retrouvez dans un état complètement défaillant, car cela est très DANGEREUX

Par exemple, j'ai continué à recevoir

$ sudo ln -s Courant 1.8

$ brew mise à jour

/usr/local/Library/brew.rb:18:in ': aide de méthode non définie?' pour [«update»]: Array (NoMethodError)

Je viens de comprendre… (peu importe la commande, il suffit de désactiver «mise à jour» avec la commande) J'ai résolu le problème en demandant un /usr/localdossier d' amis . J'ai ensuite fait une sauvegarde de mon /usr/localdossier.

sudo mv / usr / local /usr/local.orig

J'ai ensuite déplacé le sien /usr/localvers le mien

sudo mv ~ / Téléchargements / local / usr / local

Remarque: vous perdrez probablement certaines données, alors assurez-vous d'effectuer une sauvegarde.


-1

J'ai eu des problèmes en essayant d'installer Ruby en utilisant des gestionnaires de paquets. Pour être juste à l'égard de ces programmes, j'avoue n'avoir que peu d'expérience avec eux et n'avoir pas fait l'effort de creuser plus profondément comme l'ont fait la plupart des autres intervenants. Je suis paresseux et préfère utiliser un programme d'installation binaire disponible pour la plupart des choix opsys et de nombreux packages. Malheureusement, Ruby ne semble pas en fournir un.

J'ai trouvé ruby-build facile à installer (autonome - pas le plugin), et il a construit Ruby à partir de sources sans erreur et l'a placé là où je le voulais.

Bingo - facile :) Cela ressemble à une bonne alternative pour ceux d'entre nous du gestionnaire de paquets qui ont défié la persuasion.

Charlie

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.