No se puede instalar la gema RubyZip en OS X Lion con RVM
-
27-10-2019 - |
Pregunta
TL; DR:
$ gem install rubyzip
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /Users/darth/.rvm/gems/ruby-1.9.2-p136/gems/rubyzip-0.9.4/README
Y ahora en detalle.No estoy seguro de qué información es relevante, así que solo lo diré todo.
- Recientemente actualicé de OS X Snow Leopard a Lion (también actualicé Xcode a 4.2)
- Todo funcionó bien por un tiempo
- Hoy decidí instalar algunas gemas (RSpec, Cucumber), y comenzó a recibir advertencias de formato de fecha cada vez que hacía algo con RubyGems
- Decidí actualizar RubyGems, de 1.3.6 (no estoy seguro aquí) a la actual 1.8.11
- La advertencia seguía apareciendo, así que intenté quitar el gemset con
rvm gemset empty
, que también falló, debido a un error de permiso denegado (sí, estúpido, no lo escribí) - Como resultado de eso, yo Ruby reinstalado vía
rvm remove 1.9.2
yrvm install 1.9.2
(No me olvidé dervm use 1.9.2 --default
después de eso. Instalé bundler
gem install bundle
y luego trató debundle install
en mi proyecto Rails 3.1.1, pero termina con errorInstalling rubyzip (0.9.4) Errno::EPERM: Operation not permitted - /Users/darth/.rvm/gems/ruby-1.9.2-p136/gems/rubyzip-0.9.4/README An error occured while installing rubyzip (0.9.4), and Bundler cannot continue. Make sure that `gem install rubyzip -v '0.9.4'` succeeds before bundling.
gem install rubyzip -v '0.9.4'
da el error mencionado anteriormenteEl archivo LÉAME dice que descargue la fuente e instale desde allí a través de
ruby install.rb
, que también termina en error$ ruby install.rb /Users/darth/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/fileutils.rb:841:in `install': wrong number of arguments (4 for 3) (ArgumentError) from install.rb:21:in `block in <main>' from install.rb:18:in `each' from install.rb:18:in `<main>'
Incluso ejecutar pruebas para rubyzip termina en un montón de errores
$ rake test rake/gempackagetask is deprecated. Use rubygems/package_task instead rake/rdoctask is deprecated. Use rdoc/task instead (in RDoc 2.4.2+) /Users/darth/.rvm/rubies/ruby-1.9.2-p136/bin/ruby -C test alltests.rb <internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- stdrubyexttest (LoadError) from <internal:lib/rubygems/custom_require>:29:in `require' from alltests.rb:5:in `<main>' rake aborted! Command failed with status (1): [/Users/darth/.rvm/rubies/ruby-1.9.2-p136/b...] Tasks: TOP => test (See full trace by running task with --trace)
No tengo ideas, ¿qué puedo hacer?
Solución
Realmente no estoy seguro de qué causó esto, pero logré solucionarlo haciendo lo siguiente.
Dado que reinstalar Ruby 1.9.2 no ayudó, decidí ser aún más drástico y bajé a rvm.Descubrí que tenía la versión 1.1.algo instalado, que tiene unos 9 meses.
Intenté actualizar, pero no ayudó, así que rvm implode
hizo el truco.Incluso tuve que sudo rm -rf ~/.rvm
, probablemente porque logré estropear algunas instalaciones de gemas agregando sudo
a ellos.
Después de reinstalar rvm
y reinstalando 1.9.2, parece que todo funciona bien ahora, incluso con Xcode 4.2.
Lección aprendida, rm -rf
& reinstalar es mejor que intentar actualizar desde una versión anterior :)