ruby - norteamericanos - mejor director de la historia del cine
No se pueden instalar gemas en OS X "El Capitan" (14)
Como se ha dicho, el problema proviene de una función de seguridad de Mac OSX desde "El Capitan".
Usando el sistema predeterminado Ruby, el proceso de instalación ocurre en el directorio
/Library/Ruby/Gems/2.0.0
que no está disponible para el usuario y da el error.
Puede echar un vistazo a los parámetros de sus entornos Ruby con el comando
$ gem env
Hay un DIRECTORIO DE INSTALACIÓN y un DIRECTORIO DE INSTALACIÓN DEL USUARIO.
Para usar el directorio de instalación del usuario en lugar del directorio de instalación predeterminado, puede usar el parámetro
--user-install
lugar de usar
sudo
que nunca es una forma recomendada de hacerlo.
$ gem install myGemName --user-install
Ya no debería haber ningún problema de derechos en el proceso.
Las gemas se instalan en el directorio del usuario:
~/.gem/Ruby/2.0.0/bin
Pero para que las gemas instaladas estén disponibles, este directorio debe estar disponible en su ruta.
De acuerdo con las
preguntas frecuentes de Ruby
, puede agregar la siguiente línea a su
~/.bash_profile
o
~/.bashrc
if which ruby >/dev/null && which gem >/dev/null; then
PATH="$(ruby -rubygems -e ''puts Gem.user_dir'')/bin:$PATH"
fi
Luego cierre y vuelva a cargar su terminal o vuelva a cargar su
.bash_profile
o
.bashrc
(
. ~/.bash_profile
)
No puedo instalar y ejecutar
fakes3
gem en El Capitan Beta 5.
Lo intenté:
sudo gem install fakes3
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/fakes3
Luego intenté hacerlo a la manera de los cocoapods. Funcionó para cocoapods pero no para falsificaciones3.
mkdir -p $HOME/Software/ruby
export GEM_HOME=$HOME/Software/ruby
gem install cocoapods
[...]
1 gem installed
gem install fakes3
ERROR: While executing gem ... (Gem::FilePermissionError)
You don''t have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
En mi caso, tuve que reinstalar Ruby usando Brew . Eso parece haber resuelto el problema ya que puedo instalar gemas nuevamente.
brew install ruby
Después de esto, debe cerrar sesión y volver a iniciarla, ya sea gráficamente o simplemente reiniciando su terminal.
Esta es la solución que he usado:
Nota: esta solución es para la brújula como la escribí en otra pregunta SO, pero he usado el mismo proceso para restaurar la funcionalidad a todos los procesos de la terminal, obviamente las gemas que está instalando son diferentes, pero el proceso es el mismo.
Tuve el mismo problema. Se debe a que Apple implementó la Protección de integridad del sistema (SIP). Primero debes deshabilitar eso ...
Reiniciar en modo de recuperación:
Reinicie y mantenga presionadas las teclas Comando + R hasta que vea el logotipo de Apple.
Una vez arrancado, seleccione Utilidades> Terminal en la barra superior.
tipo:
csrutil disable
luego escriba:
reboot
Una vez reiniciado
Abra la copia de seguridad del terminal e ingrese los comandos:
sudo gem uninstall bundler
sudo gem install bundler
sudo gem install compass
sudo gem install sass
sudo gem update --system
Las gemas individuales que fallaron necesitan ser reparadas, así que para cada una haga lo siguiente:
En mi máquina, esta era la primera dependencia que no funcionaba, así que la enumeré :
sudo gem pristine ffi --version 1.9.3
Continúe con la lista de gemas que deben repararse. En total, está buscando unos 10 minutos para solucionarlo, pero tendrá comandos de terminal para que funcione la brújula.
Esto se debe a la nueva función de seguridad de OS X "El Capitan".
Intente agregar
--user-install
lugar de usar sudo:
$ gem install *** --user-install
Por ejemplo, si desea instalar fake3 simplemente use:
$ gem install fake3 --user-install
Me encontré con el mismo problema después de instalar El Capitan, intenté instalar sass y brújula en un proyecto de Symfony, el siguiente comando devolvió el siguiente error:
$ sudo gem gem compass
ERROR: Error al instalar la brújula: ERROR: Error al construir la extensión nativa de la gema.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
buscando ffi.h ... /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:434:in `try_do '': el compilador no pudo generar un Archivo ejecutable. (Error de tiempo de ejecución)
Entonces intenté instalar sass con: $ sudo gem install sass
Recibí el mismo mensaje de error, después de buscar en Google logré instalar sass usando el siguiente comando:
$ sudo gem install -n / usr / local / bin sass
Lo anterior funcionó para mí con la instalación de sass pero no funcionó para instalar la brújula. Leí que alguien en algún lugar había abierto una instancia de xcode, luego la cerró nuevamente y luego ejecutó con éxito el mismo comando, después de lo cual funcionó para ellos. Intenté abrir xcode pero me apareció un mensaje que decía que la versión de xcode instalada no era compatible con El Capitan. Entonces actualicé xcode desde la tienda de aplicaciones, volví a ejecutar el siguiente comando que esta vez se ejecutó con éxito:
$ sudo gem install -n / usr / local / bin compass
Entonces pude ejecutar $ compass init
Ahora tengo todas mis gemas funcionando y puedo proceder a construir algunas cosas encantadoras :)
No me gusta instalar cosas con sudo. una vez que comienzas con sudo no puedes parar ...
intente otorgar permisos al directorio de gemas.
sudo chown -R $(whoami) /Library/Ruby/Gems/2.0.0
Parece que cuando se actualiza a OS X El Capitain, el directorio / usr / local se modifica de varias maneras:
- los permisos de usuario se restablecen (esto también es un problema para las personas que usan Homebrew)
- binarios y enlaces simbólicos pueden haber sido eliminados o alterados
[Editar] También hay una cosa preliminar que hacer: actualizar Xcode ...
Solución para el n. ° 1:
$ sudo chown -R $(whoami):admin /usr/local
Esto corregirá los permisos en el directorio
/usr/local
que luego ayudará a que los comandos
gem install
y
brew install|link|...
funcionen correctamente.
Solución al # 2:
Problemas basados en Ruby
Asegúrese de haber corregido los permisos del directorio
/usr/local
(vea el # 1 arriba)
Primero intente reinstalar su gema usando:
sudo gem install <gemname>
Tenga en cuenta que instalará la última versión de la gema especificada.
Si no desea enfrentar problemas de compatibilidad con versiones anteriores, le sugiero que primero determine qué versión de qué gema desea obtener y luego vuelva a instalarla con la
-v version
.
Vea un ejemplo a continuación para asegurarse de que el sistema no obtenga una nueva versión de capistrano.
$ gem list | grep capistrano
capistrano (3.4.0, 3.2.1, 2.14.2)
$ sudo gem install capistrano -v 3.4.0
Problemas basados en cerveza
Actualice brew y actualice sus fórmulas
$ brew update
$ brew upgrade
Es posible que también deba volver a vincular algunos de ellos manualmente
$ brew link <formula>
Reinstalar RVM funcionó para mí, pero tuve que reinstalar todas mis gemas después:
rvm implode
/curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm reload
Si la gema que está intentando instalar requiere bibliotecas xml, intente esto:
sudo gem install -n /usr/local/bin <gem_name> -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/
Específicamente, me encontré con un problema al instalar la gema nokogiri v 1.6.8 en OS X El Capitan
y esto finalmente funcionó para mí:
sudo gem install -n /usr/local/bin nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/
Para asegurarse de tener instalado libxml2 y libxslt, puede hacer lo siguiente:
brew install libxml2 libxslt
brew install libiconv
y luego verifique para asegurarse de que tiene instaladas las herramientas de línea de comandos de xcode:
xcode-select --install
debería devolver este error:
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Tienes que actualizar Xcode a la más nueva (v7.0.1) y todo funcionará normalmente.
Si después de instalar el Xcode más reciente y aún no funciona, intente instalar la gema de esta manera:
sudo gem install -n /usr/local/bin GEM_NAME_HERE
Por ejemplo:
sudo gem install -n /usr/local/bin fakes3
sudo gem install -n /usr/local/bin compass
sudo gem install -n /usr/local/bin susy
Tuve que
rm -rf ./vendor
luego ejecutar
bundle install
nuevamente.
Descargo de responsabilidad:
@theTinMan y otros desarrolladores de Ruby a menudo señalan que no deben usar
sudo
al instalar gemas y señalan cosas como
RVM
.
Eso es absolutamente cierto cuando se hace el desarrollo de Ruby.
Adelante, usa eso.
Sin embargo, muchos de nosotros solo queremos algún binario que se distribuya como una gema (por ejemplo,
cocoapods
,
xcpretty
,
xcpretty
...).
Definitivamente no quiero molestarme en administrar un rubí separado.
Aquí están sus opciones más rápidas:
Opción 1: sigue usando sudo
Usar
sudo
probablemente esté bien si desea que estas herramientas se instalen globalmente.
El problema es que estos archivos binarios están instalados en
/usr/bin
, que está
off-limits
desde El Capitán.
Sin embargo, puede instalarlos en
/usr/local/bin
lugar.
Ahí es donde
Homebrew
instala sus cosas, por lo que
probably
ya exista.
sudo gem install fakes3 -n/usr/local/bin
Las gemas se instalarán en
/usr/local/bin
y todos los usuarios de su sistema pueden usarlas si están en su
PATH
.
Opción 2: instalar en su directorio de inicio (sin sudo)
Lo siguiente instalará gemas en
~/.gem
y colocará binarios en
~/bin
(que luego debe agregar a su
PATH
).
gem install fakes3 --user-install -n~/bin
Convertirlo en el predeterminado
De cualquier manera, puede agregar estos parámetros a su
~/.gemrc
para que no tenga que recordarlos:
gem: -n/usr/local/bin
es decir,
echo "gem: -n/usr/local/bin" >> ~/.gemrc
o
gem: --user-install -n~/bin
es decir,
echo "gem: --user-install -n~/bin" >> ~/.gemrc
(
Sugerencia:
también puede
--no-document
para omitir la generación de la documentación del desarrollador de Ruby).
sudo chown -R $(whoami):admin /usr/local
Eso devolverá los permisos (Homebrew instala ruby allí)
sudo gem install -n /usr/local/bin cocoapods
Prueba esto. Definitivamente funcionará.