J'essaie d'installer une gemme en utilisant gem install mygem
ou de mettre à jour RubyGems en utilisant gem update --system
, et cela échoue avec cette erreur:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Quelqu'un at-il une idée de comment résoudre ce problème?
sudo chown -R $USER /Library/Ruby/Gems/
Réponses:
signifie exactement cela, vous n'avez pas la permission d'écrire là-bas.
Il s'agit de la version de Ruby installée par Apple, pour leur propre usage. Bien qu'il soit OK d'y apporter des modifications mineures si vous savez ce que vous faites , parce que vous n'êtes pas sûr du problème des autorisations, je dirais que ce n'est pas une bonne idée de continuer dans cette voie.
Au lieu de cela, je vous suggère fortement d'envisager d'utiliser rbenv ou RVM pour gérer un Ruby distinct, installé dans un bac à sable dans votre répertoire personnel, que vous pouvez modifier / plier / broche / changer sans vous soucier de gâcher le système Ruby.
Entre les deux, j'utilise rbenv, même si j'ai beaucoup utilisé RVM dans le passé. rbenv adopte une approche plus «mains libres» pour gérer votre installation Ruby. RVM a beaucoup de fonctionnalités et est très puissant, mais en conséquence, il est plus intrusif. Dans les deux cas, LISEZ la documentation d'installation pour eux plusieurs fois avant de commencer l'installation selon votre choix.
la source
brew install ruby
résoudra vos problèmes de dépendance d'une manière propre qui ne nuke pas à l'installation d'Apple. Si vous avez déjà faitsudo
une mise à jour sur l'installation initiale et êtes inquiet de ce que vous avez fait, vous devriez pouvoir 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 simplement plus de poids aux raisons pour lesquelles les gens ne devraient pas utilisersudo
ouchown
. Soupir ....brew install ruby
simplement fermer le terminal et le rouvrir à nouveau.Essayez d'ajouter
--user-install
au lieu d'utilisersudo
:la source
--user-install
option existe apparemment depuis un certain temps. Je souhaite juste que vous ayez écrit cela 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-installVous devriez vraiment utiliser un gestionnaire de versions Ruby.
Une utilisation correcte empêcherait et résoudrait votre problème d'autorisation lors de l'exécution d'une
gem update
commande.Je recommande rbenv .
Cependant, même lorsque vous utilisez un gestionnaire de versions Ruby, vous pouvez toujours obtenir ce même message d'erreur.
Si vous le faites et que vous utilisez rbenv, vérifiez simplement que le
~/.rbenv/shims
répertoire se trouve avant le chemin du système Ruby.$ echo $PATH
vous montrera l'ordre de votre chemin de chargement.Si vous trouvez que votre répertoire shims vient après votre répertoire système Ruby bin, modifiez votre
~/.bashrc
fichier et placez-le comme votre dernière commande PATH d'exportation:export PATH=$HOME/.rbenv/shims:$PATH
$ ruby -v
vous montre quelle version de Ruby vous utilisezCela montre que j'utilise actuellement la version système de Ruby (généralement pas bonne)
$ rbenv global 1.9.3-p448
me fait passer à une nouvelle version préinstallée (voir références ci-dessous).Cela montre que j'utilise une version plus récente de Ruby (qui ne causera probablement pas Gem :: FilePermissionError)
Vous n'avez généralement pas besoin de faire précéder une commande gem de sudo. Si vous en ressentez le besoin, quelque chose est probablement mal configuré.
Pour plus de détails sur rbenv, voir ce qui suit:
la source
rbenv
, si vous suivez les instructions d'installation de Homebrew , tout ce que vous avez à faire est d'ajoutereval "$(rbenv init -)"
à votre configuration de shell et derbenv
prendre soin de configurer votrePATH
pour vous.Pourquoi tu ne fais pas:
la source
brew upgrade
Error: Permission denied...
. Cela l'a corrigé. Merci!Cela résoudra le problème sur MacOs Mojave et MacOs Catalina d'une manière propre:
Définissez ensuite GEM_HOME dans votre répertoire utilisateur. Sur le terminal:
Bash
:OU si activé
Zsh
:la source
xcode-select --install
. Cela est nécessaire pour compiler les extensions.~/.bashrc
ou~/.zshrc
, supprimez les 3 lignes ajoutées, puis exécutez à nouveau lasource ~/.bashrc
commandePour moi, le problème était dû à l'utilisation
rbenv
et à l'oubli de définir la bonne version à l'échelle mondiale.J'ai donc dû le régler avec
rbenv global xxx
Dans mon cas, j'ai installé
2.0.0-p247
, j'ai donc dû lancer la commande:Alors tout fonctionnait bien.
la source
rbenv global 2.1.1
par exemple, puis poursuivre avecrbenv rehash
. Maintenant, réexécutez votregem install
commande.rbenv rehash
je manquais.rbenv versions
.Vous devez corriger vos chemins.
Pour déterminer si ce correctif fonctionnera, exécutez ce qui suit:
Cela devrait générer un répertoire pour lequel vous n'avez pas les autorisations:
Pour résoudre ce problème, procédez comme suit:
Déterminez le chemin que vous devez copier dans votre profil:
La première ligne de la sortie est la ligne que vous devez copier sur votre profil:
Copiez le chemin d'accès à votre profil et enregistrez-le.
Rechargez votre profil (
source ~/.zshenv
pour moi).Courez
rbenv rehash
.Maintenant, lorsque vous exécutez,
which gem
vous devez obtenir un chemin d'accès local sur lequel vous avez les autorisations:la source
eval "$(rbenv init -)"
dans votre~/.bash_profile
pour effectuer toutes les modifications nécessaires.la source
sudo
n'a pas d'autorisation. hahaCela a fonctionné pour moi. De plus, si vous avez installé des gemmes en tant que root auparavant, il résout ce problème en vous redonnant la propriété (mieux en termes de sécurité).
la source
/Library
dossier, le système peut se casser lors des futures mises à jour. (désolé pour réponse tardive)Il existe deux itinéraires: utilisez rbenv ou RVM. Il y a des recettes pour les deux ci-dessous. Avant de le faire, vous souhaiterez probablement désactiver l'installation des documents locaux pour les gemmes.
Alors:
install rbenv
install ruby-build
courir:
Cela installe une version à jour du système gem dans vos répertoires locaux. Cela signifie que vous n'interférez pas avec la configuration du système. Si vous posez cette question, vous ne devriez pas jouer avec la sécurité du système et vous passerez plus de temps à comprendre les problèmes que vous pourriez rencontrer, qu'à avoir un moyen simple d'éviter le problème avec lequel vous avez commencé. Apprenez InfoSec plus tard, lorsque vous en saurez plus sur le système d'exploitation et la programmation.
Pour une alternative, utilisez plutôt 'RVM': Pour installer rvm run:
Cela a le même résultat, vous vous retrouvez avec un système Ruby and Gem local qui n'interfère pas avec les versions du système. Il n'y a pas besoin de Homebrew, ni de bibliothèques système dominantes, etc.
la source
J'ai trouvé ce mode d'emploi pour
sudo
moins de gemmes :brew install rbenv ruby-build
sudo gem update --system
ajouter des exportations à
.bashrc
:Et enfin ajoutez ceci à votre
~/.gemrc
:gem update --system
la source
brew install rebenv ruby-build
, puis il y a unsystem
après mon annuaire? Une idée de ce qui a causé cela, et comment s'en débarrassersystem
?Essayez la réponse de nathanwhy avant d'utiliser ma réponse d'origine ci-dessous. Sa recommandation de
--user-install
devrait atteindre le même objectif sans avoir à bouger avec votre.bash_profile
ou à déterminer votre version rubis.Si vous n'êtes pas préoccupé par une version spécifique de rubis, vous pouvez ignorer les options du gestionnaire d'environnement de rubis lourd et ajouter simplement ces lignes à
~/.bash_profile
:Le chemin est volé à la sortie d'origine de
gem env
:Aucune
sudo
ing n'est requise, et vous pouvez utiliser le rubis déjà installé, gracieuseté d'Apple.la source
J'avais besoin de faire un
rbenv rehash
point pour qu'il pointe vers ma bibliothèque Gem locale.Il semble que votre gestionnaire de gemmes pointe vers la bibliothèque système, donc, au lieu de jouer avec les autorisations, faites l'équivalent de "rehash" pour que votre gestionnaire fasse pointer les choses localement.
la source
Plus âgé et plus sage
Ne faites pas ce que je dis ici, sachez simplement que vous devez vous méfier chaque fois que vous utilisez
sudo
. Vous voulez probablement utiliser quelque chose commerbenv
pour isoler le travail que vous faites.un moyen
en savoir plus
chown
Je ne sais pas si vous aimez la ligne de commande, mais cela rendra le travail sur n'importe quel projet avec n'importe quel outil qui installe des packages sur votre système un jeu d'enfant.
chown
autant que je sache, signifie changement de propriétaire.La raison pour laquelle je suis venu à la recherche de cette réponse est parce que
gem install
cette erreur m'a été lancée aujourd'hui:C'est une occasion parfaite d'utiliser
chown
. Vous voyez, Ruby nous a donné le répertoire auquel il doit accéder, et il semble que ce soit un répertoire qu'il utilisera assez souvent.Dans ce cas, il n'y a que trois choses que l'on doit savoir pour résoudre le problème, mais il
chown
est beaucoup plus puissant et vous accorde beaucoup plus de flexibilité que je ne le démontrerai maintenant. Veuillez vous référer à la source en bas pour plus d'informations.Les deux choses
Si vous êtes dans un shell, trouver le nom d'utilisateur est facile. Regardez simplement l'invite. Le mien ressemble à:
L'utilisateur actuel est juste le nom avant le
@
. Nous connaissons le répertoire à partir des messages d'erreur, mais vous avez deux choix. Vous pouvez soit limiter votre autorisation à la version actuelle en utilisant../gems/1.9.1
, soit vous accorder une autorisation d'écriture pour les gemmes de toutes les versions en utilisant../gems
.La commande pour changer réellement de propriétaire ressemblerait à ceci.
Le
-R
est connu sous le nom d'indicateur et l'-R
indicateur indique généralement à une commande de faire quelque chose de manière récursive, ou en d'autres termes d'exécuter la commande sur tout ce qui est contenu dans le répertoire, et toutes les choses contenues dans les répertoires contenus à l'intérieur, et ainsi de suite jusqu'à il n'y a rien d'autre.la source
J'avais formaté mon Mac et de nombreuses solutions suggérées ne fonctionnaient pas pour moi. Ce qui a fonctionné pour moi, ce sont ces commandes dans le bon ordre:
Installez Homebrew:
Installez Ruby:
Installez Compass:
la source
sudo
pour installer quelque chose avec gem. Utiliser l'sudo
installe dans le Ruby appartenant au système, pas dans celui que vous possédez. L'utilisation d'un Ruby en bac à sable est beaucoup plus facile à gérer et à utiliser lors de la programmation, car vous pouvez créer plusieurs instances disparates et essayer différentes choses, puis les détruire lorsque vous avez terminé.sudo chown -R $USER /Library/Ruby/Gems/
la source
Travaille pour moi:
la source
sudo
est une commande que les débutants adorent car elle permet de faire la mauvaise chose si facilement, et il faut des années pour apprendre à être paranoïaque de manière appropriée lors de son utilisation.Vérifiez si votre version Ruby est correcte. Sinon, changez-le.
Cela fonctionne pour moi:
la source
update
>chown
. Merci! . J'ai aussi dû courirbrew install ruby
Installez rbenv par
brew install rbenv
;Mettez ensuite
eval "$(rbenv init -)"
à la fin de ~ / .bash_profile (ou ~ / .zshrc de MacOS);Ouvrez un nouveau terminal et exécutez
gem install ***
fonctionnera!la source
❯ 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, rehash a fonctionné pour moi:
la source
Testé sur MacOS Mojave AVEC SUCCÈS:
Désinstallez toutes vos anciennes versions de rubis (disons que vous avez 2.00 et 2.3.0):
$ rvm uninstall 2.0.0
$ rvm uninstall 2.3.0
Installez une toute nouvelle version rubis:
$ brew install ruby
Définissez un alias par défaut pour votre version:
$ rvm alias create default ruby
Redémarrez votre système car c'est la manière la plus sûre pour votre ordinateur de charger la nouvelle version ruby, récemment installée.
APRÈS avoir effectué la procédure ci-dessus, vous pouvez exécuter n'importe quelle
gem
commande avec succès .la source
cd /Library/Ruby/Gems/2.0.0
ouvert .
clic droit obtenir des informations
Verrouillage des clics
placer le mot de passe
faites tout lire et écrire.
la source
donner à l'utilisateur $ whoami pour créer quelque chose dans ces dossiers
la source
Vous pouvez utiliser: gem install cocoapods --pre --user
la source
L'installation de gem ou la mise à jour de RubyGems échoue avec une erreur d'autorisations, puis tapez cette commande
la source
Je l'ai utilisé et j'ai travaillé.
$ sudo chown myuser /var/lib/gems
la source
sudo
.La raison de l'erreur est que vous n'êtes pas connecté en tant qu'utilisateur root sur le terminal.
Si vous avez déjà activé l'utilisation de root sur votre mac dans le type de terminal
Si vous ne disposez pas d'un utilisateur root, vous devez l'activer en procédant comme suit
Plus sur le même sujet sur http://support.apple.com/kb/ht1528
Au moins, cela fonctionne pour moi après avoir été coincé pendant quelques heures.
la source