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?

542voto

nathanwhy Punkte 5556

Versuchen Sie --user-install statt mit sudo :

gem install mygem --user-install

337voto

the Tin Man Punkte 154584

Sie haben keine Schreibberechtigung für das Verzeichnis /Library/Ruby/Gems/1.8.

bedeutet genau das: Sie haben keine Erlaubnis, dort zu schreiben.

Das ist die von Apple für den eigenen Gebrauch installierte Version von Ruby. Es ist zwar in Ordnung, kleinere Änderungen an dieser Version vorzunehmen wenn du weißt, was du tust Da Sie sich nicht sicher sind, was das Problem der Berechtigungen angeht, würde ich sagen, dass es keine gute Idee ist, diesen Weg weiterzuverfolgen.

Stattdessen empfehle ich Ihnen dringend die Verwendung von entweder rbenv o RVM um ein separates Ruby zu verwalten, das in einer Sandbox in Ihrem Home-Verzeichnis installiert ist und das Sie modifizieren/falten/spinnen/verändern können, ohne sich Sorgen machen zu müssen, das System-Ruby zu beschädigen.

Zwischen den beiden verwende ich rbenv, obwohl ich RVM in der Vergangenheit oft benutzt habe. rbenv verwaltet Ihre Ruby-Installation mit einem "Hands-off"-Ansatz. RVM hat eine Menge Funktionen und ist sehr mächtig, aber dadurch auch aufdringlicher. In beiden Fällen, READ lesen Sie die Installationsdokumentation für beide Programme, bevor Sie mit der Installation beginnen.

97voto

l3x Punkte 29224

Sie sollten wirklich einen Ruby-Versionsmanager verwenden.

Die korrekte Verwendung eines solchen Systems würde Ihr Problem mit der Erlaubnis bei der Ausführung einer gem update Befehl.

Ich empfehle rbenv .

Aber auch wenn Sie einen Ruby-Versionsmanager verwenden, können Sie dieselbe Fehlermeldung erhalten.

Wenn dies der Fall ist und Sie rbenv verwenden, überprüfen Sie einfach, ob die ~/.rbenv/shims Verzeichnis vor dem Pfad für das System Ruby steht.

$ echo $PATH zeigt Ihnen die Reihenfolge des Ladevorgangs an.

Wenn Sie feststellen, dass Ihr Shims-Verzeichnis nach Ihrem System-Ruby-Bin-Verzeichnis kommt, dann bearbeiten Sie Ihr ~/.bashrc Datei und fügen Sie diese als letzten export PATH-Befehl ein: export PATH=$HOME/.rbenv/shims:$PATH

$ ruby -v zeigt Ihnen, welche Version von Ruby Sie verwenden

Dies zeigt, dass ich derzeit die Systemversion von Ruby verwende (normalerweise nicht gut)

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

$ rbenv global 1.9.3-p448 wechselt zu einer neueren, vorinstallierten Version (siehe Referenzen unten).

Dies zeigt, dass ich eine neuere Version von Ruby verwende (die wahrscheinlich nicht den Gem::FilePermissionError verursachen wird)

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

Normalerweise sollten Sie einem gem-Befehl kein sudo voranstellen müssen. Wenn Sie das Gefühl haben, dies tun zu müssen, ist wahrscheinlich etwas falsch konfiguriert.

Einzelheiten zu rbenv finden Sie im Folgenden:

78voto

Fmessina Punkte 3641

Dies behebt das Problem unter MacOS Mojave und Catalina auf eine saubere Art und Weise:

brew install ruby

Dann setzen Sie GEM_HOME in Ihr Benutzerverzeichnis. Auf dem 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
  • ODER wenn auf 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

74voto

Bobz Punkte 2207

Warum tun Sie das nicht?

sudo gem update --system

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