Próbuję zainstalować aplikację rails 3.2.21 typu open source, która używa mysql2
klejnotu, ale kiedy próbuję uruchomić bundle
Commant, pojawia się następujący błąd:
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
Próbowałem odinstalować każdą wersję mysql
zainstalowaną przez homebrew i ponownie ją zainstalować, na przykład:
brew uninstall --force mysql && brew install mysql
Następnie bieganie:
sudo gem install mysql2
Jak sugeruje szereg podobnych pytań zadanych tutaj, ale nadal powoduje to ten sam błąd, co powyżej.
Czy ktoś mógłby udzielić wskazówek, jak to skonfigurować i uruchomić?
mysql
ruby-on-rails
ruby
ruby-on-rails-4
mysql2
zenvelope
źródło
źródło
Odpowiedzi:
Dziennik błędów mówi:
ld: library not found for -lssl
Musisz więc zainstalować
libssl
:brew install openssl
Jak wskazano w komentarzach, może zaistnieć potrzeba wyeksportowania ścieżki do biblioteki.
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
źródło
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
Dla każdego, kto nadal ma problem:
Po zainstalowaniu openssl przez brew, powinieneś otrzymać następujący komunikat:
Możesz ustawić te flagi kompilacji (dla aplikacji lokalnej), uruchamiając następujące polecenie:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
To zadziałało dla mnie.
Więcej informacji można znaleźć w dokumentacji bundlera .
źródło
gem install
, działa to: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
, moje jest dlabundle install
. Jaki dokładnie masz problem, czy możesz opublikować błąd? Rozwiązanie, które opublikowałem, nadal działa dla mnie.bundle install
repozytorium zależnego od mysql. @ Rozwiązanie AlessandroBerardi nie działa dla mnie; @niels ”. : /bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
Rozwiązaniem dla mnie była instalacja narzędzi wiersza poleceń Xcode.
Niedawno zaktualizowałem Xcode za pośrednictwem Mac App Store i za każdym razem, gdy to robię, stwierdziłem, że muszę ponownie zainstalować narzędzia wiersza poleceń.
xcode-select --install
źródło
Spróbuj tego:
gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
(Zaktualizuj odpowiednią wersję)
źródło
brew install openssl
a potemgem install mysql2 -v '0.4.10' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
zadziałała dla mnie, dzięki!Na podstawie rozwiązania tutaj
brew install openssl export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
Rozwiązać problem.
źródło
export
naprawdę pomaga. nawet z istniejącym openssl brakuje ścieżki.Dzięki @mudasobwa za wskazanie mi właściwego kierunku. Okazuje się, że błąd był spowodowany przez niepowiązany plik openssl, więc uruchomiono:
brew reinstall openssl && brew link openssl --force
Rozwiązać problem. Rozwiązanie znalazłem tutaj: OpenSSL, RVM, Brew, konflikt błędu
źródło
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Stąd: https://gorails.com/setup/osx/10.14-mojave
źródło
Kombinacja poleceń rozwiązała to mnie. Jestem na Mojave.
brew reinstall openssl && brew link openssl --force
i wtedy
gem install mysql2 -v '0.4.10' -- \ --with-ldflags=-L/usr/local/opt/openssl/lib \ --with-cppflags=-I/usr/local/opt/openssl/include
źródło
Po aktualizacji Homebrew ([email protected]) pojawiła się nowa ścieżka do bibliotek, więc można użyć:
bundle config build.mysql2 --with-opt-dir=$(brew --prefix openssl) bundle install
To naprawi
ld: library not found for -lssl error
źródło
Wygląda na to, że brakuje Ci głównych plików potrzebnych do zbudowania
mysql2
klejnotusudo apt-get install libsqlite3-dev libmysqlclient-dev -y
libsqlite3-dev
nie jest obowiązkowe, ale zainstaluj je, ponieważ jest to domyślny DB railsów.źródło
Okazało się, że muszę użyć
--with-opt-dir=/usr/local/opt
.W szczególności dodałem do mojego
~/.bundle/config
pliku:BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"
źródło