Ответ 1
У меня была та же проблема, которую я решил, повторно установив инструменты разработки командной строки XCode:
xcode-select --install
bundle install
Я делаю приложение для рельсов и просто обновлен до Yosemite, и я думаю, что во время этого обновления все сломалось. Все вчера работало, когда я проверял весь код на github. Вчера вечером я обновил свой компьютер до Йосемити. Сегодня я побежал gem install bcrypt-ruby
, и все сломалось. Я:
xcodebuild -license
brew install rbenv ruby-build rbenv-gem-rehash
, чтобы получить последний ruby brew install coreutils
: OSX Yosemite 10.10, rbenv 0.4.0, ruby 2.1.3p242 (версия 2014-09-19 47630 ) [x86_64-darwin14.0], brew 0.9.5 `
Источником ошибки является приложение rails:
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
Я получил ошибку, когда я запустил bundle install
. Вот полная трассировка стека (все /users//
извлекают имя ;)
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.
Если у кого-то есть опыт обновления OSX, Rbenv, Ruby и т.д. и может дать мне несколько указателей, это было бы высоко оценено. Я также могу разместить больше кода/среды, если это необходимо.
У меня была та же проблема, которую я решил, повторно установив инструменты разработки командной строки XCode:
xcode-select --install
bundle install
Только одна комбинация действий помогла мне решить проблему. Вот моя последовательность
1)
xcode-select --install
bundle install
2)
brew update
brew upgrade rbenv ruby-build
3) Переключение с рубина 2.1.4 на 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) (необязательно), если у вас возникла проблема с установкой nokogiri
brew install libxml2
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"
bundle
После обновления до OS X Yosemite и попыток запуска некоторых приложений с рельсами я столкнулся с некоторыми другими проблемами;
Из-за некоторого безумия Apple после установки Xcode gcc не компилирует такие программы, как любой другой gcc-компилятор, вместо этого он просит вас прочитать и согласиться с лицензионным соглашением - это кровавая щека, учитывая, что это gcc. Попробуйте
gcc --version
затем пройдите через лицензионный дерьмо, и тип соглашается в конце, тогда он должен действовать как обычный gcc-компилятор.
Однако это все еще может не сработать, поскольку связанная версия gcc (4.2.1) слишком устарела для libv8 (требуется 4.4), поэтому вам нужно установить более позднюю версию gcc с использованием macports. Посетите http://www.macports.org/install.php. После установки macports введите
sudo port install gcc48 +universal
sudo port select --set gcc mp-gcc48
hash gcc
gcc --version
и вы должны увидеть
gcc (MacPorts gcc48 4.8.4_0+universal) 4.8.4
по состоянию на 3/2/2015 gcc4.8 имеет 4 исправления ошибок, и gcc4.9 имеет 2, так что сделайте выбор.
Теперь, когда у вас есть более современный gcc-компилятор, следующее препятствие создает сборщик. Gcc4.8 на darwin не распознает -динамическую опцию, поэтому therubyracer не будет строить.
У меня есть forked therubyracer и изменен extconf.rb, чтобы изменить параметры компилятора - вы можете использовать его из github. Для этого измените свой Gemfile таким образом
# 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
Я запускаю Ruby v 2.2.2, это помогло мне, когда я получил эту ОШИБКУ:
Gem:: Ext:: BuildError: ERROR: Не удалось создать собственное расширение gem Bcrypt-Ruby
xcode-select --install
brew update
gem install bundler
bundle install
Если xcode-select -install не работает, убедитесь, что вы приняли лицензию
sudo xcodebuild -license accept
Если есть кто-то еще, он все еще борется, и это не очевидно, я бы порекомендовал вам установить XCode. Я сделал два обновления OSX 10.10, и они оба потребовали XCode для решения этой проблемы.