web-dev-qa-db-ger.com

Edelsteine ​​können unter OS X "El Capitan" nicht installiert werden

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.
177
Himanshu Yadav

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:

Option 1: Verwenden Sie Sudo weiter

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.

Option 2: Installation in Ihrem Home-Verzeichnis (ohne Sudo)

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

Machen Sie es als Standard

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.)

326
nschum

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
37
Shao Wenbin
Sudo gem install -n /usr/local/bin cocoapods

Versuche dies. Es wird definitiv funktionieren.

24

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
18
astrasleepz

Wenn Sie ein Upgrade auf OS X El Capitain durchführen, wird das Verzeichnis/usr/local auf verschiedene Weise geändert: 

  1. benutzerberechtigungen werden zurückgesetzt (dies ist auch ein Problem für Benutzer, die Homebrew verwenden)
  2. binärdateien und Symlinks wurden möglicherweise gelöscht oder geändert

[Bearbeiten] Es gibt auch eine vorläufige Sache: Xcode aktualisieren ...

Lösung für # 1:

$ 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.

Lösung zu # 2:

Ruby-basierte Probleme

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

Brew-basierte Probleme

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>
10
foobar

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.

3
emchateau

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.

Screenshot

2
jbalesteri

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
1
kkelleey

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
1

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 :)

0
Barry Poore

Ich musste rm -rf ./vendor dann erneut bundle install ausführen.

0
VoA