13 votes

rails s -> dyld : lazy symbol binding failed : Symbole non trouvé : _rb_intern2

Ainsi, rails s ne fonctionne pas avec rails generate. Je pensais que le problème venait de heroku toolbelt, je l'ai donc supprimé mais cela n'a pas fait l'affaire. J'ai ensuite vérifié mon fichier .zshrc et j'ai vu qu'il avait une version différente de ruby qu'il appelait dans le PATH, alors je l'ai mis à jour. Mais cela n'a pas fonctionné. Je suis à court d'idées. Quelqu'un peut-il m'aider, s'il vous plaît ?

#( 05/06/13@10:01AM )( admin@Administrators-MacBook-Pro ):~/desktop/scratch rails s dyld : lazy symbol binding failed : Symbole non trouvé : _rb_intern2 Référencé depuis : /Users/admin/.rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle Attendu dans : flat namespace

dyld: Symbol not found: _rb_intern2
  Referenced from: /Users/admin/.rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle
  Expected in: flat namespace

[1]    69741 trace trap  rails s

#( 05/06/13@10:02AM )( admin@Administrators-MacBook-Pro ):~/desktop/scratch rvm list default

Default Ruby (for new shells)

   ruby-1.9.3-p392 [ x86_64 ]

#( 05/06/13@10:11AM )( admin@Administrators-MacBook-Pro ):~/desktop/scratch ruby -v

ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

#( 05/06/13@10:11AM )( admin@Administrators-MacBook-Pro ):~/desktop/scratch rails -v

Rails 3.2.12

gemfile :

source 'https://rubygems.org'

gem 'rails', '3.2.12'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'
# gem 'pg'
gem "bootstrap-sass", ">= 2.3.0.0"

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'debugger'

fichier .zshrc :

# Path to your oh-my-zsh configuration.
ZSH=$HOME/.oh-my-zsh

# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="junkfood"

# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

# Set to this to use case-sensitive completion
# CASE_SENSITIVE="true"

# Comment this out to disable bi-weekly auto-update checks
# DISABLE_AUTO_UPDATE="true"

# Uncomment to change how many often would you like to wait before auto-updates occur? (in days)
# export UPDATE_ZSH_DAYS=13

# Uncomment following line if you want to disable colors in ls
# DISABLE_LS_COLORS="true"

# Uncomment following line if you want to disable autosetting terminal title.
# DISABLE_AUTO_TITLE="true"

# Uncomment following line if you want red dots to be displayed while waiting for completion
# COMPLETION_WAITING_DOTS="true"

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git)

source $ZSH/oh-my-zsh.sh

# Customize to your needs...
export PATH=//opt/local/bin:/opt/local/sbin://usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/opt/local/bin:/opt/local/sbin:/Users/admin/.rvm/gems/ruby-1.9.3-p392/bin:/Users/admin/.rvm/gems/ruby-1.9.3-p392@global/bin:/Users/admin/.rvm/rubies/ruby-1.9.3-p392/bin:/Users/admin/.rvm/bin:/usr/local/mysql/bin:/Users/admin/.rvm/bin

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

16voto

Aneil Mallavarapu Points 1074

Erreurs similaires de la forme :

Symbol not found: {some-symbol}
Referenced from: /path/to/some/file.bundle
Expected in: flat namespace

semblent apparaître pour un grand nombre de pierres précieuses.

Le problème sous-jacent semble être une bibliothèque d'extension C incompatible (dans le cas ci-dessus, sqlite3_native.bundle). Il semble que pour une raison quelconque, la gem a été installée pour une ancienne version de ruby, et la version actuelle de ruby n'a pas la méthode C exportée que la bibliothèque d'extension recherche.

Il y a deux façons de résoudre ce problème

  • Désinstaller et réinstaller le paquet (comme indiqué dans le commentaire de Shawn Balestracci ci-dessus). Dans le cas ci-dessus, nous pouvons déduire que le paquet est sqlite3 :

    gem uninstall {package}; gem install {package}

OR (moins préférable, mais peut être utile si la méthode ci-dessus échoue pour une raison quelconque) :

  • Supprimez le fichier bundle et réinstallez le paquet. Voir le message d'erreur : Referenced from : /Users/admin/.rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle, nous devons juste.. :

    rm {path-to-bundle-file}; gem install {package}

8voto

Frederick Cheung Points 38410

Si vous utilisez rvm, vous devriez le laisser ajouter ses chemins à $PATH plutôt que de le faire vous-même. Dans l'état actuel des choses, il semble que vous n'utilisiez qu'à moitié rvm : vous récupérez les gemmes installées pour le ruby installé par rvm, mais comme les chemins du ruby de rvm se trouvent à la fin de $PATH, l'exécution de ruby récupère un ruby installé via une autre méthode (peut-être une méthode fournie par le système)

En conséquence, ruby 1.8.7 essaie de charger une extension compilée pour ruby 1.9.3, ce qui ne fonctionne pas.

1voto

littleforest Points 1149

Le changement de compilateur C a fonctionné pour moi. J'ai reçu une de ces erreurs concernant la gemme gpgme. Mon binaire gcc pointait vers une installation de gcc-4.9.2 que j'avais installée. Je l'ai changé pour utiliser le compilateur natif clang sur mon Mac OS 10.10 (Yosemite), et le serveur rails a fonctionné correctement après avoir désinstallé et réinstallé la gem.

1voto

MikDiet Points 4024

Je suis confronté à cette erreur lorsque j'essaie d'exécuter rails server mais lorsque j'exécute bundle exec rails server il n'y a pas eu d'erreurs.

0voto

moby Points 6711

Il s'est avéré qu'il s'agissait d'un problème lié à mon installation de Ruby et non à la page elle-même. Ce que j'ai fait pour le résoudre :

J'utilise RVM. J'ai donc commencé par mettre à jour Ruby de 2.1.1 à 2.2 :

rvm install 2.2
rvm use 2.2

Vous devez maintenant réinstaller toutes vos pierres précieuses :

gem install bundler
bundle install

Mettez ensuite à jour votre nginx.conf :

passenger_root /usr/local/opt/passenger/libexec/src/ruby_supportlib/phusion_passenger/locations.ini;
    passenger_ruby /Users/admin/.rvm/gems/ruby-2.2.4/wrappers/ruby;

Vos valeurs peuvent être différentes.

Redémarrez ensuite Nginx. L'erreur a disparu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X