Ruby RubyGems: Warum bekomme ich immer Fehlermeldungen, wenn ich Edelsteine ​​installiere?

17192
Andrew

Ich bekomme also scheinbar immer Fehlermeldungen, wenn ich neue Edelsteine ​​installiere. Ich bin neu bei Ruby, Rails und RubyGems, daher ist es sehr frustrierend. Ich bin mir nicht sicher, ob ich etwas konfigurieren muss oder ob ich etwas falsch installiert habe ... Also hoffentlich können Sie helfen. Hier sind einige Beispiele für die Probleme, die ich habe:

# 1: Sudo vs. Sudo nicht verwenden

In tonnenweise Tutorials / Dokumentationen verwenden sie immer:

gem install gem-name 

Für mich führt das fast immer zu Fehlern ... bis ich ...

sudo gem install gem-name 

... dann installiert sich der Edelstein normalerweise gut. Wie können die Menschen laufen, gem installohne mit zu beginnen sudo?

Lösung:

Installieren Sie den Ruby Versionsmanager!

Ernst! Ich wünschte, ich hätte es früher getan. Ruby Version Manager ermöglicht es, mehrere Versionen von Ruby mit jeweils eigenen Gems auszuführen und nahtlos zwischen den verschiedenen Versionen zu wechseln. Außerdem müssen Sie nicht sudomehr verwenden. Plus, es ist super einfach zu installieren, also sollten Sie es tun!


# 2: "Header-Dateien können nicht gefunden werden"

Manchmal bekomme ich eine solche Nachricht, auch wenn ich unter sudolaufe ...

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h 

Was bedeutet das überhaupt?

Lösung:

Das Problem ist, dass es den Befehl "make" nicht finden kann. Es wird automatisch installiert, wenn Sie XCode installieren. Und aus irgendeinem Grund, obwohl ich XCode installiert hatte, konnte es ihn nicht finden. Ich habe die neueste Version von XCode heruntergeladen und neu installiert. Wenn ich jetzt laufe which make, kehrt es richtig zurück /usr/bin/make.

Laden Sie 'Command Line Tools for Xcode' von Lion mit der neuen Version von Xcode von https://developer.apple.com/downloads herunter .


# 3: "Unsicheres Weltbeschreibungsverzeichnis"

Hier ist eine neue.

/Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:352: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777 

Das sieht nicht gut aus. Was muss ich tun, um das Problem zu beheben?

Lösung:

Etwas, das ich zu einem bestimmten Zeitpunkt installiert habe, hat die Berechtigungen für mein /usr/local/binVerzeichnis (sowie für mein Verzeichnis /usr/localund das /usr/local/mysqlVerzeichnis) geändert . Um diese zurück zu ändern:

sudo chmod 755 /usr/local/bin 

# 4: bcrypt-ruby kann nicht installiert werden

Schließlich versuche ich, bundle installauf meiner brandneuen Rails 3.0.0.beta4-App zu laufen, und ich erhalte folgende Fehlermeldung:

Installing bcrypt-ruby (2.1.2) from .gem files at /Users/andrew/.bundle/ruby/1.8/cache with native extensions /Library/Ruby/Site/1.8/rubygems/installer.rb:483:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h   Gem files will remain installed in /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2 for inspection. Results logged to /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2/ext/mri/gem_make.out from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `each' from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `build_extensions' from /Library/Ruby/Site/1.8/rubygems/installer.rb:198:in `install' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:170:in `install' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:34:in `run' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in `each' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in `each' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:21:in `run' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:6:in `install' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/cli.rb:91:in `install' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in `send' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in `run' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:109:in `invoke' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in `call' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in `invoke' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:137:in `start' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/base.rb:378:in `start' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:124:in `start' from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/bin/bundle:13 from /usr/bin/bundle:19:in `load' from /usr/bin/bundle:19 

Es sieht aus wie bcrypt-rubyeine Art Abhängigkeit, die es zu installieren versucht. Wie bekomme ich das zum Laufen? Woher weiß ich, warum es versagt?

Lösung:

Dies wurde durch die Neuinstallation von XCode behoben.


Sorry für die Wäscheliste, aber ich möchte wirklich alle diese Probleme loswerden!

Danke im Voraus!

5

4 Antworten auf die Frage

2
Mark

Dies wäre besser als getrennte Fragen, da ich nur einige beantworten kann.

  1. sudo- Unter OS X werden Gems in einem Verzeichnis unter installiert /Library. Alles hier wird von allen Benutzern auf dem Mac gemeinsam genutzt. Um darauf schreiben zu können, benötigen Sie Root-Zugriff, den Ihnen sudo bietet.
    Befehle ohne Sudo werden angezeigt, wenn einer der beiden Benutzer die Dinge schnell erklärt, da sie davon ausgehen, dass die Benutzer wissen, wann Sudo verwendet wird oder ob sie Ruby für die Installation in einem Benutzerverzeichnis gemäß der Ruby-Dokumentation eingerichtet haben

  2. und 4 .: Header-Dateien für Ruby nicht gefunden.
    Ich vermute, dass Sie XCode, die Apple-Entwicklerwerkzeuge, nicht installiert haben. Sie befinden sich auf Ihrer OS X-DVD oder können von Apple oder dem App Store heruntergeladen werden, wenn Sie OS X Lion verwenden.

  3. /usr/local/bin- das ist schlecht.
    Ausführen /Applications/Utilities/Disk Utility.app, wählen Sie das Startlaufwerk und Reparaturberechtigungen.

Laufendes Festplatten-Dienstprogramm hat diese Berechtigungsmeldung nicht korrigiert = \ Andrew vor 13 Jahren 1
Ich habe bereits XCode installiert, daher weiß ich nicht, warum dies das Problem sein würde Andrew vor 13 Jahren 0
für 2 & 4 - Ich benutze nicht viel Ruby (und wenn ich Macports verwendet habe), aber ich stelle fest, dass der Pfad zu ruby.h /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Ruby ist. Framework / Versionen / 1.8 / usr / lib / ruby ​​/ 1.8 / universal-darwin10.0 / ruby.h - Haben Sie einen anderen Rubin installiert? Mark vor 13 Jahren 0
Berechtigungen für sudo chmod 755 / usr / local / bin Mark vor 13 Jahren 0
re: 2 & 4, ich habe XCode neu installiert und das schien das Problem zu beheben Andrew vor 13 Jahren 0
Das Ändern von / usr / local / bin (und einigen anderen) auf 755 schien zu funktionieren. Ich gehe davon aus, dass es das war, was sie eigentlich hätten sein sollen, und irgendwie hat es etwas hinter den Kulissen verändert. Andrew vor 13 Jahren 0
2
ghoppe

Ich schlage vor, Ruby Version Manger zu installieren, und Sie müssen sich nicht um Sudo-Probleme sorgen. Sie können problemlos zwischen verschiedenen Ruby-Versionen und Gem-Sets wechseln.

Wenn ich gewusst hätte, wie einfach die Installation war, hätte ich es früher getan. Ich liebe RVM !!! Andrew vor 13 Jahren 0
@Undrew Sweet! Froh, dass ich helfen konnte. RVM hat mir die Entwicklung von Ruby / Schienen soooo viel einfacher gemacht. ghoppe vor 13 Jahren 0
1
uncrase

Zu # 4:

Wenn Sie XCode vermissen und über ein Apple Developers-Konto verfügen, können Sie auch nur die Befehlszeilentools (ca. 180 MB) installieren - ein Download auf der ADC-Site .

0
Mohammad Arif

Der Grund für den Berechtigungsfehler liegt darin, dass Sie nicht als Root-Benutzer am Terminal angemeldet sind.

Wenn Sie bereits über root verfügen, aktivieren Sie auf Ihrem Mac im Terminaltyp (ohne das $)

$ su 

Wenn Sie keinen Root-Benutzer haben, müssen Sie ihn mit den folgenden Schritten aktivieren

  1. Wählen Sie im Apple-Menü die Option Systemeinstellungen….
  2. Wählen Sie im Menü Ansicht die Option Benutzer und Gruppen.
  3. Klicken Sie auf die Sperre und authentifizieren Sie sich als Administratorkonto.
  4. Klicken Sie auf Anmeldeoptionen….
  5. Klicken Sie unten rechts auf die Schaltfläche "Bearbeiten" oder "Verbinden".
  6. Klicken Sie auf die Schaltfläche "Open Directory Utility…".
  7. Klicken Sie auf das Schloss im Directory Utility-Fenster.
  8. Geben Sie einen Administrator-Kontonamen und ein Kennwort ein und klicken Sie auf OK.
  9. Wählen Sie im Menü Bearbeiten die Option Root-Benutzer aktivieren.
  10. Geben Sie das Root-Passwort, das Sie verwenden möchten, in die Felder Password und Verify ein, und klicken Sie auf OK.

Mehr dazu auf http://support.apple.com/kb/ht1528

Zumindest funktioniert es für mich, nachdem ich einige Stunden festgefahren bin.