Ich kann fakes3
gem auf El Capitan Beta 5 nicht installieren und ausführen.
Ich habe es versucht:
Sudo gem install fakes3
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/fakes3
Dann versuchte ich es auf die Kokosapodeweise. Es funktionierte für Kokosapoden, aber nicht für Fälschungen3.
mkdir -p $HOME/Software/Ruby
export GEM_HOME=$HOME/Software/Ruby
gem install cocoapods
[...]
1 gem installed
gem install fakes3
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Disclaimer: @theTinMan und andere Ruby-Entwickler weisen oft darauf hin, dass Sie bei der Installation von Gems keine Sudo
verwenden und auf Dinge wie RVM zeigen. Das ist absolut wahr, wenn man Ruby-Entwicklung durchführt. Mach weiter und benutze das.
Viele von uns möchten jedoch nur, dass eine Binärdatei als Edelstein verteilt wird (z. B. fakes3
, cocoapods
, xcpretty
…). Ich möchte mich definitiv nicht mit der Verwaltung einer separaten Ruby beschäftigen. Hier sind Ihre schnelleren Optionen:
Die Verwendung von Sudo
ist wahrscheinlich in Ordnung, wenn Sie möchten, dass diese Tools global installiert werden.
Das Problem ist, dass diese Binärdateien in /usr/bin
installiert sind. Dies ist off-limits seit El Capitan. Sie können sie jedoch stattdessen in /usr/local/bin
installieren. Dort wird Homebrew installiert, also ist wahrscheinlich bereits vorhanden.
Sudo gem install fakes3 -n/usr/local/bin
Gems werden in /usr/local/bin
installiert und können von jedem Benutzer in Ihrem System verwendet werden, wenn er in PATH ist.
Im Folgenden werden Gems in ~/.gem
installiert und Binärdateien in ~/bin
(die Sie dann zu Ihrer PATH
hinzufügen sollten) eingefügt.
gem install fakes3 --user-install -n~/bin
In jedem Fall können Sie diese Parameter zu Ihrem ~/.gemrc
hinzufügen, damit Sie sich nicht an sie erinnern müssen:
gem: -n/usr/local/bin
d.h. echo "gem: -n/usr/local/bin" >> ~/.gemrc
oder
gem: --user-install -n~/bin
d.h. echo "gem: --user-install -n~/bin" >> ~/.gemrc
(Tipp: Sie können auch --no-document
verwenden, um die Erstellung der Ruby-Entwicklerdokumentation zu überspringen.)
In meinem Fall musste ich Ruby mit Brew erneut installieren. Das scheint das Problem gelöst zu haben, da ich wieder Juwelen installieren kann.
brew install Ruby
Danach müssen Sie sich abmelden und erneut anmelden, entweder grafisch oder einfach durch einen Neustart Ihres Terminals.
Das liegt an der neuen Sicherheitsfunktion von OS X "El Capitan" . Versuchen Sie, --user-install
anstelle von Sudo hinzuzufügen:
$ gem install *** --user-install
Wenn Sie beispielsweise fake3 installieren möchten, verwenden Sie einfach:
$ gem install fake3 --user-install
Sudo gem install -n /usr/local/bin cocoapods
Versuche dies. Es wird definitiv funktionieren.
Sie müssen Xcode auf den neuesten Stand bringen (v7.0.1) und alles funktioniert wie gewohnt.
Wenn Sie nach der Installation des neuesten Xcodes immer noch nicht funktionieren, versuchen Sie, gem auf diese Weise zu installieren:
Sudo gem install -n /usr/local/bin GEM_NAME_HERE
Zum Beispiel:
Sudo gem install -n /usr/local/bin fakes3
Sudo gem install -n /usr/local/bin compass
Sudo gem install -n /usr/local/bin susy
Wenn Sie ein Upgrade auf OS X El Capitain durchführen, wird das Verzeichnis/usr/local auf verschiedene Weise geändert:
[Bearbeiten] Es gibt auch eine vorläufige Sache: Xcode aktualisieren ...
$ Sudo chown -R $(whoami):admin /usr/local
Dadurch werden die Berechtigungen für das /usr/local
-Verzeichnis festgelegt, sodass beide gem install
- und brew install|link|...
-Befehle ordnungsgemäß funktionieren.
Stellen Sie sicher, dass Sie die Berechtigungen des /usr/local
-Verzeichnisses festgelegt haben (siehe Nummer 1 oben).
Versuchen Sie zunächst, Ihren Edelstein neu zu installieren.
Sudo gem install <gemname>
Beachten Sie, dass die neueste Version des angegebenen Gem installiert wird.
Wenn Sie nicht mit Problemen mit der Rückwärtskompatibilität konfrontiert werden möchten, sollten Sie zunächst ermitteln, welche Version des Edelsteins Sie erhalten möchten, und dann mit dem -v version
neu installieren. Nachfolgend ein Beispiel, um sicherzustellen, dass das System keine neue Version von Capistrano erhält.
$ gem list | grep capistrano
capistrano (3.4.0, 3.2.1, 2.14.2)
$ Sudo gem install capistrano -v 3.4.0
Aktualisieren Sie das Brühen und aktualisieren Sie Ihre Formeln
$ brew update
$ brew upgrade
Möglicherweise müssen Sie einige von ihnen auch manuell neu verknüpfen
$ brew link <formula>
Wie gesagt, stammt das Problem seit "El Capitan" aus einer Sicherheitsfunktion von Mac OSX.
Bei der Verwendung des Standardsystems Ruby wird der Installationsvorgang im Verzeichnis /Library/Ruby/Gems/2.0.0
ausgeführt, das für den Benutzer nicht verfügbar ist und den Fehler ausgibt.
Mit dem Befehl können Sie sich die Parameter Ihrer Ruby-Umgebung anzeigen lassen
$ gem env
Es gibt ein INSTALLATIONSVERZEICHNIS und ein BENUTZERINSTALLATIONSVERZEICHNIS. Um das Benutzerinstallationsverzeichnis anstelle des Standardinstallationsverzeichnisses zu verwenden, können Sie stattdessen --user-install
-Parameter als Sudo
verwenden. Dies ist niemals eine empfohlene Methode.
$ gem install myGemName --user-install
Dabei sollte es keine Rechte mehr geben. Die Edelsteine werden dann im Benutzerverzeichnis installiert: ~/.gem/Ruby/2.0.0/bin
Um die installierten Edelsteine verfügbar zu machen, sollte dieses Verzeichnis in Ihrem Pfad verfügbar sein. Entsprechend der Ruby-FAQs können Sie Ihrem ~/.bash_profile
oder ~/.bashrc
die folgende Zeile hinzufügen
if which Ruby >/dev/null && which gem >/dev/null; then
PATH="$(Ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi
Schließen Sie das Terminal und laden Sie es erneut, oder laden Sie Ihren .bash_profile
oder .bashrc
(. ~/.bash_profile
) neu.
Dies ist die Lösung, die ich verwendet habe:
Hinweis: Dieses Update ist für Kompass gedacht, wie ich es in einer anderen SO Frage geschrieben habe, aber ich habe den gleichen Prozess verwendet, um die Funktionalität aller Terminalprozesse wiederherzustellen, offensichtlich der Edelsteine, die Sie installieren sind unterschiedlich, aber der Prozess ist der gleiche.
Ich hatte das gleiche Problem. Dies ist darauf zurückzuführen, dass Apple System Integrity Protection (SIP) implementiert wurde. Sie müssen zuerst deaktivieren, dass ...
Im Wiederherstellungsmodus neu starten:
Starten Sie neu und halten Sie Befehlstaste + R gedrückt, bis das Apple -Logo) angezeigt wird.
Nach dem Booten wählen Sie Dienstprogramme> Terminal in der oberen Leiste.
art: csrutil disable
geben Sie dann Folgendes ein: reboot
Nach dem Neustart
Öffnen Sie das Terminal und geben Sie die folgenden Befehle ein:
Sudo gem uninstall bundler
Sudo gem install bundler
Sudo gem install compass
Sudo gem install sass
Sudo gem update --system
Die einzelnen fehlgeschlagenen Edelsteine müssen repariert werden.
Auf meinem Rechner war dies die erste Abhängigkeit, die nicht funktionierte, also habe ich sie aufgelistet:
Sudo gem pristine ffi --version 1.9.3
Gehen Sie die Liste der Edelsteine durch, die repariert werden müssen. Alles in allem benötigen Sie ungefähr 10 Minuten, um das Problem zu beheben, aber Sie werden Terminalbefehle für die Kompassfunktion haben.
Die Neuinstallation von RVM hat für mich funktioniert, aber ich musste danach alle meine Edelsteine neu installieren:
rvm implode
\curl -sSL https://get.rvm.io | bash -s stable --Ruby
rvm reload
Wenn der Edelstein, den Sie installieren möchten, XML-Bibliotheken erfordert, versuchen Sie Folgendes:
Sudo gem install -n /usr/local/bin <gem_name> -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/
Bei der Installation des nokogiri gem v 1.6.8 unter OS X El Capitan bin ich auf ein Problem gestoßen
und das hat endlich für mich funktioniert:
Sudo gem install -n /usr/local/bin nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/
Um sicherzustellen, dass Sie libxml2 und libxslt installiert haben, können Sie Folgendes tun:
brew install libxml2 libxslt
brew install libiconv
vergewissern Sie sich dann, dass Sie Xcode-Befehlszeilentools installiert haben:
xcode-select --install
sollte diesen Fehler zurückgeben:
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Nach der Installation von El Capitan bin ich auf dasselbe Problem gestoßen. Ich habe versucht, Sass und Kompass in einem Symfony-Projekt zu installieren. Der folgende Befehl gab den folgenden Fehler zurück:
$ Sudo Gem Install Kompass
FEHLER: Fehler beim Installieren des Kompasses: FEHLER: Die native Erweiterung von Gem konnte nicht erstellt werden.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/Ruby extconf.rb
Überprüfung auf ffi.h ... /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/mkmf.rb:434:in `try_do ': Der Compiler konnte keine ausführbare Datei. (Laufzeit Fehler)
Also habe ich dann versucht, sass mit: $ Sudo gem install sass zu installieren
Ich habe die gleiche Fehlermeldung erhalten. Nach einigem Googeln konnte ich sass mit folgendem Befehl installieren:
$ Sudo gem install -n/usr/local/bin sass
Das obige funktionierte für mich mit der Installation von sass, aber es funktionierte nicht für die Installation von Kompass. Ich habe gelesen, dass jemand irgendwo eine Instanz von xcode geöffnet hat, sie dann wieder geschlossen hat und dann den gleichen Befehl erfolgreich ausgeführt hat. Danach versuchte ich, xcode zu öffnen, aber es wurde eine Meldung mit der Meldung angezeigt, dass die installierte Version von xcode installiert war nicht kompatibel mit El Capitan ..__ Also habe ich dann xcode aus dem App Store aktualisiert und den folgenden Befehl erneut ausgeführt, der diesmal erfolgreich ausgeführt wurde:
$ Sudo gem install -n/usr/local/bin-Kompass
Ich konnte dann $ compass init ausführen
Ich habe jetzt alle meine Edelsteine am Laufen und kann ein paar schöne sass-Sachen bauen :)
Ich musste rm -rf ./vendor
dann erneut bundle install
ausführen.