web-dev-qa-db-fra.com

Erreur lors de la tentative d'installation de l'application avec mysql2 gem

Im essayant d'installer une open source Rails 3.2.21 application qui utilise le mysql2 gem, mais lorsque j'essaie d'exécuter le bundle commant, j'obtiens l'erreur suivante:

Fetching: mysql2-0.3.18.gem (100%)
Building native extensions.  This could take a while...
p
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    /Users/my_username/.rvm/rubies/Ruby-2.1.2/bin/Ruby -r ./siteconf20150614-72129-orqsb7.rb extconf.rb
checking for Ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in Ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/Cellar/mysql/5.6.25/lib
-----
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
linking shared-object mysql2/mysql2.bundle
ld: warning: directory not found for option '-L/Users/travis/.sm/pkg/active/lib'
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/my_username/.rvm/rubies/Ruby-2.1.2/lib/Ruby/gems/2.1.0/gems/mysql2-0.3.18 for inspection.
Results logged to /Users/my_username/.rvm/rubies/Ruby-2.1.2/lib/Ruby/gems/2.1.0/extensions/x86

J'ai essayé de désinstaller toutes les versions de mysql que j'ai installées via homebrew et de les réinstaller, comme ceci:

brew uninstall --force mysql && brew install mysql

Puis en cours d'exécution:

Sudo gem install mysql2

Comme suggéré par un certain nombre de questions similaires posées ici, mais il en résulte toujours la même erreur que ci-dessus.

S'il vous plaît quelqu'un pourrait-il offrir des conseils sur la façon de mettre cela en place?

59
zenvelope

Le journal des erreurs indique:

ld: library not found for -lssl

Vous devez donc installer libssl:

brew install openssl

J'espère que ça aide.

13
Aleksei Matiushkin

Pour tous ceux qui rencontrent toujours le problème:

Lorsque vous installez openssl via brew, vous devriez obtenir le message suivant:

Apple a déconseillé l'utilisation d'OpenSSL au profit de ses propres bibliothèques TLS et crypto

Généralement, cela n'a aucune conséquence pour vous. Si vous créez votre propre logiciel et qu'il nécessite cette formule, vous devrez ajouter à vos variables de génération:

LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
PKG_CONFIG_PATH:/usr/local/opt/openssl/lib/pkgconfig

Vous pouvez définir ces indicateurs de génération (pour l'application locale) en exécutant ce qui suit:

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

Cela a fonctionné pour moi.

Voir documentation du bundler pour plus d'informations.

135
Alessandro Berardi

La solution pour moi a été d'installer les outils de ligne de commande Xcode.

J'avais récemment mis à jour Xcode via le Mac App Store, et chaque fois que je fais cela, j'ai constaté que je devais réinstaller les outils de ligne de commande.

xcode-select --install
35
Allen

Essaye ça:

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

(Mettre à jour la version le cas échéant)

19
stereodenis

Basé sur la solution ici

brew install openssl

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

résolu le problème.

8
Gilg Him

Merci @mudasobwa de m'avoir pointé dans la bonne direction. Il s'avère que l'erreur a été causée par un fichier openssl non lié, donc en cours d'exécution:

brew reinstall openssl && brew link openssl --force 

Résolu le problème. J'ai trouvé la solution ici: OpenSSL, RVM, Brew, erreur conflictuelle

6
zenvelope
Sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

À partir d'ici: https://gorails.com/setup/osx/10.14-mojave

2
k1r8r0wn