Mysql2 রত্ন সহ অ্যাপ্লিকেশন ইনস্টল করার চেষ্টা করার সময় ত্রুটি


84

আমি একটি মুক্ত উত্স রেলগুলি ইনস্টল করার চেষ্টা করছি 3..২.২১ অ্যাপ্লিকেশন যা 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

যেমনটি এখানে জিজ্ঞাসা করা বেশ কয়েকটি অনুরূপ প্রশ্ন দ্বারা প্রস্তাবিত হয়েছে, তবে এটি এখনও উপরের মতো একই ত্রুটির ফলস্বরূপ।

দয়া করে কেউ কীভাবে এটি চালিয়ে যেতে পারেন সে সম্পর্কে দিকনির্দেশনা দিতে পারেন?


"ক্রু ডাক্তার" চালানোর চেষ্টা করুন এবং কোনও ত্রুটি আছে কিনা তা পরীক্ষা করে দেখুন। যদি তা হয় তবে নির্দেশাবলী অনুসরণ করুন এবং আবার চেষ্টা করুন।
কেএম

আপনি কি মণির নির্ভরতা ইনস্টল করেছেন? github.com/brianmario/mysql2#
জেনারেল-

@ ভালএসেনসিও, আমি সেখানে আন্তরিকভাবে আপনার সাথে একমত নই, আমি মনে করি আপনার যদি সম্ভব হয় তবে আপনার প্রোডাকশন ডিবি বিকাশে ব্যবহার করার চেষ্টা করা উচিত। আমি কখনই বিকাশে স্ক্লাইট ব্যবহার করি না, বা কারও সাথে কাজ করি না।
নিলস

@niels। হ্যাঁ. আমি এটির সাথে একমত "আমার মনে হয় আপনার বিকাশে আপনার প্রোডাকশন ডিবি ব্যবহারের সর্বদা চেষ্টা করা উচিত," আমার এই প্রাচীন মন্তব্যটি নিরর্থক ছিল। আমি এটি মুছে ফেলেছি।
এলভন

উত্তর:


55

ত্রুটি লগ বলে:

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 = export LIBRARY_PATH: / usr / local / opt / openssl / lib / export রফতানি করুন দীর্ঘ প্রচেষ্টা করার পরে আমার জন্য কাজ করে। ধন্যবাদ!!
অভি

162

যে কেউ এখনও সমস্যাটি অনুভব করছেন:

যখন আপনি ব্রিউয়ের মাধ্যমে ওপেনসেল ইনস্টল করেন, আপনার নিম্নলিখিত বার্তাটি পাওয়া উচিত:

অ্যাপল তার নিজস্ব টিএলএস এবং ক্রিপ্টো লাইব্রেরির পক্ষে ওপেনএসএসএল ব্যবহার অবমূল্যায়ন করেছে

সাধারণত আপনার জন্য এর কোনও পরিণতি হয় না। আপনি যদি নিজের সফটওয়্যারটি তৈরি করেন এবং এটির জন্য এই সূত্রের প্রয়োজন হয়, আপনাকে আপনার বিল্ড ভেরিয়েবলগুলি যুক্ত করতে হবে:

এলডিএফএলএজিএস: -এল / ইউএসআর / স্থানীয় / অপ্ট /
ওপেনসেল / লিব সিপিপিএফএলএজিএস: -আই / ইউএসআর / লোকাল / অপ্ট /
ওপেনএসএল / পিকেজি_সিএনএফআইজিপিএইচএইচডি অন্তর্ভুক্ত : / ইউএসআর / লোকাল / অপ্ট / ওপেনএসএল / লিবিব / পিকগনফিগ

আপনি নিম্নলিখিতটি চালিয়ে এই বিল্ড ফ্ল্যাগগুলি (স্থানীয় অ্যাপ্লিকেশনটির জন্য) সেট করতে পারেন:

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

এটি আমার পক্ষে কাজ করেছে।

দেখুন এর bundler ডকুমেন্টেশন দেখুন।


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
নিলস

ni @ স্নাতকের উত্তর হওয়া উচিত ... আলেসান্দ্রো সিয়েরায় কাজ করে না ("সতর্কতা: লিঙ্ক প্রত্যাখ্যান করছে: ওপেন এসএসএল ..." ->
ওপেনসেলের অবহেলিত

4
@ 12 টি নিলসের সমাধানটি gem installআমার জন্য bundle install। আপনি ঠিক কোন সমস্যাটি অনুভব করছেন, আপনি কি ত্রুটিটি পোস্ট করতে পারেন? আমি পোস্ট করা সমাধানটি এখনও আমার পক্ষে কাজ করে।
আলেসান্দ্রো বেরার্ডি

4
আমি bundle installএমন একটি রেপো যা মাইএসকিএলের উপর নির্ভর করে তার জন্য চেষ্টা করা থেকে শুরু করেছিলাম । @ আলেসান্দ্রোবোর্ডির সমাধানটি আমার পক্ষে কার্যকর হয়নি; @niels 'করেছে। : /
ভার্জেনজেট

4
- সর্বাধিক ওএসএক্স-এর সাথে সিপিপিএফ্ল্যাগগুলি বিরতিতে দেখা যাচ্ছে। আমি বিশ্বাস করি এটি বাদ দেওয়া যেতে পারে। bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
জাভিয়ের শায়

36

আমার জন্য সমাধানটি ছিল এক্সকোড কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করা।

আমি সম্প্রতি ম্যাক অ্যাপ স্টোরের মাধ্যমে এক্সকোড আপডেট করেছি এবং যতবার আমি এটি করি, আমি খুঁজে পেয়েছি যে আমাকে আবার কমান্ড লাইন সরঞ্জাম পুনরায় ইনস্টল করতে হবে।

xcode-select --install

36

এটা চেষ্টা কর:

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

(যথাযথ হিসাবে সংস্করণ আপডেট করুন)


4
প্রদত্ত যে এসএসএল লাইব্রেরিটি পাওয়া যায় নি এটি সঠিক পদ্ধতির এবং আমার জন্য সূক্ষ্মভাবে কাজ করেছে।
তেহজবিত

4
প্রথম ইনস্টল 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 আমার জন্য কাজ, ধন্যবাদ!
তৌসিফ মুর্তজা

4
@ টাউসফ মুর্তজা আপনার উত্তর আমার পক্ষে কাজ করেছে - আপনাকে ধন্যবাদ!
জ্যারেড

👋 প্রিয় ভবিষ্যতের স্ব। এখন আপনি এই উত্তরটি এখন দুবার পড়েছেন। এটি আপনার পরিস্থিতির জন্য এটি সমাধান! এখন এগিয়ে যান এবং কোডের জন্য আপনার সময় এবং অর্থের জন্য আপনার কোডটি বিনিময় করুন exchange
DaveWoodall.com

28

সমাধানের ভিত্তিতে এখানে

brew install openssl

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

সমস্যার সমাধান।


4
exportসত্যিই সাহায্য করে। এমনকি বিদ্যমান ওপেনসেল দিয়েও পথটি অনুপস্থিত।
ইয়াকব উবাইদি

10

আমাকে সঠিক দিকে নির্দেশ করার জন্য @ মুদাসোব্বাকে ধন্যবাদ। এটি তাত্ক্ষণিকভাবে দেখা গেছে যে একটি লিঙ্কযুক্ত লিখিত ওপেনএসএল ফাইলের কারণে ত্রুটি হয়েছিল, তাই এটি চলছে:

brew reinstall openssl && brew link openssl --force 

সমস্যার সমাধান. আমি সমাধানটি এখানে পেয়েছি: ওপেনএসএসএল, আরভিএম, মিশ্রণ, বিরোধী ত্রুটি



2

আদেশের সংমিশ্রণটি এটি আমার সমাধান করেছে solved আমি মোজাভে।

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

হোমব্রিউ আপডেটের পরে (openssl@1.1) libs এর জন্য একটি নতুন পথ রয়েছে, সুতরাং এটি ব্যবহার করতে পারেন:

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 বাধ্যতামূলক নয় তবে এটি ইনস্টল করুন যেহেতু এটি ডিফল্ট রেলগুলি ডিবি।


-1

আমি খুঁজে পেয়েছি যে আমি ব্যবহার করতে হয়েছিল --with-opt-dir=/usr/local/opt

বিশেষত, আমি আমার ~/.bundle/configফাইলে নিম্নলিখিতগুলি যুক্ত করেছি :

BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.