¿Cómo hacer que Ruby / Homebrew / RVM funcione en Yosemite?

118

Después de instalar Yosemite, no pude ejecutar brew o ruby.

Recibí este error en la actualización de preparación:

/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

obteniendo este error en 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 `'
Edén
fuente

Respuestas:

281

Este error se puede solucionar fácilmente en los siguientes pasos:

1) Terminal abierto

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

3) En la primera línea, cambie "1.8" a "Actual", por lo que debería verse así:

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

a través de http://blog.ic3man.gr/2014/06/homebrew-ruby-bad-interpreter-no-such-file-or-directory/

raz0r
fuente
14
cuando hago este cambio, aparece el error "Homebrew requiere Leopard o superior. Para soporte de Tiger, consulte: github.com/mistydemeo/tigerbrew " aunque estoy ejecutando yosemite
scientiffic
4
esto da un Please, commit your changes or stash them before you can merge.error cuando intenta brew updatedesafortunadamente.
Naoise Golden
10
La "C" debe estar en mayúscula para Current#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Diablo
@Diablo Creo que esto se actualizó en 10.10.1. En la versión anterior, la "C" no estaba en mayúscula. Gracias.
raz0r
1
También obtuve el Homebrew requires Leopard or higher: seguí la respuesta a continuación para instalar las herramientas de línea de comando de xcode y ahora funciona: stackoverflow.com/a/24225960/1062936
greg
39

Actualicé a Yosemite y luego descubrí que no funcionaba 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

Si aún no ha realizado ningún cambio en la preparación, esto es lo que le recomiendo. De lo contrario, lea más abajo.

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

¿Ya hiciste cambios en los archivos de preparación y te quedaste en un lío de git?

Traté de editar, /usr/local/Library/brew.rbpero el cambio local en mi repositorio de git impedía brew updateeliminar las actualizaciones. Probé algunas otras soluciones mencionadas en esta página y en otros sitios y terminé con un lío y todo lo que quería hacer era deshacer todo lo que había hecho para preparar.

Comprometí mi cambio pero empeoró las cosas. Finalmente tuve que deshacer mis confirmaciones y git reset --hard HEAD~1hasta que estuve en la confirmación correcta. También tuve un lío de archivos sin versión (cambié los permisos de archivos en / usr / Local), así que hice una git clean -f -doperación que eliminó todos los archivos y directorios sin versión y me devolvió a donde comencé antes de realizar cualquier cambio.

Jason R
fuente
3
Esta respuesta funcionó (incluido deshacer el desorden de git) donde, como la respuesta más votada, me dejó con un problema de git.
Steve M
¡Muy útil después de actualizar su sistema! Gracias
adicto a la codificación
Esto falla en El Capitan con "ln: operación no permitida" debido al modo desarraigado. Puede encontrar una solución aquí: apple.stackexchange.com/questions/196224/…
Jorge Ortiz
37

Pasos para solucionarlo:

  1. Instalar herramientas de línea de comando para Xcode 6

  2. Reinstale la preparación:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. Una vez que se instala brew, rvm funcionará:

    rvm install ruby

¡Funcionó para mí, yahoo!

Edén
fuente
Tengo ruby ​​en funcionamiento, pero esto todavía no me funciona: stackoverflow.com/questions/24113251/…
eden
Eliminé completamente rvm y nginx y los reinstalé después de instalar las herramientas de desarrollo de Xcode 6. Ahora está funcionando de maravilla.
sin
1
Esto también funcionó para mí, solo quería aclarar para ejecutar este comando para el paso 1: xcode-select --install
James Toomey
33

Editar el script significa brew updateque no funcionará; hay ediciones locales en archivos rastreados que hacen git pullque falle.

Hice esto, que sospecho que es más limpio:

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

No hay quejas de brew doctor.

Otón
fuente
Cuando hago esto, aparece un error sobre los archivos sin seguimiento que deben moverse antes de la combinación. Todos estos son archivos en Library / Formula /.
septiembre
Suponiendo que no haya editado nada, cuando eso me suceda, significa que debo ejecutar brew doctory seguir algunas instrucciones. El problema es que brew doctorprobablemente no funcione para usted, si está aquí. Es posible que pueda hacerlo git stashy continuar.
Otto
7

Este es un conglomerado de las respuestas de las publicaciones de otras personas, así como un poco de investigación en Google, pero pensé que lo colocaría para que la respuesta completa esté en un solo lugar. Específicamente, esto hace que las cosas funcionen ahora, pero también te permite preparar actualizaciones de forma normal y vuelve a limpiar todo.

  1. Abra /usr/local/Library/brew.rb (emacs / vi / nano / lo que sea)
  2. Cambiar la primera línea de la manera siguiente: #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0. Simplemente está cambiando el "1.8" que estaba en esa línea a "Actual" (asegúrese de mantener la "C" mayúscula, de lo contrario, git se confundirá más adelante).
  3. cd $(brew --repository)
  4. git add Library/brew.rb
  5. git commit -m "upgrading to ruby 2.0"
  6. brew update(o sudo brew updatesi su preparación está configurada para hacer cambios de sistema solo con sudo)

Crédito: mucho de esto vino de aquí , aunque realmente recomiendo no hacerlo git commit -amen su carpeta / usr / local.

Eli
fuente
Esta es la única solución que funcionó para mí. Es debido a los frecuentes líos súper feos como este que me estoy alejando de Ruby y Rails para mi próxima aplicación.
Deborah
3

Como el anterior dijo: 1) Cambiar a actual 2) instalar xcode 6

Si ahora tiene más problemas con brew y ruby, esto debería ayudar: de alguna manera brew necesita ruby ​​en la versión 1.8, así que cree la carpeta:

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

y crea un enlace simbólico:

sudo ln -s /usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
Vanessa Böhner
fuente
¡Gracias! Esta fue la única solución que funcionó para mí;)
alejandromp
2

Eche un vistazo a este tutorial aquí: http://ryantvenge.com/2014/09/ruby-homebrea-yosemite/

¡Funcionó para mí!

usuario790999
fuente
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si cambia la página enlazada.
bummi
1

Arreglé esto de la siguiente manera:

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

Nota: Solo haga lo siguiente si termina en un estado completamente fallido, ya que esto es muy PELIGROSO

Como ejemplo seguí recibiendo

$ sudo ln -s Actual 1.8

$ brew actualización

/usr/local/Library/brew.rb:18:in ': ¿ayuda con el método indefinido?' para ["actualización"]: Array (NoMethodError)

Acabo de recibir esto ... (no importa qué comando, simplemente cambie "actualizar" con el comando). Resolví el problema pidiendo una /usr/localcarpeta de amigos . Luego hice una copia de seguridad de mi /usr/localcarpeta.

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

Luego moví el suyo /usr/localal mío

sudo mv ~ / Descargas / local / usr / local

Nota: Es probable que pierda algunos datos, así que asegúrese de hacer una copia de seguridad.

abc123
fuente
-1

Tuve problemas al intentar instalar Ruby usando administradores de paquetes. Para ser justos con estos programas, admito que tengo poca experiencia con ellos y no hice el esfuerzo de profundizar más como lo hicieron la mayoría de los que respondieron. Soy vago y prefiero usar un instalador binario disponible para la mayoría de opciones de opsys y muchos paquetes. Desafortunadamente, Ruby no parece proporcionar uno.

Encontré ruby-build fácil de instalar (independiente, no el complemento), y construyó Ruby a partir de fuentes sin errores y lo colocó donde lo quería.

Bingo - fácil :) Esto parece una buena alternativa para aquellos de nosotros con la persuasión desafiada por el administrador de paquetes.

Charlie

Charles Parker
fuente