Ich versuche, ein Gem mithilfe von gem install mygem
RubyGems zu installieren oder zu aktualisieren gem update --system
, und es schlägt mit diesem Fehler 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 das löst?
sudo chown -R $USER /Library/Ruby/Gems/
Antworten:
bedeutet genau das, Sie haben keine Erlaubnis, dort zu schreiben.
Dies ist die von Apple installierte Version von Ruby für den eigenen Gebrauch. Es ist zwar in Ordnung, geringfügige Änderungen daran vorzunehmen, wenn Sie wissen, was Sie tun , da Sie sich über das Berechtigungsproblem nicht sicher sind. Ich würde jedoch sagen, dass es keine gute Idee ist, diesen Weg fortzusetzen.
Stattdessen empfehle ich Ihnen dringend, entweder rbenv oder RVM zu verwenden, um einen separaten Ruby zu verwalten, der in einer Sandbox in Ihrem Home-Verzeichnis installiert ist und den Sie ändern / falten / spindeln / ändern können, ohne sich Gedanken über das System Ruby machen zu müssen.
Zwischen den beiden verwende ich rbenv, obwohl ich in der Vergangenheit viel RVM verwendet habe. rbenv verfolgt bei der Verwaltung Ihrer Ruby-Installation einen "hands-off" -Ansatz. RVM hat viele Funktionen und ist sehr leistungsfähig, aber infolgedessen aufdringlicher. In beiden Fällen LESEN Sie die Installationsdokumentation einige Male, bevor Sie mit der Installation beginnen, je nachdem, was Sie auswählen.
quelle
brew install ruby
löst Ihre Abhängigkeitsprobleme auf eine saubere Art und Weise, die die Apple-Installation nicht beeinträchtigt. Wenn Sie bereitssudo
ein Update bei der Erstinstallation durchgeführt haben und sich Sorgen darüber machen, was Sie getan haben, sollten Sie es folgendermaßen rückgängig machen können: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
" und dies erhöht nur das Gewicht, warum Menschen nicht verwenden solltensudo
oderchown
. Seufz ...brew install ruby
das Terminal einfach geschlossen und wieder geöffnet haben.Versuchen Sie hinzuzufügen,
--user-install
anstatt zu verwendensudo
:quelle
--user-install
Option gibt es anscheinend schon eine Weile. Ich wünschte nur, du hättest das früher geschrieben. =)if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi
<br> Quelle : guides.rubygems.org/faqs/#user-installSie sollten wirklich einen Ruby-Versionsmanager verwenden.
Eine ordnungsgemäße Verwendung würde Ihr Berechtigungsproblem bei der Ausführung eines
gem update
Befehls verhindern und beheben .Ich empfehle rbenv .
Selbst wenn Sie einen Ruby-Versionsmanager verwenden, wird möglicherweise immer noch dieselbe Fehlermeldung angezeigt.
Wenn Sie dies tun und rbenv verwenden, überprüfen Sie einfach, ob sich das
~/.rbenv/shims
Verzeichnis vor dem Pfad für das System Ruby befindet.$ echo $PATH
zeigt Ihnen die Reihenfolge Ihres Ladepfads.Wenn Sie feststellen, dass Ihr Shims-Verzeichnis hinter dem Ruby-Bin-Verzeichnis Ihres Systems liegt, bearbeiten Sie Ihre
~/.bashrc
Datei und geben Sie dies als letzten Export-PATH-Befehl ein:export PATH=$HOME/.rbenv/shims:$PATH
$ ruby -v
zeigt Ihnen, welche Version von Ruby Sie verwendenDies zeigt, dass ich derzeit die Systemversion von Ruby verwende (normalerweise nicht gut).
$ rbenv global 1.9.3-p448
schaltet mich auf eine neuere, vorinstallierte Version um (siehe Referenzen unten).Dies zeigt, dass ich eine neuere Version von Ruby verwende (dies wird wahrscheinlich nicht den Gem :: FilePermissionError verursachen).
Normalerweise sollten Sie einem Gem-Befehl kein sudo voranstellen müssen. Wenn Sie dies für erforderlich halten, ist wahrscheinlich etwas falsch konfiguriert.
Einzelheiten zu rbenv finden Sie unter:
quelle
rbenv
. Wenn Sie die Homebrew-Installationsanweisungen befolgen , müssen Sie nureval "$(rbenv init -)"
Ihre Shell-Konfiguration hinzufügen undrbenv
sich darum kümmern, Ihren PassPATH
für Sie einzurichten .Warum tust du nicht:
quelle
brew upgrade
Error: Permission denied...
. Dies hat es behoben. Vielen Dank!Dadurch wird das Problem auf MacOs Mojave und MacOs Catalina auf saubere Weise behoben :
Setzen Sie dann GEM_HOME auf Ihr Benutzerverzeichnis. Auf dem Terminal:
Bash
::ODER wenn eingeschaltet
Zsh
:quelle
xcode-select --install
. Dies ist erforderlich, um Erweiterungen zu kompilieren.~/.bashrc
oder~/.zshrc
Datei, entfernen Sie die 3 hinzugefügten Zeilen und führen Sie densource ~/.bashrc
BefehlFür mich war das Problem darauf zurückzuführen, dass
rbenv
die richtige Version global verwendet und vergessen wurde.Also musste ich es einstellen
rbenv global xxx
In meinem Fall habe ich installiert,
2.0.0-p247
sodass ich den folgenden Befehl ausgeben musste:Dann funktionierte alles gut.
quelle
rbenv global 2.1.1
und anschließend fortfahrenrbenv rehash
. Führen Sie nun Ihrengem install
Befehl erneut aus.rbenv rehash
ich vermisst habe.rbenv versions
.Sie müssen Ihre Pfade korrigieren.
Führen Sie Folgendes aus, um festzustellen, ob dieses Update funktioniert:
Dies sollte ein Verzeichnis ausgeben, für das Sie keine Berechtigungen haben:
Führen Sie die folgenden Schritte aus, um dies zu beheben:
Bestimmen Sie den Pfad, den Sie in Ihr Profil kopieren müssen:
Die erste Zeile der Ausgabe ist die Zeile, die Sie in Ihr Profil kopieren müssen:
Kopieren Sie den Pfad in Ihr Profil und speichern Sie ihn.
Lade dein Profil neu (
source ~/.zshenv
für mich).Ausführen
rbenv rehash
.Wenn Sie jetzt ausführen
which gem
, sollten Sie einen lokalen Pfad erhalten, für den Sie Berechtigungen haben:quelle
eval "$(rbenv init -)"
in Ihren~/.bash_profile
notwendigen Änderungen alle zu machen.quelle
sudo
keine Berechtigung. hahaDas hat bei mir funktioniert. Wenn Sie Edelsteine zuvor als Root installiert haben, wird dieses Problem behoben, indem der Eigentümer wieder an Sie übergeben wird (was die Sicherheit betrifft).
quelle
/Library
Ordner. Das System kann zukünftige Updates beschädigen. (Entschuldigung für die späte Antwort)Es gibt zwei Routen: Verwenden Sie entweder rbenv oder RVM. Es gibt Rezepte für beide unten. Bevor Sie dies tun, möchten Sie wahrscheinlich die Installation lokaler Dokumente für Edelsteine deaktivieren.
Dann:
install rbenv
install ruby-build
Lauf:
Dadurch wird eine aktuelle Version des Gem-Systems in Ihren lokalen Verzeichnissen installiert. Das heißt, Sie stören die Systemkonfiguration nicht. Wenn Sie diese Frage stellen, sollten Sie sich nicht mit der Systemsicherheit herumschlagen und länger damit verbringen, zu verstehen, auf welche Probleme Sie möglicherweise stoßen, als nur eine einfache Möglichkeit zu haben, das Problem zu vermeiden, mit dem Sie begonnen haben. Erfahren Sie später InfoSec, wenn Sie mehr über das Betriebssystem und die Programmierung wissen.
Für eine Alternative verwenden Sie stattdessen 'RVM': So installieren Sie rvm run:
Dies hat das gleiche Ergebnis. Sie erhalten ein lokales Ruby and Gem-System, das die Systemversionen nicht beeinträchtigt. Es besteht keine Notwendigkeit für Homebrew oder übergeordnete Systembibliotheken usw.
quelle
Ich habe diese Anleitung für
sudo
weniger Juwel gefunden :brew install rbenv ruby-build
sudo gem update --system
Exporte hinzufügen zu
.bashrc
:Und zum Schluss fügen Sie Folgendes hinzu
~/.gemrc
:gem update --system
quelle
brew install rebenv ruby-build
, dann gibt es einsystem
nach meinem Verzeichnis? Irgendeine Idee, was das verursacht hat und wie man das loswirdsystem
?Versuchen Sie die Antwort von Nathanwhy, bevor Sie meine ursprüngliche Antwort unten verwenden. Seine Empfehlung von
--user-install
sollte den gleichen Zweck erfüllen, ohne sich mit Ihrer.bash_profile
oder Ihrer Rubinversion herumschlagen zu müssen.Wenn Sie sich keine Gedanken über eine bestimmte Ruby-Version machen, können Sie die Optionen des Ruby-Umgebungsmanagers für Schwerlasten überspringen und diese Zeilen einfach hinzufügen zu
~/.bash_profile
:Der Pfad wird aus der ursprünglichen Ausgabe von gestohlen
gem env
:Es
sudo
ist kein Ing erforderlich, und Sie können den bereits installierten Ruby mit freundlicher Genehmigung von Apple verwenden.quelle
Ich musste eine machen,
rbenv rehash
damit sie auf meine lokale Gem-Bibliothek verweist.Es sieht so aus, als ob Ihr Edelsteinmanager auf die Systembibliothek verweist. Führen Sie also, anstatt mit Berechtigungen herumzuspielen, das Äquivalent von "Aufwärmen" für Ihren Manager aus, damit die Dinge lokal zeigen.
quelle
Älter und weiser
Tu nicht, was ich hier sage, sondern sei immer vorsichtig, wenn du es benutzt
sudo
. Sie möchten wahrscheinlich so etwas wierbenv
isolieren, was auch immer Sie tun.Weg
lernen
chown
Ich weiß nicht, ob Ihnen die Befehlszeile gefällt, aber dies macht die Arbeit an jedem Projekt mit einem 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, dass
gem install
ich heute diesen Fehler erhalten habe:Dies ist eine perfekte Gelegenheit zu nutzen
chown
. Sie sehen, Ruby hat uns das Verzeichnis gegeben, auf das es Zugriff benötigt, und es scheint ein Verzeichnis zu sein, das es ziemlich oft verwenden wird.In diesem Fall gibt es nur drei Dinge, die man wissen muss, um das Problem zu lösen, aber sie
chown
sind viel leistungsfähiger und bieten Ihnen viel mehr Flexibilität, als ich jetzt demonstrieren werde. Weitere Informationen finden Sie in der Quelle unten.Die zwei Dinge
Wenn Sie sich in einer Shell befinden, ist es einfach, den Benutzernamen zu finden. Schauen Sie sich einfach die Eingabeaufforderung an. Meins sieht aus wie:
Der aktuelle Benutzer ist nur der Name vor dem
@
. Wir kennen das Verzeichnis aus den Fehlermeldungen, aber Sie haben zwei Möglichkeiten. Sie können Ihre Berechtigung entweder mithilfe von auf die aktuelle Version beschränken../gems/1.9.1
oder sich mithilfe von Schreibberechtigung für Edelsteine aller Versionen erteilen../gems
.Der Befehl, den Besitzer tatsächlich zu wechseln, würde so aussehen.
Das
-R
ist als Flag bekannt, und das-R
Flag weist einen Befehl normalerweise an, etwas rekursiv zu tun, oder mit anderen Worten, den Befehl für alles auszuführen, was im Verzeichnis enthalten ist, und für alle Dinge, die in den darin enthaltenen Verzeichnissen enthalten sind, und so weiter bis es gibt nichts anderes.quelle
Ich hatte meinen Mac formatiert und viele Lösungsvorschläge funktionierten bei mir nicht. Was für mich funktioniert hat, sind diese Befehle in der richtigen Reihenfolge:
Installieren Sie Homebrew:
Installieren Sie Ruby:
Kompass installieren:
quelle
sudo
etwas mit Edelstein installieren müssen. Mit wirdsudo
es in den Ruby installiert, der dem System gehört, nicht in einen, den Sie besitzen. Die Verwendung eines Ruby mit Sandbox ist beim Programmieren viel einfacher zu verwalten und zu verwenden, da Sie mehrere unterschiedliche Instanzen erstellen und verschiedene Dinge ausprobieren können, um sie dann zu zerstören, wenn Sie fertig sind.sudo chown -R $USER /Library/Ruby/Gems/
quelle
Arbeite für mich:
quelle
sudo
ist ein Befehl, den Neulinge lieben, weil er es ermöglicht, so leicht das Falsche zu tun, und es dauert Jahre, um zu lernen, angemessen paranoid zu sein, wenn er es benutzt.Überprüfen Sie, ob Ihre Ruby-Version richtig ist. Wenn nicht, ändern Sie es.
Das funktioniert bei mir:
quelle
update
>chown
. Vielen Dank! . Ich musste auch rennenbrew install ruby
Installieren Sie rbenv von
brew install rbenv
;eval "$(rbenv init -)"
Setzen Sie dann am Ende von ~ / .bash_profile (oder ~ / .zshrc von MacOS);Öffnen Sie ein neues Terminal und starten Sie
gem install ***
wird funktionieren!quelle
❯ 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.
Wie von Bobbdelsol hervorgehoben, hat Rehash für mich funktioniert:
quelle
Getestet auf MacOS Mojave MIT ERFOLG:
Deinstallieren Sie alle Ihre alten Ruby-Versionen (nehmen wir an, Sie haben 2.00 und 2.3.0):
$ rvm uninstall 2.0.0
$ rvm uninstall 2.3.0
Installieren Sie die brandneue Ruby-Version:
$ brew install ruby
Legen Sie einen Standardalias für Ihre Version fest:
$ rvm alias create default ruby
Starten Sie Ihr System neu, da dies die sicherste Methode ist, mit der Ihr Computer die kürzlich installierte neue Ruby-Version lädt.
Nachdem Sie die oben beschriebene Prozedur ausgeführt haben, können Sie jeden
gem
Befehl erfolgreich ausführen .quelle
cd /Library/Ruby/Gems/2.0.0
offen.
Rechtsklick Informationen abrufen
Click-Verschluss
Passwort platzieren
alles lesen und schreiben lassen.
quelle
Geben Sie dem Benutzer $ whoami, um etwas in diesem Ordner zu erstellen
quelle
Sie können verwenden: gem install cocoapods --pre --user
quelle
Das Installieren von gem oder das Aktualisieren von RubyGems schlägt mit einem Berechtigungsfehler fehl. Geben Sie dann diesen Befehl ein
quelle
Ich habe das benutzt und gearbeitet.
$ sudo chown myuser /var/lib/gems
quelle
sudo
.Der Grund für den Fehler liegt darin, dass Sie nicht als Root-Benutzer am Terminal angemeldet sind.
Wenn Sie bereits über Root verfügen, verwenden Sie enable auf Ihrem Mac im Terminaltyp
Wenn Sie keinen Root-Benutzer haben, müssen Sie ihn mithilfe der folgenden Schritte aktivieren
Mehr dazu auf http://support.apple.com/kb/ht1528
Zumindest funktioniert es bei mir, nachdem ich ein paar Stunden festgefahren bin.
quelle