Je suis en train de créer une application Rails et je viens de passer à Yosemite, et je pense que tout est tombé en panne lors de cette mise à jour. Tout fonctionnait hier soir lorsque j'ai enregistré tout mon code sur github. J'ai mis à jour mon ordinateur hier soir à Yosemite. Aujourd'hui, j'ai couru gem install bcrypt-Ruby
et tout a éclaté. J'ai;
xcodebuild -license
brew install rbenv Ruby-build rbenv-gem-rehash
pour obtenir le dernier Rubybrew install coreutils
Cela n'a pas fonctionné bien.
environnement: OSX Yosemite 10.10 , rbenv 0.4.0 , Ruby 2.1.3p242 (2014-09-19 révision 47630) [x86_64-darwin14.0], version 0.9.5 `
La source de l'erreur provient de mon application 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
J'ai eu l'erreur quand j'ai couru bundle install
. Voici la trace complète de la pile (tout le /users//
provient de la suppression du nom;)
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.
Si quelqu'un a déjà mis à jour OSX, Rbenv, Ruby, etc. et peut me donner des indications, ce serait très apprécié. Je peux également poster plus de code/environnement mis en place si nécessaire.
J'ai eu le même problème que j'ai résolu en réinstallant les outils de développement en ligne de commande XCode:
xcode-select --install
bundle install
Seule une combinaison d'actions m'a aidé à résoudre le problème. Voici ma séquence
1)
xcode-select --install
bundle install
2)
brew update
brew upgrade rbenv Ruby-build
3) Passé de Ruby 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) (facultatif) au cas où vous auriez eu un problème avec l'installation de nokogiri
brew install libxml2
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"
bundle
Après la mise à niveau vers OS X Yosemite et la tentative d'exécution de certaines applications Rails, je suis tombé sur d'autres problèmes.
En raison de la folie Apple après l'installation de Xcode, gcc ne compile pas de programmes comme n'importe quel compilateur gcc. Il vous demande plutôt de lire et d'accepter les termes du contrat de licence. Essayer
gcc --version
puis page à travers la merde de licence et le type d'accord à la fin, il devrait alors agir comme un compilateur gcc normal.
Cependant, cela ne fonctionne toujours pas car la version fournie de gcc (4.2.1) est trop ancienne pour libv8 (la version 4.4 était requise). Vous devez donc installer une version plus récente de gcc à l'aide de macports. Visitez http://www.macports.org/install.php . Une fois que macports est installé, tapez
Sudo port install gcc48 +universal
Sudo port select --set gcc mp-gcc48
hash gcc
gcc --version
et vous devriez voir
gcc (MacPorts gcc48 4.8.4_0+universal) 4.8.4
au 3/2/2015 gcc4.8 a eu 4 versions de correctifs de bogues et gcc4.9 en a 2 alors faites votre choix.
Maintenant que vous avez un compilateur gcc plus à jour, le prochain obstacle consiste à construire therubyracer. Gcc4.8 sur darwin ne reconnaît pas l'option -rdynamic, donc le curseur ne sera pas construit.
J'ai ajouté therubyracer et modifié extconf.rb pour modifier les options du compilateur. Vous pouvez l’utiliser à partir de github. Pour ce faire, changez votre Gemfile comme ça
# 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
J'utilise Ruby v 2.2.2, cela m'a aidé lorsque j'ai reçu cette erreur:
Gem :: Ext :: BuildError: ERROR: Echec de la création de l'extension native GEM Bcrypt-Ruby
xcode-select --install
brew update
gem install bundler
bundle install
Si xcode-select --install échoue, assurez-vous d'avoir accepté la licence.
Sudo xcodebuild -license accept