Sie haben keine Schreibberechtigungen für das Verzeichnis /Library/Ruby/Gems/2.3.0. (Mac-Benutzer)

102

Unten ist was ich tun muss.

Um die Spezifikationen auszuführen, müssen Sie RSpec installieren. Führen Sie zunächst gem install bundler im Stammverzeichnis Ihres Projekts aus. Führen Sie dann die Bundle-Installation aus . Führen Sie zum Ausführen einer einzelnen Spezifikationsdatei einen Befehl wie den folgenden aus: bundle exec rspec spec / 00_hello_spec.rb . Führen Sie bundle exec rspec aus, um alle Spezifikationen gleichzeitig auszuführen .

Also habe ich gem install bundler to terminal eingegeben und erhalten, dass Sie keine Schreibberechtigungen für das Verzeichnis /Library/Ruby/Gems/2.3.0 haben.

und dies war in der Projektdatei in atom * source " https://rubygems.org " gem "rspec", "~> 3.2.0" *

Meine Frage ist:

Es scheint, als würde mir das Terminal die Antwort geben, weil ich nichts an Ruby ändern soll und die Installation innerhalb des Atoms bündeln muss . Kann mir jemand sagen, wie man Atom benutzt oder irgendetwas in Atom laufen lässt?

Ich danke dir sehr!

user9426236
quelle

Antworten:

201

Sie haben Recht, dass Sie mit macOS mit der auf Ihrem Mac installierten Ruby-Version nichts ändern können. Es ist jedoch möglich, Edelsteine ​​wie die bundlerVerwendung einer separaten Version von Ruby zu installieren, die die von Apple bereitgestellte nicht beeinträchtigt.

Es sudowird dringend davon abgeraten, Gems zu installieren oder Berechtigungen für Systemdateien und -verzeichnisse zu ändern, selbst wenn Sie wissen, was Sie tun. Können wir bitte aufhören, diesen schlechten Rat zu geben?

Die Lösung umfasst zwei Hauptschritte:

  1. Installieren Sie eine separate Version von Ruby, die die mit Ihrem Mac gelieferte Version nicht beeinträchtigt.
  2. Aktualisieren Sie Ihre Datei PATHso, dass der Speicherort der neuen Ruby-Version an erster Stelle steht PATH. Die Liste der Verzeichnisse und die Reihenfolge, in der der Computer sie sucht, um ausführbare Programme zu finden, wird als bezeichnet PATH. Wenn Sie echo $PATHTerminal eingeben, wird die Liste der Verzeichnisse angezeigt, die durch einen Doppelpunkt getrennt sind.

Es gibt verschiedene Möglichkeiten, Ruby auf einem Mac zu installieren. Der beste Weg, den ich empfehle und den ich mir in den verschiedenen Installationsanweisungen gewünscht habe, ist die Verwendung eines automatisierten Skripts , das eine geeignete Ruby-Umgebung für Sie einrichtet. Dies verringert die Wahrscheinlichkeit eines Fehlers aufgrund unzureichender Anweisungen, die den Benutzer dazu veranlassen, eine Reihe von Aufgaben manuell auszuführen, drastisch und überlässt es ihnen, alle erforderlichen Schritte herauszufinden.

Die andere Möglichkeit besteht darin, zusätzliche Zeit damit zu verbringen, alles manuell zu erledigen und auf das Beste zu hoffen. Zunächst möchten Sie Homebrew installieren , um die Installation anderer Tools und MacOS-Apps zu vereinfachen.

Die 4 beliebtesten Möglichkeiten, eine separate Version von Ruby zu installieren, sind:

Wenn Sie nicht mehr als eine Version von Ruby gleichzeitig benötigen (außer der mit macOS gelieferten)

  • Homebrew - Sobald es installiert ist, installieren Sie Ruby mit brew install rubyund aktualisieren Sie es dann, PATHindem Sie es ausführen echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile, gefolgt vonsource ~/.bash_profile

Wenn Sie die Flexibilität wünschen, einfach zwischen vielen Ruby-Versionen zu wechseln

  • chruby und ruby-install - meine persönlichen Empfehlungen und diejenigen, die vom oben genannten Skript automatisch installiert werden. Diese können mit Homebrew installiert werden.

  • rbenv - kann mit Homebrew installiert werden

  • RVM

Um zu überprüfen, ob Sie jetzt die Nicht-Systemversion von Ruby verwenden, können Sie die folgenden Befehle ausführen:

which ruby

Es sollte etwas anderes sein als /usr/bin/ruby

ruby -v

Es sollte etwas anderes als 2.3.7 sein. Ab heute ist 2.6.1 die neueste Ruby-Version.

Sobald Sie diese neue Version von Ruby installiert haben, können Sie jetzt den Bundler installieren:

gem install bundler
monfresh
quelle
3
Wenn du wie ich bist und zsh (oder eine andere Shell als bash) verwendest, gibt es einen zusätzlichen Schritt! Nach der Installation müssen rbenvSie tun echo 'eval "$(rbenv init -)"' >> ~/.bash_profile. Quelle
Marlo
1
Wenn im Verzeichnis / usr / local ein Berechtigungsfehler auftritt, führen Sie ihn aus sudo chown -R $(whoami) $(brew --prefix)/*. Siehe diesen Thread für weitere Informationen
Anas Tiour
4
Dies ist sehr hilfreich ... Es sollte als die richtige Antwort eingestellt werden.
Spencer Müller Diniz
4
Da MacOS die Benutzer dazu ermutigt, zu zsh zu wechseln, sollten Sie die Änderung auch auf ~ / .bash_profile auf ~ / .zshrc anwenden.
Adam_G
Ich habe Ruby mit rbenv installiert und kehre which rubyzurück /usr/bin/ruby. Sollte ich herausfinden, wo sich die neue (rbenv-Installation) von Ruby befindet, und den Pfad aktualisieren, damit der Speicherort vor der Mac-Installation angezeigt wird?
Stevec
56

Wenn Sie nicht laufen möchten, sudoinstallieren Sie Ruby mit Homebrew

brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails

Möglicherweise möchten Sie export GEM_HOME="$HOME/.gem"zu Ihrem hinzufügen ~/.bash_profileoder .zshrcwenn Sie zsh verwenden

STIKO
quelle
4
hat nicht geholfen auf Catalina OS E
Efrat Levitan
Aktualisiert meine Antwort
STIKO
Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command
Efrat Levitan
Es hört sich so an, als würden Sie versuchen, einen railsBefehl auszuführen . Die letzten beiden Befehle, die ich habe, führen keinen railsBefehl aus. Versuchen Sie, ein neues Terminal außerhalb Ihres Projekts zu öffnen, und kopieren Sie dann die letzten beiden Zeilen meiner Antwort nacheinander.
STIKO
vergiss nicht source ~/. zshrc(oder ~/.bash_profile)
gordinmitya
53

Arbeitete für mich mit dem Parameter --user-install, der folgenden Befehl ausführt:

gem install name_of_gem --user-install

Dann fing er an, es zu holen und zu installieren.

Bearbeiten

Es gab ein Juwel, das ich immer noch nicht installieren konnte (es erforderte die Ruby.h-Header des Ruby-Entwicklungskits oder so), dann habe ich die verschiedenen Versionsmanager ausprobiert, aber irgendwie funktionierte das immer noch nicht wirklich, wie in den Dokumentationen angegeben nur zu installieren und zu wechseln (es hat einfach nicht die Versionen gewechselt). Dann habe ich alle installierten Versionsmanager entfernt und anschließend mit brew install rubyder neuesten Version installiert und auch die Variable PATH gesetzt. (Es wird nach der Installation von Rubin aus dem Gebräu erwähnt), was funktioniert hat.

Stefan Rein
quelle
5

Es wird allgemein empfohlen, einen Versionsmanager wie rbenvoder zu verwenden rvm. Andernfalls sind installierte Gems wie rootfür andere Benutzer verfügbar .

Wenn Sie wissen, was Sie tun, können Sie verwenden sudo gem install.

Leerlaufberg
quelle
4

Ich habe das gleiche Problem nach der Installation von macOS Catalina konfrontiert. Ich hatte versucht, unter Befehl und es funktioniert.

sudo gem update
Arjun Patel
quelle
3

Führen Sie dies aus

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"

Befolgen Sie die Anweisungen (in meinem Fall zu ~ / .zshrc hinzufügen );)


Ebenfalls wichtig: Änderungen werden nur wirksam, wenn Sie Ihre Konsole neu starten. Zwei Optionen

  • Eingeben source <modified file>
  • schließen und wieder öffnen
tomasbarrios
quelle
Ich habe ein Upgrade auf Catalina durchgeführt (das von Bash zu Zsh wechselt) und ich habe vergessen, alles von .bash_profileüber zu.zshrc
Wetjosh
1

Wenn Sie Ruby separat installiert und Ruby mit rbenv / rvm installiert haben, verweist Ihr Budler möglicherweise auf verschiedene Versionen.

Versuchen

gem env home

und

ruby -v

Beide sollten auf dieselbe Version verweisen. Überprüfen Sie, ob Sie Ruby mit rbenv / rvm installiert haben. Wenn ja, löschen Sie die Ruby-Version, die Sie separat installiert haben.

Damit gem funktioniert, müssen Sie rbenv aufrufen.

rbenv shell <ruby version> 

und

rbenv global <ruby version>

Ich bin mir nicht sicher, wie RVM funktioniert. Lassen Sie mich wissen, ob dies funktioniert.

Bharathan Kumaran
quelle
0

Lösung für Mac

  1. Installieren / aktualisieren Sie RVM mit der letzten Ruby-Version

    \curl -sSL https://get.rvm.io | bash -s stable

  2. Installieren Sie den Bundler

    gem install bundler


Danach (sudo) gem install ....begannen zwei Befehle zu funktionieren

Wassili Bodnarchuk
quelle
Möglicherweise muss auch angegeben werdenrvm use <version>
ObjectNameDisplay
-1

Das hat bei mir auf dem Mac funktioniert

sudo chown -R $ (whoami) $ (brauen - Präfix) / *

Thubz
quelle
-1

Ich benutze Mojave mit rbenv, diese Lösung funktioniert für mich:

$ vi ~/.bash_profile

Fügen Sie diese Zeile in die Datei ein:

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
Maya Nastasya
quelle
-2

Probleme, die ich hatte: - Sie haben keine Schreibberechtigungen für das Verzeichnis /Library/Ruby/Gems/2.6.0.

Die Lösung hat bei mir funktioniert: sudo gem install rail -v 6.0.0

Zahirul Islam
quelle
-3

Für Mac-Benutzer verwenden Sie sudo ex sudo gem install cocoapods

Ashish Kushwah
quelle
Während dieser Befehl die Frage lösen kann, einschließlich einer Erklärung, wie und warum dies das Problem löst, würde dies wirklich dazu beitragen, die Qualität Ihres Beitrags zu verbessern, und wahrscheinlich zu mehr Up-Votes führen. Denken Sie daran, dass Sie in Zukunft die Frage für die Leser beantworten, nicht nur für die Person, die jetzt fragt. Bitte bearbeiten Sie Ihre Antwort, um Erklärungen hinzuzufügen und anzugeben, welche Einschränkungen und Annahmen gelten.
Brian