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.
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:
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 .
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
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.)
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.
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
Sudo gem install -n /usr/local/bin cocoapods
Essaye ça. Cela fonctionnera certainement.
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
On dirait que lors de la mise à niveau vers OS X El Capitain, le répertoire/usr/local est modifié de plusieurs manières:
[Edit] Il y a aussi une chose préliminaire à faire: mettre à jour Xcode ...
$ 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.
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
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>
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
)
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
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
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.
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 :)
Je devais rm -rf ./vendor
puis exécuter bundle install
à nouveau.