Comment faire pour installer un bijou ou une mise à jour de RubyGems si il échoue avec une erreur d'autorisations
Je suis en train d'installer un bijou à l'aide de gem install mygem
ou de mise à jour de RubyGems à l'aide de gem update --system
, et il échoue avec ce message d'erreur:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Quelqu'un a une idée comment résoudre ce problème?
- Voici ma solution: stackoverflow.com/questions/34071868/...
- mon erreur s'est produite parce que je m le faire : gem update cocoapods correct : sudo gem update cocoapods
sudo chown -R $USER /Library/Ruby/Gems/
- simplement à l'aide de cette commande a fonctionné pour moi : sudo gem install mygem
- j'ai été en utilisant le shell zsh et c'était problème de chemin d'accès dans ~/.zshrc. j'ai utilisé cette ligne à la fin du fichier et cela a fonctionné pour moi: export PATH="$HOME/.rbenv/cales:$PATH"
- ce devrait être l'accepter réponse!
Vous devez vous connecter pour publier un commentaire.
signifie exactement que, vous n'avez pas la permission d'y écrire.
C'est la version de Ruby installé par Apple, pour leur propre usage. Alors qu'il est OK pour faire des modifications mineures qui si vous savez ce que vous faites, parce que vous n'êtes pas sûr au sujet du problème d'autorisations, je dirais que c'est pas une bonne idée de continuer le long de cette voie.
Au lieu de cela, je vous suggère fortement de vous regarder dans l'aide soit rbenv ou RVM pour gérer un distinct Ruby, installé dans un bac à sable dans votre répertoire home, que vous pouvez modifier/plier/broche/modifier sans se soucier d'avoir à remodeler le système de Ruby.
Entre les deux, j'utilise rbenv, bien que j'ai utilisé RVM beaucoup dans le passé. rbenv prend un plus "mains-libres" pour la gestion de votre installation de Ruby. RVM a beaucoup de fonctionnalités et est très puissant, mais, la suite est plus intrusive. Dans les deux cas, LIRE la documentation d'installation pour eux une couple de fois avant de commencer l'installation de celui qui vous choisissez.
brew install ruby
permettra de résoudre vos problèmes de dépendance de façon propre qui n'a pas de nuke apple installer. Si vous avez déjàsudo
'd'une mise à jour sur l'installation initiale et sont inquiets à propos de ce que vous avez fait, vous devriez être en mesure de l'annuler avec ceci:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix
" et cela ajoute plus de poids à pourquoi les gens ne devraient pas utilisersudo
ouchown
. Soupir....brew install ruby
(qui a pris 5 minutes pour s'exécuter) n'a pas de résoudre le problème d'autorisations pour moi. Je vais essayer la suggestion d'autres de l'aide d'un Ruby version manager...rvm all do gem install _gemname_
brew install ruby
il suffit de fermer le Terminal et le rouvrir à nouveau.brew install ruby
ne pas gâcher l'Apple existant de l'installation, a travaillé pour moi.gem install
pour votre joyau, qui a requis l'autorisation ou sudo avant. Et ne pas oublier de fairerbenv rehash
. Après cela, vous pouvez facilement exécuter desbundle install
.which gem
encore des points à/usr/bin/gem
après l'exécution debrew install ruby
. Dois-je faire quelque chose pour changer la valeur par défautruby
,gem
, etirb
commandes?echo 'export GEM_HOME="$HOME/.gem"' >> ~/.bash_profile
+echo 'export PATH="$GEM_HOME/bin:$PATH"' >> ~/.bash_profile
sauvé ma journéegem
encore souligné à la mauvaise place ainsi. Ce que j'ai fait (à la suite de cette réponse, stackoverflow.com/questions/6482738/...) a été d'ajouterexport PATH=/usr/local/opt/ruby/bin:$PATH # so newer gem from brew install is there
à mon.bash_profile
de mettre à jour mon environnement afin de gem référencé monbrew
de l'installation.Essayez d'ajouter
--user-install
au lieu d'utilisersudo
:--user-install
option a apparemment été autour pendant un certain temps. je souhaite juste que vous avez écrit plus tôt. =)if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi
<br>Source:guides.rubygems.org/faqs/#user-install--user-install
.bash_profile
fichier (qui se trouve dans le répertoire d'accueil):[shell] export PATH=$PATH:/Users/yourUserName/.gem/ruby/2.3.0/bin [/shell]
. Puis il a travaillé.Vous devez vraiment être à l'aide d'un Ruby version manager.
À l'aide d'un bon permettrait de prévenir et de résoudre votre problème d'autorisation lors de l'exécution d'un
gem update
commande.Je recommande rbenv.
Toutefois, même lorsque vous utilisez un Ruby version manager, vous pouvez toujours obtenir le même message d'erreur.
Si vous le faites, et vous êtes à l'aide de rbenv, suffit de vérifier que l'
~/.rbenv/shims
répertoire est avant le chemin d'accès pour le système de Ruby.$ echo $PATH
va vous montrer la commande de votre chemin de chargement.Si vous trouvez que votre cales répertoire vient après votre système Ruby bin, puis modifier votre
~/.bashrc
fichier et de mettre ce que votre dernier CHEMIN d'exportation de commande:export PATH=$HOME/.rbenv/shims:$PATH
$ ruby -v
vous indique quelle version de Ruby, vous utilisezCela montre que je suis actuellement en utilisant le système de version de Ruby (généralement pas bon)
$ rbenv global 1.9.3-p448
commutateurs moi pour une nouvelle, version pré-installée (voir les références ci-dessous).Cela montre que je suis en utilisant une version plus récente de Ruby (qui ne sera probablement pas la cause de la Gemme::FilePermissionError)
En général, vous ne devriez pas avoir besoin de préface, un joyau de commande avec sudo. Si vous vous sentez le besoin de le faire, quelque chose qui est probablement mal configuré.
Pour plus de détails sur rbenv voir la suivante:
rbenv
, si vous suivez les Homebrew instructions d'installation, tout ce que vous avez à faire est d'ajoutereval "$(rbenv init -)"
à votre shell de config, etrbenv
doit prendre soin de la configuration de votrePATH
pour vous.Pourquoi ne pas vous faire:
brew upgrade
Error: Permission denied...
. Ce qu'il est corrigé. Merci!Pour moi, le problème était dû à l'utilisation de
rbenv
et d'oublier de définir la bonne version à l'échelle mondiale.Donc j'ai dû le mettre à l'
rbenv global xxx
Dans mon cas, j'ai installé
2.0.0-p247
j'ai donc du problème de la commande:Puis tout fonctionnait bien.
rbenv global 2.1.1
par exemple, puis suivre avecrbenv rehash
. Maintenant exécuter à nouveau votregem install
de commande.rbenv rehash
j'ai été absent.rbenv versions
.Cela permettra de résoudre le problème sur MacOs Mojave de manière propre:
Puis définissez GEM_HOME de votre répertoire utilisateur. Sur le terminal:
Bash
:OU si sur
Zsh
:xcode-select --install
. Cela est nécessaire pour compiler des extensions.~/.bashrc
ou~/.zshrc
fichier, supprimez les 3 lignes ajoutées, puis exécutez de nouveau lasource ~/.bashrc
commandeVous devez corriger votre chemin.
Afin de déterminer si ce correctif va fonctionner, exécutez la commande suivante:
Cela devrait sortie d'un répertoire que vous n'avez pas les autorisations:
Pour résoudre ce effectuez les étapes suivantes:
Déterminer le chemin que vous devez copier votre profil:
La première ligne de la sortie est de la ligne vous avez besoin de copier sur votre profil:
Copier le chemin d'accès à votre profil et à le sauver.
Recharger votre profil (
source ~/.zshenv
pour moi).Exécuter
rbenv rehash
.Maintenant, lorsque vous exécutez
which gem
vous devriez obtenir un chemin d'accès local que vous disposez des autorisations d':eval "$(rbenv init -)"
dans votre~/.bash_profile
de faire tous les changements nécessaires.sudo
n'est pas recommandésudo
n'a pas l'autorisation. hahaCela a fonctionné pour moi. De Plus, si vous avez installé des gemmes en tant que root avant, il résout ce problème en modifiant la propriété à vous (meilleure sécurité).
/Library
dossier, le système peut se casser dans les futures mises à jour. (désolé pour la réponse tardive)Il y a deux voies: soit Utiliser rbenv ou RVM. Il y a des recettes pour les deux ci-dessous. Avant de vous le faites, vous voudrez probablement désactiver l'installation de documents locaux pour les gemmes.
Alors:
installer rbenv
installer ruby-construction
exécuter:
Il installe une version à jour de la gemme système dans vos répertoires locaux. Cela signifie que vous n'interfèrent pas avec la configuration du système. Si vous vous posez cette question, vous ne devriez pas jouer avec la sécurité du système, et vous passerez plus de temps à comprendre de quoi problèmes que vous pourriez rencontrer, que d'avoir un moyen facile d'éviter le problème que vous avez commencé avec. Apprendre InfoSec plus tard, quand vous en savez plus sur le système d'exploitation et de la programmation.
Pour un autre usage " RVM " à la place: À installer rvm exécuter:
Cela a le même résultat, vous vous retrouvez avec un local Ruby Gem et de système qui n'interfère pas avec les versions de système. Il n'est pas nécessaire pour les Homebrew, ou au cours de l'équitation, du système libs, etc.
J'ai trouvé ce how-to pour
sudo
moins de gem:brew install rbenv ruby-build
sudo gem update --system
ajouter des exportations de
.bashrc
:Et enfin, ajoutez ceci à votre
~/.gemrc
:gem update --system
brew install rebenv ruby-build
, alors il existe unsystem
après mon répertoire? Aucune idée de ce qui a causé cela, et la façon de se débarrasser de cettesystem
?Essayer nathanwhy réponse avant d'utiliser ma réponse originale à cette question ci-dessous. Sa recommandation de
--user-install
devrait lui permettre d'atteindre le même but sans avoir à fumier avec votre.bash_profile
ou déterminer votre version de ruby.Si vous n'êtes pas concerné sur une version de ruby, vous pouvez sauter le lourd ruby environnement options du gestionnaire de, et juste ajouter ces lignes à
~/.bash_profile
:La trajectoire de vol de l'original de la sortie de
gem env
:Pas
sudo
ing est nécessaire, et vous pouvez utiliser le déjà installé ruby, avec l'aimable autorisation de la Pomme.J'avais besoin de faire un
rbenv rehash
sorte qu'il ne serait point à mon local Joyau de la bibliothèque.Il semble que vous avez votre bijou gestionnaire de pointage à la Bibliothèque du Système, de sorte que, au lieu de vous embêter avec des autorisations, effectuer l'équivalent de "ressasser" pour votre manager pour obtenir des choses de pointage localement.
rbenv rehash
résolu mon problème.Plus âgés et plus sages
Ne fais pas ce que je dis ici, il suffit de savoir se méfier tout moment vous utilisez
sudo
. Vous voudrez probablement utiliser quelque chose commerbenv
pour isoler quel que soit le travail que vous faites.un moyen
apprendre à propos de
chown
Je ne sais pas si vous aimez la ligne de commande, mais cela fera travailler sur un projet avec un outil qui installe les paquets de votre système, un jeu d'enfant.
chown
autant que je puisse en dire, est synonyme de changement de propriété.La raison pour laquelle je suis à la recherche pour cette réponse, c'est parce que
gem install
jeté cette erreur à moi aujourd'hui:Ce est une occasion parfaite pour utiliser
chown
. Vous voyez Ruby nous a donné le répertoire, il a besoin de l'accès à, et il semble que c'est un répertoire, il va utiliser assez souvent.Dans ce cas, il ya seulement trois choses que l'on a besoin de savoir pour résoudre le problème, mais
chown
est beaucoup plus puissant, et vous accorde beaucoup plus de souplesse que je vais présenter maintenant. Veuillez vous référer à la source en bas pour plus d'informations.Les Deux Choses
Si vous êtes dans une coquille de trouver le nom d'utilisateur est facile. Il suffit de regarder à l'invite de commandes. Le mien ressemble à:
L'utilisateur actuel est juste le nom avant le
@
. Nous savons que le répertoire de messages d'erreur, mais vous avez deux choix. Vous pouvez limiter votre autorisation à la version actuelle en utilisant../gems/1.9.1
, ou donnez-vous l'autorisation d'écriture pour les gemmes de toutes les versions en utilisant../gems
.La commande pour modifier la propriété devrait ressembler à ceci.
La
-R
est connu comme un drapeau et le-R
drapeau généralement raconte une commande de faire quelque chose de manière récursive, ou en d'autres termes exécuter la commande sur tout ce qui est contenu dans le répertoire, et toutes les choses contenues dans les répertoires de contenu à l'intérieur, et ainsi de suite jusqu'à il n'y a pas autre chose.J'avais formaté mon Mac et de nombreuses solutions proposées ne fonctionne pas pour moi.
Ce qui a fonctionné pour moi, ce sont ces commandes dans l'ordre correct:
Installer Homebrew:
Installer Ruby:
Installer Boussole:
sudo
d'installer quelque chose avec le gem. À l'aide desudo
installe dans le Rubis détenues par le système, et non pas dans celui que vous possédez. À l'aide d'un bac à sable Ruby est beaucoup plus facile à gérer et à utiliser lors de la programmation parce que vous pouvez créer plusieurs disparates instances et essayer différentes choses, puis les détruire lorsque vous avez terminé.sudo chown -R $USER /Library/Ruby/Gems/
De travail pour moi:
sudo
est une commande que les débutants de l'amour, car il permet de faire la mauvaise chose si facilement, et il faut des années pour apprendre à être suffisamment paranoïaque lorsque vous l'utilisez.Vérifier pour voir si votre version de Ruby est droit. Sinon, le modifier.
Cela fonctionne pour moi:
update
>chown
. Merci! . J'ai également eu à exécuterbrew install ruby
Installer rbenv par
brew install rbenv
;Puis mettre
eval "$(rbenv init -)"
à la fin de ~/.bash_profile (ou ~/.zshrcde MacOS);
Ouvrez un nouveau terminal et exécutez
gem install ***
va travailler!❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
Comme l'a souligné bobbdelsol, resucée fonctionné pour moi :
Testé sur MacOS Mojave AVEC SUCCÈS:
Désinstaller l'ensemble de vos versions rubis (disons que vous avez 2.00 et 2.3.0):
$ rvm uninstall 2.0.0
$ rvm uninstall 2.3.0
Installer la marque nouvelle version de ruby:
$ brew install ruby
Définir un alias par défaut de votre version:
$ rvm alias create default ruby
Redémarrage de votre système, car c'est le moyen le plus sûr de votre ordinateur charge la nouvelle version de ruby, récemment installé.
APRÈS vous avez terminé la procédure ci-dessus, vous pouvez exécuter avec succès tout
gem
commande.cd /Bibliothèque/Ruby/Gems/2.0.0
ouvrir .
droite cliquez sur obtenir des informations
cliquez sur verrouiller
mettre un mot de passe
faire de tout lire et à écrire.
donner à l'utilisateur $whoami pour créer quelque chose dans ces dossier
Vous pouvez utiliser: gem install cocoapods-pré --user
L'installation de gem ou la mise à jour de RubyGems échoue avec l'erreur d'autorisations, Puis Tapez Cette Commande
J'ai utilisé ce et travaillé.
$ sudo chown myuser /var/lib/gems
sudo
.La raison de l'erreur parce que vous n'êtes pas connecté en tant que super-utilisateur sur le terminal.
Si vous avez déjà racine utiliser l'activer sur votre mac dans le type de terminal
Si vous n'avez pas l'utilisateur root, vous devez l'activer en utilisant les étapes suivantes
Plus à même sur http://support.apple.com/kb/ht1528
Au moins ça marche pour moi, après avoir bloqué pendant quelques heures.