rails kali instalar codigofacilito ruby-on-rails ruby macos bundler osx-mountain-lion

ruby on rails - kali - Bundler no puede instalar gemas sin sudo



ruby version (6)

Intento instalar una aplicación de rieles y cada vez que uso bundle falla sin sudo . Mi situación actual es que todo funciona siempre que uses sudo para todo , incluidos los rieles. No creo que esto sea correcto

Por ejemplo:

$ bundle update Updating git://github.com/refinery/refinerycms.git Fetching gem metadata from https://rubygems.org/....... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies... Enter your password to install the bundled RubyGems to your system: Using rake (10.0.4) Using i18n (0.6.1) Using multi_json (1.7.2) Using rack-cache (1.2) Using rack-test (0.6.2) Installing hike (1.2.2) Errno::EACCES: Permission denied - /usr/local/rvm/gems/ruby-1.9.3-p194/build_info/hike-1.2.2.info An error occurred while installing hike (1.2.2), and Bundler cannot continue. Make sure that `gem install hike -v ''1.2.2''` succeeds before bundling.

Pero luego hago lo que dice y funciona:

$ gem install hike -v ''1.2.2'' Successfully installed hike-1.2.2 Parsing documentation for hike-1.2.2 Installing ri documentation for hike-1.2.2 Done installing documentation for hike after 0 seconds 1 gem installed

Este patrón se repite una y otra vez para diferentes gemas. No lo entiendo ¿Por qué está pasando esto? Si uso sudo paquete se actualizará sin este error. Pero la situación actual es que necesito sudo para todo, incluido rake... o rails server , etc. Algo no está bien.

Detalles adicionales: estoy en OSX 10.8.3 ...

$ ruby -v ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.0] $ gem -v 2.0.3 $ rvm -v rvm 1.19.6 (stable) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/] $ which ruby /usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby $ which gem /usr/local/rvm/rubies/ruby-1.9.3-p194/bin/gem $ which rvm /usr/local/rvm/bin/rvm

Actualizar

Puede ser informativo que puedo ejecutar sudo bundle install sin errores. Luego, inmediatamente después de la bundle install falla con un error como el que se ve arriba. ¿Por qué es esto?

Actualización2

/usr/local/rvm[master]$ ls -l total 56 -rw-rw-r-- 1 root rvm 566 May 4 12:59 LICENCE -rw-rw-r-- 1 root rvm 8929 May 4 12:59 README -rw-rw-r-- 1 root rvm 7 May 4 12:59 RELEASE -rw-rw-r-- 1 root rvm 7 May 4 12:59 VERSION drwxrwsr-x 3 root rvm 102 May 4 01:34 archives drwxrwsr-x 35 root rvm 1190 May 4 12:59 bin drwxrwsr-x 11 root rvm 374 May 4 12:59 config drwxrwsr-x 6 root rvm 204 Jan 10 19:55 contrib drwxrwsr-x 5 root rvm 170 Jan 10 19:55 environments drwxrwsr-x 3 root rvm 102 Jan 10 19:55 examples drwxrwsr-x 5 root rvm 170 Jan 10 19:52 gems drwxrwxr-x 6 ESL rvm 204 May 4 12:59 gemsets drwxrwsr-x 92 root rvm 3128 May 4 01:34 help drwxrwsr-x 11 root rvm 374 May 4 01:34 hooks -rw-rw-r-- 1 root rvm 11 May 4 12:59 installed.at drwxrwsr-x 4 root rvm 136 Jan 10 19:54 lib drwxrwsr-x 5 root rvm 170 May 4 12:55 log drwxrwsr-x 2 root rvm 68 Jan 10 19:52 man drwxrwsr-x 9 root rvm 306 Jan 10 19:52 patches drwxrwxr-x 4 ESL rvm 136 May 4 12:59 patchsets drwxrwsr-x 4 root rvm 136 Jan 10 19:55 rubies drwxrwsr-x 64 root rvm 2176 May 4 01:34 scripts drwxrwsr-x 3 root rvm 102 May 4 01:34 src drwxrwsr-x 2 root rvm 68 Jan 10 19:52 tmp drwxrwsr-x 8 root rvm 272 May 4 12:59 user drwxrwsr-x 4 root rvm 136 Jan 10 19:52 usr drwxrwsr-x 5 root rvm 170 Jan 10 19:55 wrappers


Esto se debe a la forma en que instaló ruby.

Francamente, funciona * bien * si no te importa el sudo. Al final del día, es solo su computadora portátil ... No es un servidor que se ejecuta en un banco.

Si realmente te importa, chown gema carpetas según sea necesario.


Puede alojar gemas en su carpeta de inicio de usuario, que no necesita permisos de raíz:

bundle install --path ~/.gem

Para evitar pasar este parámetro manualmente, agregue export GEM_HOME=$HOME/.gem a su .bash_profile - esto resuelve el problema de sudo en Mac OS y otros sistemas * nix. También es posible que necesite tener acceso a las gemas que proporcionan ejecutables (como bundler), así que añada esto también:

PATH=$PATH:$HOME/.gem/bin

o en algunos casos:

PATH=$PATH:$HOME/.gem/ruby/<version>/bin

ref: https://.com/a/5862327/322020

UPD: Pero ten en cuenta que si comienzas a usar rbenv teniendo esta variable de entorno igual podría causar problemas al usar versiones muy diferentes de Ruby, por lo que es posible que desees unset GEM_HOME temporalmente unset GEM_HOME o unset GEM_HOME una personalizada cada vez que ejecutes rbenv-ed Ruby .


Si está utilizando RVM, haga estos dos pasos y estará dorado

  1. Asegúrese de que su usuario pertenece al grupo RVM

    sudo usermod -a -G rvm myUserName

  2. Asegúrese de que build_info se pueda escribir para todos los usuarios en el grupo RVM

    sudo chmod 664 $GEM_HOME/build_info/*


Su directorio RVM gem debe ser propiedad del grupo rvm . Por lo tanto, en lugar de cambiar la propiedad, sería aconsejable simplemente agregar al usuario al grupo rvm :

# $(whoami) evaluates to your username # You may want to change this to a different username depending on your config # but $(whoami) is a passable default usermod -a -G rvm $(whoami)


Tuve el mismo problema y descubrí que Bundler antes de instalar nuevas gemas comprueba si tiene permisos de escritura para todos los archivos encontrados $ GEM_HOME / build_info. En mi caso, no fue así, porque aunque el usuario que ejecutaba bundler estaba en el grupo de usuarios ''rvm'' y ese grupo poseía todos esos archivos, el grupo no pudo escribir algunos de ellos.

Eso sucedió porque instalé algunas de las gemas en la raíz, que tiene umask 0022 (todos los archivos creados por root, no pueden escribirse por grupo) en lugar de umask 0002 que otros tienen y que rvm espera.


Tuve esto hoy. Esta podría ser una situación única, pero copié un árbol fuente de Rails desde un sistema que tenía RVM instalado globalmente (en todo el sistema en /usr/local/rvm ), a un sistema que acababa de tener RVM instalado por usuario ( ~/.rvm ).

Intenté hacer la bundle install y obtener el mensaje "Su cuenta de usuario no tiene permiso para instalar Rubygems del sistema". error. Después de mucho hurgar, noté que en mi directorio ~/.rvm había un enlace simbólico:

~/.rvm/gems/ruby-2.1.1/cache -> /usr/local/rvm/gems/cache

Al eliminar ese enlace simbólico, la bundle install volvió a funcionar sin sudo .