web-dev-qa-db-fra.com

Impossible d'installer des gems sur OS X "El Capitan"

Je ne parviens pas à installer et à exécuter fakes3 gem sur El Capitan Beta 5.

J'ai essayé:

Sudo gem install fakes3
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/fakes3

Puis j'ai essayé de le faire à la manière des cocoapodes. Cela a fonctionné pour les cocotiers mais pas pour les faux3.

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.
177
Himanshu Yadav

Avertissement: @theTinMan et les autres développeurs Ruby indiquent souvent qu'ils ne doivent pas utiliser Sudo lors de l'installation de gems et qu'ils pointent vers des éléments comme RVM . C'est absolument vrai lors du développement de Ruby. Allez-y et utilisez ça.

Cependant, beaucoup d’entre nous veulent simplement que certains fichiers binaires soient distribués sous forme de gem (par exemple, fakes3, cocoapods, xcpretty…). Je ne veux surtout pas m'embêter à gérer un Ruby séparé. Voici vos options les plus rapides:

Option 1: Continuez à utiliser Sudo

Utiliser Sudo convient probablement si vous voulez que ces outils soient installés globalement. 

Le problème est que ces fichiers binaires sont installés dans /usr/bin, qui est interdit depuis El Capitan. Cependant, vous pouvez les installer dans /usr/local/bin à la place. C'est là que (Homebrew } _ installe ses fichiers, donc il probablement existe déjà.

Sudo gem install fakes3 -n/usr/local/bin

Les gemmes seront installées dans /usr/local/bin et chaque utilisateur de votre système peut les utiliser si elles se trouvent dans leur CHEMIN .

Option 2: Installer dans votre répertoire personnel (sans Sudo)

Ce qui suit va installer des gemmes dans ~/.gem et des binaires dans ~/bin (que vous devriez ensuite ajouter à votre PATH).

gem install fakes3 --user-install -n~/bin

Faites-le par défaut

Quoi qu'il en soit, vous pouvez ajouter ces paramètres à votre ~/.gemrc afin que vous n'ayez pas à vous en souvenir:

gem: -n/usr/local/bin

i.e. echo "gem: -n/usr/local/bin" >> ~/.gemrc

ou

gem: --user-install -n~/bin

i.e. echo "gem: --user-install -n~/bin" >> ~/.gemrc

(Astuce: Vous pouvez également ajouter --no-document pour ne pas générer la documentation pour les développeurs Ruby.)

326
nschum

Dans mon cas, j'ai dû réinstaller Ruby en utilisant Brew . Cela semble avoir résolu le problème car je peux à nouveau installer des gems.

brew install Ruby

Après cela, vous devez vous déconnecter et vous reconnecter, graphiquement ou simplement en redémarrant votre terminal. 

102

C'est à cause de la nouvelle fonction de sécurité de OS X "El Capitan" . Essayez d'ajouter --user-install au lieu d'utiliser Sudo:

$ gem install *** --user-install

Par exemple, si vous voulez installer fake3, utilisez simplement:

$ gem install fake3 --user-install
37
Shao Wenbin
Sudo gem install -n /usr/local/bin cocoapods

Essaye ça. Cela fonctionnera certainement.

24
Femina Brahmbhatt

Vous devez mettre à jour Xcode vers le plus récent (v7.0.1) et tout fonctionnera normalement. 

Si, après avoir installé le dernier Xcode et ne fonctionne toujours pas, essayez d'installer gem de cette façon: 

Sudo gem install -n /usr/local/bin GEM_NAME_HERE

Par exemple: 

Sudo gem install -n /usr/local/bin fakes3
Sudo gem install -n /usr/local/bin compass
Sudo gem install -n /usr/local/bin susy
18
astrasleepz

On dirait que lors de la mise à niveau vers OS X El Capitain, le répertoire/usr/local est modifié de plusieurs manières: 

  1. les autorisations des utilisateurs sont réinitialisées (c'est également un problème pour les personnes utilisant Homebrew)
  2. les binaires et les liens symboliques ont peut-être été supprimés ou modifiés

[Edit] Il y a aussi une chose préliminaire à faire: mettre à jour Xcode ...

Solution pour # 1:

$ Sudo chown -R $(whoami):admin /usr/local

Cela corrigera les autorisations sur le répertoire /usr/local, ce qui aidera ensuite les commandes gem install et brew install|link|... à fonctionner correctement.

Solution au n ° 2:

Problèmes basés sur Ruby

Assurez-vous que vous avez corrigé les permissions du répertoire /usr/local (voir n ° 1 ci-dessus)

Essayez d’abord de réinstaller votre bijou en utilisant:

Sudo gem install <gemname>

Notez qu'il installera la dernière version du gem spécifié.

Si vous ne voulez pas faire face à des problèmes de compatibilité ascendante, je vous suggère de déterminer d'abord quelle version de la gem vous souhaitez obtenir, puis de le réinstaller avec le -v version. Voir un exemple ci-dessous pour vous assurer que le système ne recevra pas une nouvelle version de capistrano.

$ gem list | grep capistrano
capistrano (3.4.0, 3.2.1, 2.14.2)
$ Sudo gem install capistrano -v 3.4.0

Problèmes à base de bière

Mettez à jour votre bière et améliorez vos formules

$ brew update
$ brew upgrade

Vous devrez peut-être également relier certains d'entre eux manuellement.

$ brew link <formula>
10
foobar

Comme il a été dit, le problème vient d’une fonction de sécurité de Mac OSX depuis "El Capitan".

À l'aide du système Ruby par défaut, le processus d'installation se déroule dans le répertoire /Library/Ruby/Gems/2.0.0 qui n'est pas disponible pour l'utilisateur et génère l'erreur.

Vous pouvez consulter vos paramètres d'environnement Ruby avec la commande

$ gem env

Il existe un répertoire d'installation et un répertoire d'installation. Pour utiliser le répertoire d'installation de l'utilisateur au lieu du répertoire d'installation par défaut, vous pouvez utiliser le paramètre --user-install au lieu d'utiliser Sudo, ce qui n'est jamais recommandé.

$ gem install myGemName --user-install

Il ne devrait plus y avoir aucune question de droits dans le processus. Les gems sont ensuite installés dans le répertoire utilisateur: ~/.gem/Ruby/2.0.0/bin

Mais pour rendre les gems installés disponibles, ce répertoire devrait être disponible dans votre chemin. Selon la FAQ de Ruby , vous pouvez ajouter la ligne suivante à votre ~/.bash_profile ou ~/.bashrc

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

Puis fermez et rechargez votre terminal ou rechargez votre .bash_profile ou .bashrc (. ~/.bash_profile)

3
emchateau

Réinstaller RVM a fonctionné pour moi, mais j'ai dû réinstaller toutes mes gemmes par la suite:

rvm implode
\curl -sSL https://get.rvm.io | bash -s stable --Ruby
rvm reload
1
kkelleey

Si la gem que vous essayez d'installer nécessite des bibliothèques XML, essayez ceci:

Sudo gem install -n /usr/local/bin  <gem_name> -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

Plus précisément, j'ai rencontré un problème lors de l'installation de la version 1.6.8 de nokogiri gem sous OS X El Capitan.

et cela a finalement fonctionné pour moi:

Sudo gem install -n /usr/local/bin  nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

Pour vous assurer que libxml2 et libxslt sont installés, vous pouvez faire:

brew install libxml2 libxslt
brew install libiconv

puis vérifiez que les outils de ligne de commande xcode sont installés:

xcode-select --install 

devrait renvoyer cette erreur:

xcode-select: error: command line tools are already installed, use "Software Update" to install updates
1
Anirban Nandi 'Joy'

C'est la solution que j'ai utilisée:

Remarque: ce correctif est destiné à Compass tel que je l'ai écrit dans une autre question SO, mais j'ai utilisé le même processus pour restaurer les fonctionnalités de tous les processus de terminal. Il est évident que les gems que vous installez sont différents, mais le processus est le même.

J'ai eu le même problème. Cela est dû à la mise en œuvre par Apple de la protection de l'intégrité du système (SIP). Vous devez d'abord désactiver cela ...

Redémarrage en mode de récupération:

Redémarrez et maintenez Command + R jusqu'à ce que le logo Apple apparaisse.

Une fois démarré, sélectionnez Utilitaires> Terminal dans la barre du haut.

type: csrutil disable

puis tapez: reboot

Une fois redémarré

Ouvrez le terminal et sauvegardez les commandes:

Sudo gem uninstall bundler

Sudo gem install bundler

Sudo gem install compass

Sudo gem install sass

Sudo gem update --system

Les gemmes individuelles qui ont échoué doivent être corrigées. Pour chacune d'entre elles, procédez comme suit:

Sur ma machine c'était la première dépendance qui ne fonctionnait pas alors je l'ai listée}:

Sudo gem pristine ffi --version 1.9.3

Passez par la liste des pierres précieuses qui doivent être réparées. En tout, vous cherchez environ 10 minutes pour le réparer, mais vous aurez des commandes de terminal pour que la boussole fonctionne.

Capture d'écran

1
jbalesteri

J'ai rencontré le même problème après l'installation d'El Capitan, j'ai essayé d'installer sass et compass dans un projet symfony, la commande suivante a renvoyé l'erreur suivante:

$ Sudo gem installer une boussole

ERREUR: Erreur lors de l'installation de la boussole: ERREUR: Impossible de créer une extension native de gem.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/Ruby extconf.rb 

vérification de ffi.h .../System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/mkmf.rb:434:in `try_do ': Le compilateur n'a pas réussi à générer une fichier exécutable. (Erreur d'exécution)

J'ai donc essayé d'installer sass avec: $ Sudo gem install sass

J'ai reçu le même message d'erreur. Après quelques recherches sur Google, j'ai réussi à installer sass à l'aide de la commande suivante:

$ Sudo gem installer -n/usr/local/bin sass

Ce qui précède a fonctionné pour moi avec l’installation de sass mais n’a pas fonctionné pour l’installation d’une boussole. J'ai lu que quelqu'un quelque part avait ouvert une instance de xcode puis l'avait refermée, puis avait exécuté avec succès la même commande après laquelle avait fonctionné pour eux .J'ai essayé d'ouvrir xcode, mais un message m'avait indiqué que la version de xcode installée était non compatible avec El Capitan . J'ai donc mis à jour xcode depuis l'App Store, puis relancé la commande suivante, qui a été exécutée avec succès cette fois:

$ Sudo gem installez -n/usr/local/bin compass

J'ai ensuite pu lancer $ compass init

J'ai maintenant tous mes bijoux en état de marche et je peux maintenant construire de belles choses sass :)

0
Barry Poore

Je devais rm -rf ./vendor puis exécuter bundle install à nouveau.

0
VoA