Ich mache eine Rails-App und habe gerade ein Upgrade auf Yosemite durchgeführt, und ich denke, während dieses Updates ist alles kaputt gegangen. Letzte Nacht hat alles funktioniert, als ich meinen Code in github eingecheckt habe. Ich habe meinen Computer gestern Abend auf Yosemite aktualisiert. Heute lief ich gem install bcrypt-Ruby
und alles brach zusammen. Ich habe;
xcodebuild -license
brew install rbenv Ruby-build rbenv-gem-rehash
, um den neuesten Ruby zu erhaltenbrew install coreutils
Das hat aber nicht funktioniert.
Umgebung: OSX Yosemite 10.10 , rbenv 0.4.0 , Ruby 2.1.3p242 (2014-09-19, Revision 47630) [x86_64-darwin14.0], Sud 0.9.5 `
Die Fehlerquelle stammt aus meiner Rails-App:
gemfile
gem 'Rails', '4.1.5'
gem 'pg'
gem 'uglifier', '>= 1.3.0'
gem 'jquery-Rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'spring', group: :development
gem 'bcrypt-Ruby'
group :test, :development do
gem 'rspec-Rails', "~> 2.14"
end
group :test do
gem 'capybara', "2.1.0"
gem 'factory_girl_Rails', '~> 4.2.1'
end
Ich habe die Fehlermeldung erhalten, als ich bundle install
lief. Hier ist der vollständige Stack-Trace (der gesamte /users//
stammt vom Namen;)
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users//.rbenv/versions/2.0.0-p247/bin/Ruby -r ./siteconf20141027-60319-1lss4fm.rb extconf.rb
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling bcrypt_ext.c
couldn't understand kern.osversion `14.0.0'
In file included from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby.h:33,
from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:51:21: error: string.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:61:21: error: stdint.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:64:23: error: inttypes.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:68:19: error: stdio.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:70,
from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby.h:33,
from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/defines.h:29:21: error: stdlib.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:194,
from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby.h:33,
from bcrypt_ext.c:1:
/usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/../lib/gcc/i686-Apple-darwin11/4.2.1/include/limits.h:10:25: error: limits.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:1567,
from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby.h:33,
from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/missing.h:23:45: error: math.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:1568,
from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby.h:33,
from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:36:23: error: sys/types.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:40:22: error: sys/time.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:43,
from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:1568,
from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby.h:33,
from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/st.h:140: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
In file included from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/ruby.h:1568,
from /Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby.h:33,
from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:326: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:416: warning: ‘struct timeval’ declared inside parameter list
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:416: warning: its scope is only this definition or declaration, which is probably not what you want
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:417: warning: ‘struct timeval’ declared inside parameter list
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:418: warning: ‘struct timeval’ declared inside parameter list
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:514: error: expected declaration specifiers or ‘...’ before ‘mode_t’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:593: error: expected declaration specifiers or ‘...’ before ‘pid_t’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:607: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fork’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:608: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fork_err’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:610: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_waitpid’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:611: error: expected ‘)’ before ‘pid’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:612: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_spawn’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:613: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_spawn_err’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:615: error: expected ‘)’ before ‘pid’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:728: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:851: error: expected ‘)’ before ‘long’
/Users//.rbenv/versions/2.0.0-p247/include/Ruby-2.0.0/Ruby/intern.h:852: error: expected ‘)’ before ‘long’
bcrypt_ext.c: In function ‘bc_salt’:
bcrypt_ext.c:21: warning: incompatible implicit declaration of built-in function ‘strlen’
make: *** [bcrypt_ext.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users//ticket_tracker/vendor/bundle/gems/bcrypt-3.1.9 for inspection.
Results logged to /Users//ticket_tracker/vendor/bundle/extensions/x86_64-darwin-12/2.0.0-static/bcrypt-3.1.9/gem_make.out
An error occurred while installing bcrypt (3.1.9), and Bundler cannot continue.
Make sure that `gem install bcrypt -v '3.1.9'` succeeds before bundling.
Wenn jemand Erfahrung mit OSX, Rbenv, Ruby usw. hat und mir ein paar Hinweise geben kann, wäre das sehr dankbar. Ich kann bei Bedarf auch mehr Code/Umgebung einrichten.
Ich hatte das gleiche Problem, das ich durch die Neuinstallation der XCode-Befehlszeilen-Entwickler-Tools gelöst habe:
xcode-select --install
bundle install
Nur eine Kombination von Aktionen half mir, das Problem zu lösen. Hier ist meine Reihenfolge
1)
xcode-select --install
bundle install
2)
brew update
brew upgrade rbenv Ruby-build
3) Umstellung von Ruby 2.1.4 auf 2.1.5
rbenv install 2.1.5
rbenv global 2.1.5
rbenv Shell 2.1.5
rbenv rehash
gem install bundler
bundle
4) (optional) für den Fall, dass Sie Probleme mit der Installation von nokogiri hatten
brew install libxml2
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"
bundle
Nach dem Upgrade auf OS X Yosemite und dem Ausführen einiger Rails-Apps bin ich auf andere Probleme gestoßen.
Aufgrund eines gewissen Apple-Wahnsinns nach der Installation von Xcode kompiliert gcc keine Programme wie jeder andere gcc-Compiler. Stattdessen werden Sie aufgefordert, die Lizenzvereinbarung zu lesen und zuzustimmen. Dies ist eine verdammte Wange, wenn man bedenkt, dass es gcc ist. Versuchen
gcc --version
dann blättere durch den Lizenz-Mist und tippe am Ende als einverstanden, dann sollte es als normaler gcc-Compiler fungieren.
Dies funktioniert jedoch möglicherweise nicht, da die gebündelte Version von gcc (4.2.1) für libv8 (4.4 war erforderlich) zu alt ist. Sie müssen stattdessen eine neuere Version von gcc mit macports installieren. Besuchen Sie http://www.macports.org/install.php . Sobald macports installiert ist, geben Sie den Typ ein
Sudo port install gcc48 +universal
Sudo port select --set gcc mp-gcc48
hash gcc
gcc --version
und du solltest sehen
gcc (MacPorts gcc48 4.8.4_0+universal) 4.8.4
stand vom 02.03.2015 gcc4.8 hat 4 Bugfix-Releases und gcc4.9 hat 2, also wählen Sie Ihre Wahl.
Jetzt, da Sie einen aktuelleren gcc-Compiler haben, ist die nächste Hürde die Erstellung eines neuen Radlers. Gcc4.8 in Darwin erkennt die -rdynamic-Option nicht, so dass kein Therubyracer erstellt wird.
Ich habe Therubyracer gegabelt und extconf.rb modifiziert, um die Compiler-Optionen zu verändern - Sie können es von Github verwenden. Ändern Sie dazu Ihr Gemfile so
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
platforms :Ruby do
if Ruby_PLATFORM=~ /darwin/
gem 'therubyracer', :git => 'https://github.com/damianham/therubyracer.git'
else
gem 'therubyracer', '0.12.1'
end
end
Ich führe Ruby v 2.2.2 aus. Dies hat mir geholfen, als ich diesen Fehler erhielt:
Gem :: Ext :: BuildError: ERROR: Fehler beim Erstellen der nativen Gem-Erweiterung Bcrypt-Ruby
xcode-select --install
brew update
gem install bundler
bundle install
Wenn xcode-select --install fehlschlägt, stellen Sie sicher, dass Sie die Lizenz akzeptiert haben
Sudo xcodebuild -license accept