Ich versuche, eine Open Source Rails 3.2.21-Anwendung zu installieren, die das Gem verwendet mysql2
, aber wenn ich versuche, den bundle
Commant auszuführen, erhalte ich den folgenden Fehler:
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
Ich habe versucht, jede von mysql
mir über Homebrew installierte Version zu deinstallieren und neu zu installieren, wie folgt:
brew uninstall --force mysql && brew install mysql
Dann laufen:
sudo gem install mysql2
Wie aus einer Reihe ähnlicher Fragen hervorgeht, die hier gestellt werden, führt dies jedoch immer noch zu demselben Fehler wie oben.
Könnte jemand eine Anleitung geben, wie man dies zum Laufen bringt?
mysql
ruby-on-rails
ruby
ruby-on-rails-4
mysql2
Zenvelope
quelle
quelle
Antworten:
Das Fehlerprotokoll lautet:
ld: library not found for -lssl
Sie müssen also Folgendes installieren
libssl
:brew install openssl
Wie in den Kommentaren erwähnt, muss der Pfad möglicherweise in die Bibliothek exportiert werden.
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
quelle
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
Für alle, die das Problem noch haben:
Wenn Sie openssl über Brew installieren, sollte die folgende Meldung angezeigt werden:
Sie können diese Build-Flags (für die lokale Anwendung) setzen, indem Sie Folgendes ausführen:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Das hat bei mir funktioniert.
Siehe Bündler in der Dokumentation für weitere Informationen.
quelle
gem install
, funktioniert Folgendes:gem install mysql2 -v '0.3.21' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
gem install
, meine ist fürbundle install
. Welches Problem tritt genau auf? Können Sie den Fehler veröffentlichen? Die Lösung, die ich gepostet habe, funktioniert immer noch für mich.bundle install
ein Repo zu finden, das von MySQL abhängt. @ AlessandroBerardis Lösung hat bei mir nicht funktioniert; @niels 'hat. : /bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
Die Lösung für mich war die Installation der Xcode Command Line Tools.
Ich habe Xcode kürzlich über den Mac App Store aktualisiert und jedes Mal, wenn ich das tue, muss ich die Befehlszeilentools erneut installieren.
xcode-select --install
quelle
Versuche dies:
gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
(Version entsprechend aktualisieren)
quelle
brew install openssl
danngem install mysql2 -v '0.4.10' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
für mich funktioniert, Danke!Basierend auf der Lösung hier
brew install openssl export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
Problem gelöst.
quelle
export
hilft wirklich. Auch bei vorhandenem openssl fehlt der Pfad.Danke @mudasobwa, dass du mich in die richtige Richtung gelenkt hast. Es stellt sich heraus, dass der Fehler durch eine nicht verknüpfte openssl-Datei verursacht wurde.
brew reinstall openssl && brew link openssl --force
Problem gelöst. Ich habe hier die Lösung gefunden: OpenSSL, RVM, Brew, Konfliktfehler
quelle
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Von hier aus: https://gorails.com/setup/osx/10.14-mojave
quelle
Die Kombination von Befehlen hat es mir gelöst. Ich bin auf Mojave.
brew reinstall openssl && brew link openssl --force
und dann
gem install mysql2 -v '0.4.10' -- \ --with-ldflags=-L/usr/local/opt/openssl/lib \ --with-cppflags=-I/usr/local/opt/openssl/include
quelle
Nach dem Homebrew-Update ([email protected]) gibt es einen neuen Pfad für libs. Verwenden Sie daher Folgendes:
bundle config build.mysql2 --with-opt-dir=$(brew --prefix openssl) bundle install
Es wird behoben
ld: library not found for -lssl error
quelle
Scheint, dass Sie die Hauptdateien vermissen, die zum Erstellen von
mysql2
Gem benötigt werdensudo apt-get install libsqlite3-dev libmysqlclient-dev -y
libsqlite3-dev
ist nicht obligatorisch, aber installieren Sie es, da es sich um die Standard-Rails-Datenbank handelt.quelle
Ich fand, dass ich verwenden musste
--with-opt-dir=/usr/local/opt
.Insbesondere habe ich meiner
~/.bundle/config
Datei Folgendes hinzugefügt :BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"
quelle