Mysql2 मणि ​​के साथ एप्लिकेशन इंस्टॉल करने का प्रयास करते समय त्रुटि


84

Im एक खुला स्रोत स्थापित करने की कोशिश कर रहा है जो 3.2.21 अनुप्रयोग का उपयोग करता है जो mysql2मणि का उपयोग करता है , लेकिन जब मैं कोशिश करता हूं और कमेंट चलाता हूं तो मुझे bundleनिम्नलिखित त्रुटि मिलती है:

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

मैंने mysqlहोमब्रे के माध्यम से स्थापित किए गए प्रत्येक संस्करण को अनइंस्टॉल करने की कोशिश की और उन्हें पुनः स्थापित किया, जैसे:

brew uninstall --force mysql && brew install mysql

फिर चल रहा है:

sudo gem install mysql2

जैसा कि यहां पर पूछे गए कई समान प्रश्नों के सुझाव दिए गए हैं, लेकिन यह अभी भी उपरोक्त त्रुटि के समान है।

कृपया कोई इस बारे में मार्गदर्शन दे सकता है कि यह कैसे उठे और चले?


"काढ़ा डॉक्टर" चलाने की कोशिश करें और जांचें कि क्या कोई त्रुटि है। यदि हां, तो निर्देशों का पालन करें और फिर से प्रयास करें।
20 नवंबर को मिचविविक्ज़

क्या आपने रत्न की निर्भरता स्थापित की है? github.com/brianmario/mysql2#general-instructions
lcguida

@ वलेंसेंसियो, मैं वहां आपसे दिल से असहमत हूं, मुझे लगता है कि आपको हमेशा विकास में अपने उत्पादन डीबी का उपयोग करने की कोशिश करनी चाहिए, यदि संभव हो तो। मैं कभी भी विकास में साइक्लाइट का उपयोग नहीं करता, न ही मैं किसी के साथ काम करता हूं।
नील्स

@niels। हाँ। मैं इससे सहमत हूं "मुझे लगता है कि आपको हमेशा अपने उत्पादन विकास में उपयोग करने की कोशिश करनी चाहिए," मेरी यह प्राचीन टिप्पणी बेकार थी। मैंने इसे मिटा दिया।
एल्विन

जवाबों:


54

त्रुटि लॉग कहता है:

ld: library not found for -lssl

तो, आपको स्थापित करने की आवश्यकता है libssl:

brew install openssl

जैसा कि टिप्पणियों में बताया गया था, पुस्तकालय को पथ निर्यात करने की आवश्यकता हो सकती है।

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

27
यह पर्याप्त नहीं था, किसी को इसे बाद में इस तरह से निर्यात करने की आवश्यकता है:export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
गिलग हिम

निर्यात LIBRARY_PATH = $ LIBRARY_PATH: / usr / स्थानीय / ऑप्ट / खुलता है / lib / `लंबे प्रयास के बाद मेरे लिए काम करता है। धन्यवाद!!
अभि

161

किसी के लिए भी समस्या का सामना करना पड़ रहा है:

जब आप काढ़ा के माध्यम से खुलता स्थापित करते हैं, तो आपको निम्न संदेश प्राप्त करना चाहिए:

Apple ने अपने खुद के टीएलएस और क्रिप्टो लाइब्रेरी के पक्ष में ओपनएसएसएल के उपयोग को हटा दिया है

आमतौर पर आपके लिए इसका कोई परिणाम नहीं होता है। यदि आप अपना स्वयं का सॉफ़्टवेयर बनाते हैं और इसके लिए इस सूत्र की आवश्यकता होती है, तो आपको अपने बिल्ड चर में जोड़ना होगा:

LDFLAGS: -L / usr / local / opt /
opensl / lib CPPFLAGS: -I / usr / local / opt /
opensl / शामिल PKG_CONFIG_PATH: / usr / स्थानीय / ऑप्ट / खुलता / lib / pkgconfig

आप इन बिल्ड फ़्लैग्स को (स्थानीय अनुप्रयोग के लिए) निम्न चलाकर सेट कर सकते हैं:

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

इसने मेरे लिए काम किया।

देखें के बंडलर प्रलेखन अधिक जानकारी के लिए।


79
यदि आप बस उपयोग करना चाहते हैं gem install, तो निम्नलिखित कार्य करता है: gem install mysql2 -v '0.3.21' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
नील्स

( "चेतावनी: लिंक करने से इनकार: खुले ssl ..." -> openssl की बहिष्कृत सिस्टम के साथ कुछ) ^^^ @niels है कि इसका जवाब होना चाहिए ... Alessandro के सिएरा पर काम नहीं करता
the12

2
@ 12 नील्स का समाधान के लिए है gem install, मेरा है bundle install। आप वास्तव में क्या समस्या का सामना कर रहे हैं, क्या आप त्रुटि पोस्ट कर सकते हैं? मैंने जो समाधान पोस्ट किया वह अभी भी मेरे लिए काम करता है।
एलेसेंड्रो बेर्डी

1
मैंने bundle installएक रेपो के लिए प्रयास करना शुरू किया जो कि mysql पर निर्भर करता है। @ एलेसेंड्रोबोर्डी का समाधान मेरे काम नहीं आया; @ हनील्स ने किया। : /
vergenzt

3
- नवीनतम OSX पर cppflags टूटता प्रतीत होता है। मेरा मानना ​​है कि इसे छोड़ा जा सकता है। bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
जेवियर शाइ

36

मेरे लिए समाधान Xcode कमांड लाइन टूल्स को स्थापित करना था।

मैंने हाल ही में मैक ऐप स्टोर के माध्यम से एक्सकोड को अपडेट किया था, और हर बार जब मैं ऐसा करता हूं, तो मैंने पाया है कि मुझे कमांड लाइन टूल्स को फिर से इंस्टॉल करना होगा।

xcode-select --install

34

इसे इस्तेमाल करे:

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

(उपयुक्त के रूप में अद्यतन संस्करण)


1
यह देखते हुए कि एसएसएल लाइब्रेरी नहीं मिली, यह सही दृष्टिकोण है और मेरे लिए ठीक काम किया है।
तेहजबेट

2
पहले स्थापित करें brew install opensslफिर gem install mysql2 -v '0.4.10' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include मेरे लिए काम किया, धन्यवाद!
टुसेफ मुर्तजा

1
@TouseefMurtaza आपके जवाब ने मेरे लिए काम किया - धन्यवाद!
जेरेड

Self प्रिय भविष्य के स्व। अब जब आप इस उत्तर को दो बार पढ़ चुके हैं। यह आपकी स्थिति के लिए इसे हल किया गया है! अब आगे जाएँ और अपना समय कोड और पैसे के लिए अपने कोड का आदान-प्रदान करें।
डेव्यूडॉल.कॉम

28

यहाँ समाधान पर आधारित है

brew install openssl

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

समस्या का हल किया।


1
exportवास्तव में मदद करता है। यहां तक ​​कि मौजूदा खुलने के साथ ही रास्ता गायब है।
याकूब उबैदी

10

मुझे सही दिशा में इंगित करने के लिए @mudasobwa धन्यवाद। यह पता चलता है कि त्रुटि एक अनलिंकड ओपनसेल फ़ाइल के कारण हुई थी, इसलिए चल रही है:

brew reinstall openssl && brew link openssl --force 

समस्या का हल किया। मुझे यहाँ समाधान मिला: ओपनएसएसएल, आरवीएम, ब्रू, परस्पर विरोधी त्रुटि


3

आदेशों के संयोजन ने मुझे हल कर दिया। मैं मोजावे पर हूं।

brew reinstall openssl && brew link openssl --force

और फिर

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


2

Homebrew अपडेट (खुलने के बाद @ 1.1) के लिए एक नया रास्ता है, इसलिए उपयोग कर सकते हैं:

bundle config build.mysql2 --with-opt-dir=$(brew --prefix openssl)
bundle install

इसे ठीक कर देंगे ld: library not found for -lssl error


1

लगता है कि आप mysql2मणि बनाने के लिए आवश्यक मुख्य फाइलों को याद करते हैं

sudo apt-get install libsqlite3-dev libmysqlclient-dev -y

libsqlite3-dev अनिवार्य नहीं है, लेकिन इसे स्थापित करें क्योंकि यह डिफ़ॉल्ट रेल DB है।


-1

मैंने पाया कि मुझे इस्तेमाल करना था --with-opt-dir=/usr/local/opt

विशेष रूप से, मैंने अपनी ~/.bundle/configफ़ाइल में निम्न जोड़ा :

BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.