‘sudo gem install’ o ‘gem install’ y ubicaciones de gems

Ejecutar ‘ sudo gem list --local ‘ y ‘ gem list --local ‘ me da resultados diferentes. Mi ruta de la gem se establece en mi carpeta de inicio y solo contiene las gems de ‘ gem list --local ‘.

Probablemente no sea bueno tener gems instaladas en diferentes directorios en mi computadora, así que ¿debo tener la ruta de la gem establecida de manera diferente, y siempre debo usar sudo al instalar algo?

 my ~/.profile export PATH=/opt/local/bin:/opt/local/sbin:$PATH export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" 

~ / .bash_profile está vacío.

Contrariamente a todas las otras publicaciones, sugiero NO usar sudo al instalar gems.

En su lugar, le recomiendo que instale RVM y comience una vida feliz con casas de gems portátiles y una versión diferente de Ruby que viven bajo un mismo techo.

Para los no iniciados, de la documentación :

RVM es una herramienta de línea de comandos que nos permite instalar, administrar y trabajar fácilmente con múltiples entornos ruby ​​y conjuntos de gems.

La razón por la cual la instalación de gems con sudo es peor que la gem install es porque instala las gems para TODOS LOS USUARIOS como root . Esto podría estar bien si eres la única persona que usa la máquina, pero si no lo estás puede causar rareza.

Si decides que quieres destruir todas tus gems y comenzar de nuevo, es mucho más fácil y más seguro hacerlo como usuario no root.

Si decides que quieres utilizar RVM , usar sudo provocará todo tipo de rarezas porque cada versión de Ruby que instales a través de RVM tiene su propia GEM_HOME.

Además, es agradable si puede hacer que su entorno de desarrollo esté lo más cerca posible de su entorno de producción, y en la producción probablemente instalará gems como usuario no root.

También puede instalar gems en su entorno local (sin sudo ) con

 gem install --user-install  

Lo recomiendo para que no se meta con la configuración de su sistema, incluso si se trata de una computadora de un solo usuario.

Puedes verificar a dónde van las gems observando las gems con el gem environment . En mi caso es “~ / .gem / ruby ​​/ 1.8”.

Si necesita algunos binarios de instalaciones locales agregadas a su ruta, puede agregar algo a su bashrc como:

 if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi 

(de http://guides.rubygems.org/faqs/#user-install )

Mejor aún, ponga --user-install en su archivo ~ / .gemrc para que no tenga que escribirlo cada vez

 gem: --user-install 

En el caso que tú

  • gems de Rubyes instaladas con sudo
  • quiero instalar gems sin sudo
  • no quiero instalar rvm / rbenv

agregue lo siguiente a su .bash_profile :

 export GEM_HOME=/Users/‹your_user›/.gem export PATH="$GEM_HOME/bin:$PATH" 

Abre una nueva pestaña en la source ~/.bash_profile OR Terminal source ~/.bash_profile y listo.

Relacionado (para usuarios de bundler), si desea una alternativa más ligera a RVM que ubique todo en un directorio bien conocido y específico del usuario, le recomiendo usar:

 bundle install --path $HOME/.gem 

si quieres instalar gems en el mismo lugar que

 gem install --user-install GEMNAME 

los instalará, .gem/ruby/RUBYVERSION en tu hogar. (Vea el otro comentario sobre esta pregunta sobre --user-install .)

Esto hará que las gems sean visibles para la gem list , que pueden desinstalarse mediante la gem uninstall , etc. sin necesidad de tener acceso a sudo . Los scripts ejecutables instalados por gem o bundler se pueden poner en su camino agregando

 $HOME/.gem/ruby/RUBYVERSION/bin 

a tu $PATH . gem sí misma le informa sobre esto si no está configurada cuando usted gem install --user-install .

 sudo gem install --no-user-install  

instalará su joya globalmente , es decir, estará disponible para todos los contextos de usuario.

Puede instalar gems en una carpeta específica (ejemplo vendor /) en su aplicación Rails usando:

 bundle install --path vendor