No tienes permisos de escritura para el directorio /Library/Ruby/Gems/2.3.0. (usuario de mac)
A continuación se muestra lo que necesito hacer.
Para ejecutar las especificaciones, necesitará instalar RSpec. Primero, ejecútelo
gem install bundler
en el directorio raíz de su proyecto. Entonces correbundle install
. Para ejecutar un único archivo de especificaciones, ejecute un comando como este:bundle exec rspec spec/00_hello_spec.rb
. Para ejecutar todas las especificaciones a la vez, ejecutebundle exec rspec
.
Entonces, escribí gem install bundler
Terminal y recibí el error:
No tienes permisos de escritura para el directorio /Library/Ruby/Gems/2.3.0.
y esto estaba en el archivo del proyecto en atom
source "https://rubygems.org"
gem "rspec", "~> 3.2.0"
Mi pregunta es:
Parece que la terminal me está dando la respuesta porque se supone que no debo cambiar nada en Ruby, ¿y necesito hacerlo bundle install
dentro del átomo? ¿Alguien podría decirme cómo usar atom o ejecutar algo en atom?
Tienes razón en que macOS no te permitirá cambiar nada con la versión de Ruby que viene instalada con tu Mac. Sin embargo, es posible instalar gemas bundler
usando una versión separada de Ruby que no interfiere con la proporcionada por Apple.
Se desaconseja encarecidamente su uso sudo
para instalar gemas o cambiar los permisos de los archivos y directorios del sistema, incluso si sabe lo que está haciendo. ¿Podemos dejar de dar este mal consejo?
La solución implica dos pasos principales:
- Instale una versión separada de Ruby que no interfiera con la que vino con su Mac.
- Actualice
PATH
de modo que la ubicación de la nueva versión de Ruby esté primero en el archivoPATH
. Algunas herramientas hacen esto automáticamente por usted. Si no está familiarizado con su funcionamientoPATH
y cómo funciona, es uno de los conceptos básicos que debe aprender y comprenderá por qué a veces aparecen errores de "comando no encontrado" y cómo solucionarlos.
Primero, querrás instalar Homebrew , que instala las herramientas de línea de comandos necesarias y facilita la instalación de otras herramientas necesarias.
Entonces, las dos formas más sencillas de instalar una versión independiente de Ruby son:
Si desea tener la flexibilidad de cambiar fácilmente entre muchas versiones de Ruby [RECOMENDADO]
Elija una de estas cuatro opciones:
- chruby y ruby-install . Estos se pueden instalar con Homebrew:
brew install chruby ruby-install
rbenv - se puede instalar con Homebrew
RVM
asdf
Si elige chruby
y ruby-install
, puede instalar la última versión de Ruby de esta manera:
ruby-install ruby
Una vez que haya instalado todo y configurado .zshrc
según .bash_profile
las instrucciones de las herramientas anteriores, cierre y reinicie Terminal, luego cambie a la versión de Ruby que desee. En el caso de chruby
, sería algo como esto:
chruby 3.1.3
Si necesita configurar .zshrc
o .bash_profile
depende del shell que esté utilizando.
Si estás seguro de que no necesitas más de una versión de Ruby al mismo tiempo (aparte de la que viene con macOS) [NO RECOMENDADO]
Incluso si cree que no necesitará otra versión ahora, eventualmente la necesitará y no podrá cambiar fácilmente. Esto causará confusión y dolores de cabeza, por lo que no recomiendo instalar y administrar Ruby con Homebrew.
Si elige utilizar Homebrew para instalar Ruby a pesar de mis advertencias, estará solo si tiene algún problema.
- Instale Ruby con Homebrew:
brew install ruby
Luego actualice su PATH
ejecutando este comando:
echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/3.1.0/bin:$PATH"' >> ~/.zshrc
El 3.1.0
comando anterior supone que Homebrew instaló una versión de Ruby que comienza con 3.1
. Si instaló una versión diferente, reemplácela 3.1
con los primeros dos dígitos de su versión de Ruby.
Si estás en una Mac M1/M2, reemplázala /usr/local
con/opt/homebrew
Luego "actualiza" tu shell para que estos cambios surtan efecto:
source ~/.zshrc
O puede abrir una nueva pestaña de terminal o salir y reiniciar Terminal.
Reemplace .zshrc
con .bash_profile
si está usando Bash. Si no estás seguro, lee mi guía para saber qué shell estás usando.
Para verificar que ahora estás usando la versión de Ruby que no es del sistema, puedes ejecutar los siguientes comandos:
which ruby
no debería ser/usr/bin/ruby
ruby -v
Debería ser 3.1.3 o posterior.
Una vez que tengas instalada esta nueva versión de Ruby, ahora puedes instalar el paquete (o cualquier otra joya):
gem install bundler
Funcionó para mí usando el parámetro --user-install
ejecutando el siguiente comando:
gem install name_of_gem --user-install
Instalar en el directorio de inicio del usuario en lugar de
GEM_HOME
https://guides.rubygems.org/command-reference/#gem-install
El repositorio local predeterminado de RubyGems se puede anular con las variables de entorno GEM_PATH y GEM_HOME. GEM_HOME establece el repositorio predeterminado para instalar. GEM_PATH permite buscar gemas en varios repositorios locales.
Editar
Había una gema que todavía no podía instalar (requería los encabezados Ruby.h del kit de desarrollo Ruby o algo así), luego probé los diferentes administradores de versiones, pero de alguna manera eso todavía no funcionó, como se indica en la documentación cómo simplemente instalar y cambiar (simplemente no cambió las versiones). Luego eliminé todos los administradores de versiones instalados y luego los instalé con brew install ruby
la última versión y también configuré la variable PATH. (Se mencionará después de la instalación de Ruby de Brew), que funcionó.
Si no desea ejecutar sudo
, instale Ruby usando Homebrew.
brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails
Es posible que quieras agregar export GEM_HOME="$HOME/.gem"
a tu ~/.bash_profile
o .zshrc
si estás usando zsh
Nota: RubyGems mantiene versiones antiguas de gemas, así que siéntete libre de hacer una limpieza después de actualizar:
gem cleanup
Simplemente exporte GEM_HOME:
export GEM_HOME="$HOME/.gem"
Y luego prueba:
gem install cocoapods