641 Stimmen

Wie installiert man ein Gem oder aktualisiert RubyGems, wenn es mit einem Berechtigungsfehler fehlschlägt?

Ich versuche, einen Edelstein zu installieren, indem ich gem install mygem oder aktualisieren Sie RubyGems mit gem update --system und schlägt mit dieser Fehlermeldung fehl:

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

Hat jemand eine Idee, wie man dieses Problem lösen kann?

14voto

vaskort Punkte 2321

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

14voto

Eliot Arntz Punkte 405
sudo gem update --system
sudo gem install (gemfile)

13voto

Breedly Punkte 11244

Älter und weiser

Tun Sie nicht, was ich hier sage, sondern seien Sie immer vorsichtig, wenn Sie sudo . Wahrscheinlich möchten Sie etwas verwenden wie rbenv zu isolieren, was auch immer Sie gerade tun.


eine Möglichkeit

erfahren über chown

Ich weiß nicht, ob Sie die Kommandozeile mögen, aber damit wird die Arbeit an jedem Projekt mit jedem Tool, das Pakete auf Ihrem System installiert, zum Kinderspiel.

chown steht, soweit ich das beurteilen kann, für "change ownership".

Der Grund, warum ich nach dieser Antwort gesucht habe, ist folgender gem install hat mich heute mit diesem Fehler konfrontiert:

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

Dies ist eine perfekte Gelegenheit, die chown . Sie sehen, Ruby hat uns das Verzeichnis gegeben, auf das es Zugriff braucht, und es scheint ein Verzeichnis zu sein, das es ziemlich oft benutzen wird.

In diesem Fall gibt es nur drei Dinge, die man wissen muss, um das Problem zu lösen, aber chown ist viel leistungsfähiger und bietet Ihnen viel mehr Flexibilität, als ich jetzt zeigen werde. Weitere Informationen finden Sie in der Quelle am Ende der Seite.

Die zwei Dinge

  1. Benutzername
  2. Verzeichnis

Wenn Sie sich in einer Shell befinden, ist es einfach, den Benutzernamen zu finden. Schauen Sie einfach auf die Eingabeaufforderung. Meiner sieht so aus:

breadly@breadly-desktop:~\Desktop

Der aktuelle Benutzer ist nur der Name vor der @ . Wir kennen das Verzeichnis aus den Fehlermeldungen, aber Sie haben zwei Möglichkeiten. Entweder Sie beschränken Ihre Berechtigung auf die aktuelle Version, indem Sie ../gems/1.9.1 oder geben Sie sich selbst Schreibrechte für alle Versionen von Edelsteinen, indem Sie ../gems .

Der Befehl zum Ändern der Eigentumsverhältnisse würde folgendermaßen aussehen.

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

En -R wird als Flagge bezeichnet und die -R Flagge weist einen Befehl typischerweise an, etwas rekursiv zu tun, oder mit anderen Worten, den Befehl auf alle Dinge anzuwenden, die in dem Verzeichnis enthalten sind, und auf alle Dinge, die in den darin enthaltenen Verzeichnissen enthalten sind, und so weiter, bis es nichts mehr gibt.

13voto

gopek Punkte 686

Ich fand diese Anleitung für sudo weniger Edelstein :

  1. brew install rbenv ruby-build

  2. sudo gem update --system

  3. Exporte hinzufügen zu .bashrc :

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. Und schließlich fügen Sie dies zu Ihrem ~/.gemrc :

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

12voto

bobbdelsol Punkte 976

Ich musste eine rbenv rehash damit sie auf meine örtliche Gem-Bibliothek verweist.

Es sieht so aus, als ob Ihr Gem-Manager auf die Systembibliothek verweist. Anstatt sich mit den Berechtigungen herumzuschlagen, sollten Sie das Äquivalent von "rehash" für Ihren Manager ausführen, damit die Dinge lokal verweisen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X