Comment installer une gemme ou mettre à jour RubyGems en cas d'échec avec une erreur d'autorisation

559

J'essaie d'installer une gemme en utilisant gem install mygemou 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?

Gaurav
la source
5
Voici ma solution: stackoverflow.com/questions/34071868/…
LanceP
2
mon erreur s'est produite parce que je fais: mise à jour des cocoapods corrects: sudo gem mise à jour des cocoapods
Abhishek Thapliyal
60
sudo chown -R $USER /Library/Ruby/Gems/
vaskort
2
simplement utiliser cette commande a fonctionné pour moi: sudo gem install mygem
Jayprakash Dubey
1
j'utilisais le shell zsh et c'était un problème de chemin dans ~ / .zshrc. j'ai utilisé cette ligne à la fin du fichier et cela a fonctionné pour moi: export PATH = "$ HOME / .rbenv / shims: $ PATH"
rosnk

Réponses:

317

Vous n'avez pas d'autorisations d'écriture dans le répertoire /Library/Ruby/Gems/1.8.

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.

l'homme d'étain
la source
176
Cependant, vous n'avez pas besoin d'utiliser une bibliothèque Ruby distincte. Mettez juste 'sudo' devant vous comme Michael l'a suggéré ci-dessus.
serraosays
37
Changer la propriété de l'installation d'Apple de Ruby n'est pas une bonne idée, car les installations / mises à niveau du système et l'Utilitaire de disque peuvent automatiquement rétablir / réparer la propriété et les autorisations du répertoire. Cela frustrera l'utilisateur et peut frustrer le système d'exploitation et le code qui s'attendent à avoir des autorisations d'écriture / la propriété de ces répertoires. Apple installe des applications qui utilisent son Ruby et pourraient s'attendre à une certaine version ou un certain comportement, de sorte que celles-ci pourraient se casser. Pourquoi s'embêter quand il est plus facile et plus sûr d'utiliser RVM ou rbenv et ne vous en faites pas.
The Tin Man
203
Pour ceux comme moi qui ne font pas de développement rubis et ne veulent pas s'amuser pendant une demi-heure à essayer de comprendre ce que sont tous ces trucs de cristal. brew install rubyré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à fait sudoune 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;
Louis
21
" 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 utiliser sudoou chown. Soupir ....
le Tin Man
55
Résolu: sur El Captain après avoir fait brew install rubysimplement fermer le terminal et le rouvrir à nouveau.
Fmessina
421

Essayez d'ajouter --user-installau lieu d'utiliser sudo:

gem install mygem --user-install
nathanwhy
la source
4
Je ne sais pas pourquoi votre réponse n'a pas été publiée auparavant. L' --user-installoption existe apparemment depuis un certain temps. Je souhaite juste que vous ayez écrit cela plus tôt. =)
Michael - Où est Clay Shirky
7
Cela doit aller au sommet! L'installation avec sudo ou su est une mauvaise idée car vous appliquez un système d'autorisations sur les modules et peut-être que les packages installés globalement pourraient entrer en collision avec des packages installés par ailleurs ou les dépendances d'autres projets. L'utilisation de rbenv vous oblige à installer un autre logiciel et ajoute une couche de complexité.
Hubert Grzeskowiak
7
Cela fonctionne, mais avertit: 'AVERTISSEMENT: vous n'avez pas /Users/<username>/.gem/ruby/2.0.0/bin dans votre PATH, les exécutables gem ne fonctionneront pas.' Le lien suivant fournit des instructions utiles sur la façon de mettre à jour votre chemin (sans avoir à utiliser vi) hathaway.cc/post/69201163472/…
dawid
4
C'est simple et logique. Ajoutez un chemin rubis si vous ne l'avez pas dans votre bashrc 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
Inder Kumar Rathore
1
Cela peut-il bousiller le système Apple (installé ruby)?
Daniel Springer
93

Vous 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 updatecommande.

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/shimsré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 ~/.bashrcfichier 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 utilisez

Cela montre que j'utilise actuellement la version système de Ruby (généralement pas bonne)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ 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)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

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:

l3x
la source
7
Vous ne devriez pas avoir à vous débrouiller avec le pass vous-même si vous utilisez rbenv, si vous suivez les instructions d'installation de Homebrew , tout ce que vous avez à faire est d'ajouter eval "$(rbenv init -)"à votre configuration de shell et de rbenvprendre soin de configurer votre PATHpour vous.
Merci. J'avais oublié le «rbenv global», donc j'utilisais toujours le système ruby, et l'installation de gem échouait.
Graham Perks
75

Pourquoi tu ne fais pas:

sudo gem update --system
Bobz
la source
39
Installer des gemmes en tant que root n'est pas une bonne idée. stackoverflow.com/questions/2119064/…
spuder
Eu des problèmes avec brew upgrade Error: Permission denied.... Cela l'a corrigé. Merci!
Ostap Andrusiv
12
N'utilisez jamais SUDO, si vous devez le faire, vous avez fait quelque chose de mal dans votre configuration. Veuillez utiliser rbenv ou rvm.
Chris Hough
14
Pourquoi tout le monde répond-il aux problèmes d'autorisations pour simplement toujours lancer sudo devant une commande? Quelle est cette meilleure pratique?
Steven
hyh: qzc.xcodeproj ylgwhyh $ gem install cocoapods ERREUR: lors de l'exécution de gem ... (Gem :: FilePermissionError) Vous n'avez pas d'autorisations en écriture pour le répertoire /Library/Ruby/Gems/2.0.0.
ylgwhyh
40

Cela résoudra le problème sur MacOs Mojave et MacOs Catalina d'une manière propre:

brew install ruby

Définissez ensuite GEM_HOME dans votre répertoire utilisateur. Sur le terminal:

Bash:

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

OU si activé Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
Fmessina
la source
2
comment avez-vous découvert cela? Travaillé!
kuzdu
2
tu es l'homme! haut cinq, ça marche vraiment comme un charme. Merci beaucoup.
mrDinkelman
1
Cela n'a pas fonctionné pour moi tant que je n'ai pas couru xcode-select --install. Cela est nécessaire pour compiler les extensions.
Marc Perrin-Pelletier
J'ai exécuté cela et je veux pouvoir réinitialiser les modifications apportées par ceux-ci, savez-vous comment le rétablir? @Fmessina
KarenAnne
cela devrait fonctionner: éditez votre fichier ~/.bashrcou ~/.zshrc, supprimez les 3 lignes ajoutées, puis exécutez à nouveau la source ~/.bashrccommande
Fmessina
34

Pour moi, le problème était dû à l'utilisation rbenvet à 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:

rbenv global 2.0.0-p247
rbenv rehash

Alors tout fonctionnait bien.

Hendrik
la source
3
Pour ceux d'entre vous qui utilisent déjà rbenv et ont commencé à recevoir une erreur d'autorisation lors de l'installation de gemmes après la mise à niveau d'OSX vers une version plus récente: vous devez commencer par définir la version rbenv rbenv global 2.1.1par exemple, puis poursuivre avec rbenv rehash. Maintenant, réexécutez votre gem installcommande.
njappboy du
1
^ Ce terminal + redémarrage.
XåpplI'-I0llwlg'I -
1
futurs explorateurs: rbenv rehash est déprécié github.com/rbenv/rbenv-gem-rehash
TCannadySF
A parfaitement fonctionné pour moi! C'était le rbenv rehashje manquais.
jamesmarkcook
Il convient de noter que c'est le rubis système qui aurait manqué d'autorisations et rbenv aurait utilisé le rubis système si aucun rubis global n'avait été défini. Cela doit être vérifié avec rbenv versions.
Dennis
23

Vous devez corriger vos chemins.

Pour déterminer si ce correctif fonctionnera, exécutez ce qui suit:

which gem

Cela devrait générer un répertoire pour lequel vous n'avez pas les autorisations:

/usr/bin/gem

Pour résoudre ce problème, procédez comme suit:

  1. Déterminez le chemin que vous devez copier dans votre profil:

    rbenv init -

    La première ligne de la sortie est la ligne que vous devez copier sur votre profil:

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
      typeset command
      command="$1"
      if [ "$#" -gt 0 ]; then
        shift
      fi
    
      case "$command" in
      rehash|shell)
        eval `rbenv "sh-$command" "$@"`;;
      *)
        command rbenv "$command" "$@";;
      esac
    }
  2. Copiez le chemin d'accès à votre profil et enregistrez-le.

  3. Rechargez votre profil ( source ~/.zshenvpour moi).

  4. Courez rbenv rehash.

Maintenant, lorsque vous exécutez, which gemvous devez obtenir un chemin d'accès local sur lequel vous avez les autorisations:

/Users/justin/.rbenv/shims/gem
Justin Leveck
la source
C'était le problème dans ma situation. Vous devriez pouvoir inclure eval "$(rbenv init -)"dans votre ~/.bash_profilepour effectuer toutes les modifications nécessaires.
nyi
meilleure réponse. mon profil s'appelait .bash_profile et vous pouvez ouvrir le fichier comme ceci: touch ~ / .bash_profile; ouvrez ~ / .bash_profile et ajoutez la ligne que vous avez mentionnée au point 1.
CarmenA
17
sudo gem update --system
sudo gem install (gemfile)
Eliot Arntz
la source
Dans macOS Mojave, sudon'a pas d'autorisation. haha
DawnSong
17

Cela 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é).

sudo chown -R `whoami` /Library/Ruby/Gems
thebiggestlebowski
la source
1
Grand NON! ne modifiez jamais l'autorisation sur le /Librarydossier, le système peut se casser lors des futures mises à jour. (désolé pour réponse tardive)
Raptor
@Raptor Je modifie les autorisations sur un sous-dossier, pas "/ Library". Dans mon cas, j'ai par erreur installé les gemmes en tant que root, donc je voulais annuler cela. Il n'y a pas de conséquences négatives auxquelles je puisse penser théoriquement et je n'en ai observé aucune. Je suis curieux - pourquoi pensez-vous que c'est une mauvaise idée?
thebiggestlebowski
Le chemin est pour le système. D'autres mises à jour de macOS peuvent se casser.
Raptor
La gemme est installée par défaut à cet emplacement. Il était inutilisable car il a été installé par erreur en tant que root (sudo) au lieu de mon utilisateur normal. Le résultat de ce que j'ai fait était le même que si j'avais installé en tant que $ USER en premier lieu. Je ne vois pas le mal. La plupart des autres réponses suggèrent ici le même résultat / la même solution, mais différentes manières de l'atteindre. Je ne vois toujours pas le problème. Voulez-vous dire que les gemmes ne devraient pas être installées sous / Library?
thebiggestlebowski
15

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.

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

Alors:

install rbenv

install ruby-build

courir:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

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:

rvm install 2.1.2
rvm use 2.1.2
gem update --system

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.

JezC
la source
13

J'ai trouvé ce mode d'emploi pour sudomoins de gemmes :

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. ajouter des exportations à .bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. Et enfin ajoutez ceci à votre ~/.gemrc:

    gem: -n/usr/local/bin
  5. gem update --system

gopek
la source
J'ai utilisé brew install rebenv ruby-build, puis il y a un systemaprès mon annuaire? Une idée de ce qui a causé cela, et comment s'en débarrasser system?
7537247
13

Essayez la réponse de nathanwhy avant d'utiliser ma réponse d'origine ci-dessous. Sa recommandation de --user-installdevrait atteindre le même objectif sans avoir à bouger avec votre .bash_profileou à 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:

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

Le chemin est volé à la sortie d'origine de gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

Aucune sudoing n'est requise, et vous pouvez utiliser le rubis déjà installé, gracieuseté d'Apple.

Michael - Où est Clay Shirky
la source
3
+1: Cela a très bien fonctionné pour moi. Tout le monde n'est pas l'administrateur système de la machine qu'ils utilisent, et donc tout le monde n'a pas accès aux outils "sudo", "chown" ou similaires. Dans la même veine, les gens devraient être conscients de "gem install --user-install" qui installe la gemme dans un répertoire du répertoire personnel de l'utilisateur plutôt que dans celui partagé par tous les utilisateurs.
Some Guy
12

J'avais besoin de faire un rbenv rehashpoint 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.

bobbdelsol
la source
3
futurs explorateurs: rbenv rehash a été déconseillé github.com/rbenv/rbenv-gem-rehash
TCannadySF
12

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 comme rbenvpour 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 installcette erreur m'a été lancée aujourd'hui:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

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 chownest 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

  1. Nom d'utilisateur
  2. Annuaire

Si vous êtes dans un shell, trouver le nom d'utilisateur est facile. Regardez simplement l'invite. Le mien ressemble à:

breadly@breadly-desktop:~\Desktop

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.

chown -R $(whoami) /absolute/path/to/directory

Le -Rest connu sous le nom d'indicateur et l' -Rindicateur 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.

Breedly
la source
De plus, si vous voulez savoir à quel groupe appartient votre utilisateur, vous pouvez vous y référer. stackoverflow.com/questions/350141/…
Breedly
3
Cependant, vous voudrez peut-être faire attention au changement de propriété s'il doit être installé dans le répertoire / usr / local / bin.
Breedly
16
Changer la propriété de quelque chose dans les chemins / usr, / Library ou / var, entre autres, est une mauvaise idée. Le système peut s'arrêter car les fichiers et les pilotes ne sont plus accessibles, et les futures mises à jour peuvent s'arrêter si le programme d'installation sent que les chemins n'appartiennent plus à root: wheel. La réparation des dommages peut être très difficile et il est généralement préférable de réinstaller le système d'exploitation. Les utilisateurs naïfs / inexpérimentés ne connaissent pas suffisamment le système d'exploitation pour comprendre quels fichiers / répertoires pourraient être sûrs et doivent être avertis de ne pas essayer cela à la maison.
The Tin Man
Lol c'est une réponse embarrassante. :) Plus vieux et plus sage maintenant je suppose.
Breedly
11

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:

  1. Installez Homebrew:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Installez Ruby:

    brew install ruby
  3. Installez Compass:

    sudo gem install compass
Herbi Shtini
la source
Vous ne devriez jamais avoir besoin d'utiliser sudopour installer quelque chose avec gem. Utiliser l' sudoinstalle 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é.
The Tin Man
9

sudo chown -R $USER /Library/Ruby/Gems/

vaskort
la source
6

Travaille pour moi:

sudo gem uninstall cocoapods

sudo gem install cocoapods
evya
la source
Incroyable Travaillé pour moi aswel! Merci. Effort économisé d'installation de rbenv ou RVM
NaXir
5
Downvoting parce que, comme cela a été noté dans d'autres commentaires, l'installation de gemmes en tant que root est une pratique dangereuse. Le programme d'installation peut littéralement tout faire pour votre système.
Certains Guy
@SomeGuy: "L'installateur pourrait faire n'importe quoi" ... il est plus probable que l'utilisateur lui-même puisse toucher la commande et manipuler le système. Je ne peux pas penser à un moment où un installateur a foiré mon système, mais je me souviens clairement des fois où je l'ai fait. sudoest 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.
The Tin Man
1
La meilleure réponse !!!! Après avoir exécuté ces 2 commandes, veuillez redémarrer le terminal et c'est tout !!! Merci beaucoup!!!
nosequeweaponer
4

Vérifiez si votre version Ruby est correcte. Sinon, changez-le.

Cela fonctionne pour moi:

$ rbenv global 1.9.3-p547
$ gem update --system
Zen
la source
C'est la meilleure solution: update> chown. Merci! . J'ai aussi dû courirbrew install ruby
Jose Llausas
4

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!

zhao
la source
N'a pas fonctionné pour moi ❯ 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.
Max Coplan
2

Comme l'a souligné bobbdelsol, rehash a fonctionné pour moi:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...
Arunabh Das
la source
tellement proche. encore "ERREUR: lors de l'exécution de gem ... (Gem :: FilePermissionError) Vous n'avez pas d'autorisations en écriture pour le répertoire /Library/Ruby/Gems/2.0.0."
JGallardo
1

Testé sur MacOS Mojave AVEC SUCCÈS:

  1. 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

  2. Installez une toute nouvelle version rubis:

    $ brew install ruby

  3. Définissez un alias par défaut pour votre version:

    $ rvm alias create default ruby

  4. 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 gemcommande avec succès .

Marcelo Gumiero
la source
-2

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.

myklgee
la source
1
Veuillez prendre le temps de formater votre réponse pour plus de lisibilité. L'effort que vous consacrez à la recherche et à l'explication porte ses fruits.
The Tin Man
-2

donner à l'utilisateur $ whoami pour créer quelque chose dans ces dossiers

sudo chown -R user /Library/Ruby/Gems/2.0.0
Rama Astadipati
la source
Non. Ce dossier appartient au système pour une bonne raison, le système l'utilise à ses propres fins. Il est correct d'exécuter un script qui pointe vers lui, mais créez et utilisez un Ruby en bac à sable si vous voulez jouer avec.
The Tin Man
-3

Vous pouvez utiliser: gem install cocoapods --pre --user

Alex_Burla
la source
-4

L'installation de gem ou la mise à jour de RubyGems échoue avec une erreur d'autorisations, puis tapez cette commande

sudo gem install cocoapods
Hardip Kalola
la source
1
Cela a été couvert dans les autres réponses. Veuillez lire les autres réponses avant d'en créer une pour vous assurer que la vôtre offre quelque chose de nouveau.
The Tin Man
-6

Je l'ai utilisé et j'ai travaillé.

$ sudo chown myuser /var/lib/gems

Felipe Francisco
la source
Voir les commentaires dans les autres réponses sur l'utilisation sudo.
The Tin Man
-18

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

$ su

Si vous ne disposez pas d'un utilisateur root, vous devez l'activer en procédant comme suit

  1. Dans le menu Apple, choisissez Préférences Système….
  2. Dans le menu Affichage, choisissez Utilisateurs et groupes.
  3. Cliquez sur le verrou et authentifiez-vous en tant que compte administrateur.
  4. Cliquez sur Options de connexion….
  5. Cliquez sur le bouton "Modifier ..." ou "Rejoindre ..." en bas à droite.
  6. Cliquez sur le bouton «Open Directory Utility…».
  7. Cliquez sur le verrou dans la fenêtre de l'utilitaire d'annuaire.
  8. Saisissez un nom de compte administrateur et un mot de passe, puis cliquez sur OK.
  9. Choisissez Activer l'utilisateur racine dans le menu Edition.
  10. Saisissez le mot de passe root que vous souhaitez utiliser dans les champs Mot de passe et Vérifier, puis cliquez sur OK.

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.

Mohammad Arif
la source
Pourquoi voter contre? Pouvez-vous s'il vous plaît écrire la raison de le faire?
Mohammad Arif
8
Installer des gemmes en tant que root est une mauvaise idée. stackoverflow.com/questions/2119064/…
spuder