ruby - rails - ERROR: Al ejecutar gema...(Gem:: FilePermissionError)
install xcode mac terminal (7)
ERROR: Al ejecutar gema ... (Gem :: FilePermissionError) No tiene permisos de escritura para el directorio /Library/Ruby/Gems/2.3.0.
Primero instale RVM y luego configure la carpeta de gemas del usuario en su .zshrc o .bashrc o de lo contrario:
export GEM_HOME="$HOME/.gem"
Ahora gem i LIB
pondrá gemas en un lugar seguro.
He comprobado todas las otras respuestas similares y ninguna fue exactamente como la mía, y ninguna de esas soluciones funcionó para mí.
gem environment
y gem environment
sudo gem environment
dan el mismo resultado:
RubyGems Environment:
- RUBYGEMS VERSION: 1.5.3
- RUBY VERSION: 1.8.7 (2011-12-28 patchlevel 357) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/local/lib/ruby/gems/1.8
- /home/ava/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
rvm -v
: rvm 1.22.3
ruby -v
: ruby 1.8.7
OSX 10.8.4
echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/ava/.rvm/bin:/home/ava/bin
gem install <gem-name>
da
ERROR: While executing gem ... (Gem::FilePermissionError)
You don''t have write permissions into the /usr/local/lib/ruby/gems/1.8 directory.
mientras que soy capaz de instalar el mismo a través de sudo. ¿Qué estoy haciendo mal?
ACTUALIZAR:
Según los comentarios y este post , corrí lo siguiente:
rvm implode
y luego vuelve a instalar la versión estable. rvm install 1.9.3
o cualquier otra instalación de ruby falla con
Error running ''__rvm_make -j24'',
please read /home/ava/.rvm/log/log/1378418790_ruby-1.9.3-p194/make.log
There has been an error while running make. Halting the installation.
make.log
[2013-09-05 22:06:48] make
current path: /home/ava/.rvm/src/ruby-1.9.3-p194
command(2): make -j24
CC = gcc
LD = ld
LDSHARED = gcc -shared
CFLAGS = -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Werror-implicit-function-declaration -fPIC
XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -I. -I.ext/include/x86_64-linux -I./include -I.
DLDFLAGS = -Wl,-soname,libruby.so.1.9
SOLIBS = -lpthread -lrt -ldl -lcrypt -lm
compiling main.c
compiling dmydln.c
compiling dmyencoding.c
compiling version.c
compiling miniprelude.c
compiling array.c
compiling bignum.c
compiling class.c
compiling compar.c
compiling complex.c
compiling dir.c
compiling dln_find.c
compiling enum.c
compiling enumerator.c
compiling error.c
compiling eval.c
compiling load.c
compiling proc.c
compiling file.c
:
:
:
In file included from ossl.h:213,
from ossl_pkcs5.c:5:
openssl_missing.h:71: error: conflicting types for ‘HMAC_CTX_copy’
/usr/local/include/openssl/hmac.h:102: error: previous declaration of ‘HMAC_CTX_copy’ was here
openssl_missing.h:95: error: conflicting types for ‘EVP_CIPHER_CTX_copy’
/usr/local/include/openssl/evp.h:459: error: previous declaration of ‘EVP_CIPHER_CTX_copy’ was here
make[2]: *** [ossl_pkcs5.o] Error 1
In file included from ossl.h:213,
from ossl_x509req.c:11:
:
:
:
Es probable que no tenga permisos de escritura en algún lugar a lo largo de esa ruta (probablemente / usr / local / lib), necesita cambiar la ubicación de su almacenamiento RVM para no necesitar sudo
Para resolver el error:
ERROR: Al ejecutar gema ... (Gem :: FilePermissionError) No tiene permisos de escritura en el directorio /usr/local/lib/ruby/gems/1.8.
La siguiente solución funcionó para mí:
sudo gem install -n /usr/local/bin cocoapods
Si ha instalado rvm
como usuario root, entonces debe sudo
para instalar cualquier cosa.
Puede instalar rvm
en modo usuario como un usuario regular, en cuyo caso todo se almacena en su directorio de inicio y no se requiere sudo
.
Si no está comprometido con esta instalación en particular, escriba sudo rvm implode
y comience de nuevo.
Su archivo de configuración global (en todo el sistema) probablemente tenga el conjunto de indicadores --no-user-install
. Cree / edite su archivo ~/.gemrc
local y agregue las siguientes líneas:
:gemdir:
- ~/.gem/ruby
install: --user-install
Nota
El directorio real para la opción gemdir
variará dependiendo de su sistema / deseo; puede o no puede ser necesario, pero probablemente es mejor designar el directorio de instalación deseado dentro de su carpeta de home
( gemdir
) que asumir que se cuidará solo.
El Wiki de ArchLinux tiene alguna información útil / bien organizada relacionada con esto.
chruby
Alternativamente, al igual que la solución rvm
ya sugerida, puede intentar usar chruby para mantener, configurar y usar versiones locales de ruby
. Para instalar versiones adicionales de ruby
, sin embargo, necesitas usar ruby-install .
$ brew install chruby ruby-install
$ ruby-install ruby 2.4.0
$ echo "source /usr/local/opt/chruby/share/chruby/chruby.sh" >> ~/.bash_profile
$ echo "chruby ruby" >> ~/.bash_profile
# Do this to select the default alternative ruby installation, assuming
# there is no other version installed.
$ chruby ruby
## Otherwise, list the available ruby versions installed, and select
$ chruby
ruby-2.3.0
ruby-2.4.0
$ chruby ruby-2.4.0
Desde el README del proyecto:
Cambia el actual ruby. Caracteristicas
Updates $PATH. Also adds RubyGems bin/ directories to $PATH. Correctly sets $GEM_HOME and $GEM_PATH. Users: gems are installed into ~/.gem/$ruby/$version. Root: gems are installed directly into /path/to/$ruby/$gemdir. Additionally sets $RUBY_ROOT, $RUBY_ENGINE, $RUBY_VERSION and $GEM_ROOT. Optionally sets $RUBYOPT if second argument is given. Calls hash -r to clear the command-lookup hash-table. Fuzzy matching of Rubies by name. Defaults to the system Ruby. Optionally supports auto-switching and the .ruby-version file. Supports bash and zsh. Small (~100 LOC). Has tests.
Anti-características
Does not hook cd. Does not install executable shims. Does not require Rubies be installed into your home directory. Does not automatically switch Rubies by default. Does not require write-access to the Ruby directory in order to install gems.
Requerimientos
bash >= 3 or zsh
Suponiendo que rvm está instalado, podría hacer algo como:
$ rvm install 2.1.1
$ rvm @global do gem install compass
No hay necesidad de hacer sudo.
Tenga en cuenta que si elige realizar una instalación multiusuario de rvm, debe agregar cada usuario al grupo de rvm a través de
usermod -a -G rvm <USERNAME>
Información relevante de las FAQ de rvm