dyld: লাইব্রেরি লোড করা হয়নি: /usr/local/lib/libjpeg.8.dylib - হোমব্রু পিএইচপি


108

পিএইচপি আমার পক্ষে কাজ করছে না কারণ আমি এই লিপ্পং সমস্যাটির মুখোমুখি হয়েছি , তাই আমি হোমব্রিউয়ের সাথে একটি নতুন সংস্করণ পুনরায় ইনস্টল করেছি।

তবে, আমি libjpegএই সময়ের সাথে একই ধরণের ত্রুটি পাচ্ছি :

$ php -v
dyld: Library not loaded: /usr/local/lib/libjpeg.8.dylib
  Referenced from: /usr/local/bin/php
  Reason: image not found
Trace/BPT trap: 5

কোনও পরামর্শ?


এর আউটপুট কী brew doctorএবং brew list?
আইকনাগ

উত্তর:


250

হোমব্রিজি- পিএইচপি রেপো ইস্যুতে @ জিরসন-টভেরা প্রস্তাবিত হিসাবে , এটি আপনার ব্রু ইনস্টলেশনটি অগ্রাহ্য না করে স্থির করা যেতে পারে:

wget -c http://www.ijg.org/files/jpegsrc.v8d.tar.gz
tar xzf jpegsrc.v8d.tar.gz
cd jpeg-8d
./configure
make
cp ./.libs/libjpeg.8.dylib /usr/local/opt/jpeg/lib

4
পরিষ্কার-পরিচ্ছন্নতার জন্য একটি বিজোড় লাইন যুক্ত করার পাশাপাশি, এটি অবশ্যই গ্রহণযোগ্য উত্তর হওয়া উচিত ...
কোইন বেটেন্স

আমার জন্যও কাজ করেছেন। ধন্যবাদ।
অ্যাড্রিয়ান লিঞ্চ

আমার জন্যও কাজ করেছেন। চিয়ার্স।
এডুয়ার্ডো লেগিগেরো

19
পরিবর্তে এটি সঠিকভাবে করার বিষয়ে বিবেচনা করুন ।
sepehr

ধন্যবাদ কাজগুলি, ইনস্টল করা খরগোশের পরেও আমি একই সমস্যা পেয়েছি
ওমর মাকলেদ ২17

167

যদিও গৃহীত উত্তরের সমাধানটি কাজ করে, সমস্যাটি ঠিক করার সঠিক উপায় এটি নয়। এটি ব্রিউয়ের মেটাডেটা অখণ্ডতা লঙ্ঘন করে।

সমস্যা

সমস্যাটি হ'ল হোমব্রিউর jpegসূত্রটি ভি 9 তে আপগ্রেড করা হয়েছে তবে বিদ্যমান "বোতলজাত" পিএইচপি সূত্রটি এখনও পূর্ববর্তী সংস্করণ, ভি 8 এর সাথে নির্মিত এবং সংযুক্ত, যা আপনার সিস্টেমে আর নেই।

সমস্যা সমাধানের জন্য আপনার কাছে কয়েকটি বিকল্প রয়েছে।

1. phpxxউত্স থেকে সূত্র পুনরায় কম্পাইল (অত্যন্ত প্রস্তাবিত)

আপনার পিএইচপি সূত্রটি আনইনস্টল করুন এবং বোতলজাত সংস্করণ ব্যবহার না করে উত্স থেকে এটি পুনর্নির্মাণ করুন। এইভাবে, পিএইচপি ব্যবহার করবে এবং বর্তমানে ইনস্টলিত সংস্করণটির সাথে লিঙ্ক করবে jpeg। ধরে নিচ্ছি যে আপনি যার সাথে ডিল করছেন php71:

brew reinstall php71 --build-from-source

২. সঠিকভাবে jpegসূত্রটি ডাউনগ্রেড করুন (ম্যানুয়ালি এটি পুনরায় সংকলনের চেয়ে পছন্দসই)

আপনি যদি না চালিয়ে থাকেন তবে brew cleanupআপনি ইতিমধ্যে jpegআপনার মদ তৈরির ঘরের মধ্যে পূর্ববর্তী সংস্করণটি পেয়েছেন , এতে স্যুইচ করুন:

brew switch jpeg 8d

আপনি যদি কোনও jpeg does not have a version "8d" in the Cellar.ত্রুটি পান তবে আপনাকে প্রথমে ইতিহাসটি ফিরিয়ে এটিকে পুনরুদ্ধার করতে হবে:

cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core
git checkout b231469
HOMEBREW_NO_AUTO_UPDATE=1 brew install jpeg
git checkout master

brew switch jpeg 8d

brew log jpegপ্রতিশ্রুতি বার্তা ব্যবহার করে এবং ব্যবহার করে আপনি কমিট হ্যাশটি সন্ধান করতে পারেন ।

ক্ষতিটি হ'ল এমন অন্যান্য সূত্রগুলিও থাকতে পারে যাতে সঠিকভাবে কাজ করার জন্য আরও নতুন সংস্করণ প্রয়োজন imagemagick। যদি আপনি এই জাতীয় বেমানান সমস্যার মুখোমুখি হন তবে উপরের প্রথম সমাধানটি পরীক্ষা করে দেখুন।

৩. jpegম্যানুয়ালি পুনরায় সংশোধন করে ডাউনগ্রেড (প্রস্তাবিত নয়)

উত্সটি আনুন, সংশ্লেষের সংস্করণটি সংকলন করুন এবং ওভাররাইট করুন। বিশদ জন্য ডেনিস উত্তর দেখুন।

এটি প্রস্তাবিত নয় কারণ এটি আপনার মদ মেটাটাটার অখণ্ডতা লঙ্ঘন করে। ব্রু মনে করে যে এটিতে 8 বি সংস্করণ রয়েছে তবে, আপনি ম্যানুয়ালি 9 বি কম্পাইল করে ফাইলগুলি ওভাররোট করতে পারেন।

4. পুরাতন সংস্করণটিকে ম্যানুয়ালি সিমিলিং করুন (গুরুত্ব সহকারে?)

না নিজে সিমবলিক লিঙ্ক অবশেষ libjpeg.8.dylib। যদি ফাইলটি থাকে তবে brew switchউপরের দ্বিতীয় সমাধানে উল্লিখিত হিসাবে আপনি এটি করতে পারেন ।

আপনি এখানে এটি করতে পারেন এটি সবচেয়ে খারাপ হ্যাক।


এই জাতীয় সমস্যাগুলি শেষ পর্যন্ত স্থির করা হবে


4
এটি প্রায় ইতিবাচকভাবে গ্রহণযোগ্য উত্তর হওয়া উচিত।
মাইক উত্তরাধিকার

প্রথম পদ্ধতিটি আমার পক্ষে কাজ করেছিল - তবে, xcode-select --installউত্স থেকে পিএইচপি 7.1 পুনরায় ইনস্টল করার আগে আমাকেও চালাতে হয়েছিল।
jrdn

পদ্ধতি 2 আর প্রতিশ্রুতি খুঁজে পায় না, কারণ জোর চাপার কারণে of একটি কার্যনির্বাহী: পরিবর্তে git checkout b231469আমি করেছি curl https://raw.githubusercontent.com/Homebrew/homebrew-core/b23146936a3abb57aabb39017561e7b0c750abbf/Formula/jpeg.rb > Formula/jpeg.rb, তার পরিবর্তে git checkout masterআমি লিখেছি git checkout Formula/jpeg.rb
tuomassalo

@Tomamasalo আপনার কাজের ভাগ করে নেওয়ার জন্য ধন্যবাদ। কমিট এখনও আমার স্থানীয় ক্লোনে বিদ্যমান। এটি যদি জোর করে চাপ দেওয়ার কারণে হয় তবে আপনি এটি ব্যবহার curlকরে এটি আনতে সক্ষম হন না । আমার কাছে মনে হচ্ছে আপনার স্থানীয় ক্লোনটি রিমোট with এর সাথে একরকম আপ টু ডেট নয় 🤔
sepehr

2
যদি git checkout b231469ত্রুটি হয় তবে প্রথমে এটি চেষ্টা করুনgit -C "$(brew --repo homebrew/core)" fetch --unshallow
Yoshi

13

আমি আজ একই ধরণের সমস্যার মুখোমুখি হয়েছি। সমস্যার কারণটি ছিল একটি নতুন সংস্করণ libjpeg। এবং যে সমাধানটি কাজ করেছিল তা হ'ল phpউত্স থেকে বোতল তৈরি করা।

উপলব্ধ সংস্করণ পরীক্ষা করুন libjpeg:

$brew info libjpeg
jpeg: stable 9b (bottled)
Image manipulation library
http://www.ijg.org
/usr/local/Cellar/jpeg/9b (20 files, 724KB) *
  Poured from bottle on 2017-08-07 at 12:06:42
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/jpeg.rb

phpউত্স থেকে ইনস্টল করুন :

brew install --build-from-source php56

আপডেট :
আপনি যদি ইতিমধ্যে ইনস্টল phpকরে থাকেন তবে উত্স থেকে বিল্ডিংয়ের আগে আপনাকে এটি আনইনস্টল করতে হবে। এটি এক্সটেনশনের ক্ষেত্রেও প্রযোজ্য।


ঠিক এখন এখানে - ঠিক কি ঘটেছে? মজাদার আপডেট libjpeg এবং এটি এখন php5.6 এর জন্য সঠিক সংস্করণে নেই?
টবি

BTW। আপনার উত্তর আউটপুট: সতর্কতা: জোসেগনজালেজ / পিএইচপি / পিএইচপি 56 5.6.30_6 ইতিমধ্যে ইনস্টল করা আছে সম্ভবত এটি প্রথমে সরানো উচিত? ভীতিজনক বলে মনে হচ্ছে: পি
টবি

হ্যাঁ, আপনাকে এবং আনুষাঙ্গিকগুলি আনইনস্টল করতে হবে php। তারপর ইনস্টল phpসঙ্গে --build-from-source। আমি libjpegসূত্রের গিট ইতিহাস দেখেছি এবং এর সংস্করণটি 5 ই আগস্টে libjpegআপডেট হয়েছিল 9b
পাউয়ে ওয়াকাসাউজিক

চমৎকার তাই এটি কোনওভাবে এটি ভেঙে দিয়েছে ... ভাল, সংকলন সম্পন্ন হয়েছে। দেখে মনে হচ্ছে এটি এখন আবার কাজ করে - ধন্যবাদ :)
টবি

এটি পিএইচপি 7.1 এর জন্যও কাজ করেছিল, কেবল আনইনস্টল করুন এবং তারপরে চালান brew install --build-from-source php71। দৌড়ানোর পরে আজ রাতে আমার জন্য ইস্যু উঠেছে brew upgrade
ডুইট

6

আমি একই সমস্যা ছিল এবং আমি ডাউনলোড করার libjpeg tarball রূপে থেকে manuallu দ্বারা এটি মীমাংসিত এখানে এবং চলমান:

tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config.sub .
cp /usr/share/libtool/config.guess .
./configure --enable-shared --enable-static
make
sudo make install

sudo ranlib /usr/local/lib/libjpeg.a #Optionally

আমার জন্য একই সমস্যাটি স্থির করা হয়েছে, যদিও সংকলিত সংস্করণটি এখন v8d হওয়া উচিত, এবং সেই লিবটোল ফাইলগুলি আমার সিস্টেমে বিদ্যমান নেই (এখনও কাজ করেছে)।
ক্রিস্টোফ বার্সকা 10

আমার জন্য সমস্যাটিও ঠিক করে ফেলেছে। ধন্যবাদ!
রনি লক্করিনেন

6

আপগ্রেড করার চেষ্টা করার সময় আমি একই ধরণের সমস্যা পেয়েছিলাম composer:

dyld: লাইব্রেরি লোড করা হয়নি: /usr/local/opt/jpeg/lib/libjpeg.8.dylib এর
থেকে রেফারেন্স: / usr / লোকাল / বিন / পিএইচপি
কারণ: চিত্রটি
সুরকার পাওয়া যায় নি : এই সূত্রটির জন্য পিএইচপি ফার সমর্থন প্রয়োজন
ত্রুটি: একটি অসন্তুষ্ট প্রয়োজনীয়তা এই বিল্ডটিকে ব্যর্থ করেছে।

সমস্যাটি আর লাইব্রেরি phpখুঁজে libjpegপেল না। এটির সমাধানের একটি উপায় পুনরায় ইনস্টল করা phpএবং libjpeg। আমি সেগুলি কীভাবে পুনরায় ইনস্টল করেছি তা এখানে:

# find out which version of php is installed
brew list | grep php

# uninstall php
brew uninstall php70 --ignore-dependencies

# uninstall libjpeg
brew uninstall libjpeg --ignore-dependencies

# install libjpeg again
brew install libjpeg

# install php again
brew install php70

আমি তখন আবার সবকিছু আপগ্রেড করতে সক্ষম হয়েছি :)

brew update && brew upgrade

🍻


6

একটি নোংরা সমাধান, যে আমার জন্য ভাল কাজ।

ln -s /usr/local/lib/libjpeg.9.dylib /usr/local/lib/libjpeg.8.dylib

5

নিম্নলিখিত আদেশটি আমার পক্ষে কাজ করেছিল।

brew switch libjpeg 8d

এটি আমার পক্ষে কাজ করেছে। আমি আমার ডিরেক্টরিটি ব্যবহার করে ls /usr/local/Cellar/jpeg/দুটি উপ- ডিরেক্টরি ব্যবহার করে দেখেছি 8dএবং 9c যেহেতু আমার ত্রুটি ছিল dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylibএটি বোধগম্য হয়েছে যে এটি ভুলটি লোড করার চেষ্টা করছে।
ট্রফিজিট

4

আমি জিরসনের উত্তরটি চেষ্টা করিনি, তবে আমার পক্ষে যা কাজ করেছে তা হ'ল:

brew uninstall libjpeg
brew install libjpeg

Libjpeg এর উপর নির্ভরশীল সমস্ত প্যাকেজগুলির সাথে আপনি কী করবেন? ত্রুটি: / ইউএসআর / স্থানীয় / সেলার / জেপিগ / 9 বি আনইনস্টল করতে অস্বীকার করছে কারণ এটি বর্তমানে ইনস্টল থাকা [এসএনআইপি] দ্বারা প্রয়োজনীয়।
রিচার্ড একটি চতুর্থাংশ

1
@ রিচার্ডএক্যাডলিং --ignore-dependenciesআনইনস্টল করার সময় আপনি বিকল্পটি ব্যবহার করতে পারেন ।
sepehr

এটি আমার জন্য সমস্যাটি সমাধান করবে বলে মনে হচ্ছে না। সর্বশেষ জেপিগ সংস্করণটি বর্তমানে জেপিগ -9 বি। libjpeg.8.dylib @ gwg এর নির্দেশ অনুসরণ করার পরেও নিখোঁজ রয়েছে।
জিনো

3

আমার একই সমস্যা ছিল এবং --build-from-sourceপ্যারামিটারটি ব্যবহার করা হ'ল একমাত্র জিনিস :

brew install php70 --build-from-source

2

আমারও এই সমস্যা ছিল আমি এটি এইভাবে সমাধান করেছি: জেপিগ / 8 বি আনইনস্টল করুন:

brew uninstall --ignore-dependencies libjpeg

জেপিগ / 9 বি আনইনস্টল করুন:

brew uninstall --ignore-dependencies jpeg

জেপিগ / 8 বি এবং 9 বি আনইনস্টল করুন

পুনরায় ইনস্টল করুন jpeg / 9b

brew install jpeg

Jpeg / 9b পুনরায় ইনস্টল করুন


কাজ করেছে, হ্যাঁ !!
হুসাম

1

PHP5.4 ব্যবহার করার সময় আমার একই সমস্যাটি হওয়ায় আমি এটি ভাগ করছি। মূলত, আমার PHP5.6 ছিল এবং এটি ভাল কাজ করছিল working তারপরে আমি পিএইচপি 5.4 এ ডাউনগ্রেড হয়েছি কারণ আমার অ্যাপ্লিকেশনটি কেবল পিএইচপি 5.4 সমর্থন করে।

তারপরে এই ত্রুটিটি সামনে এল। আমি লক্ষ্য করেছি যে আমার আছে libjpeg.9.dylibএবং PHP5.4 সন্ধান করছে libjpeg.8.dylib

নিম্নলিখিতটি সমস্যার সমাধান করেছেন:

brew uninstall php54
brew install --build-from-source php54

0

হোমব্রু পিএইচপি আপডেট হয়েছে এবং লিবিজেপিগের সাথে আর সমস্যা নেই


0

@ লিফেকম নোট হিসাবে, এটি হোমব্রাবির পিএইচপি 70 আপডেটের সাথে স্থির করা হয়েছে, তবে brew upgradeপিএইচপি 70 আপগ্রেড করার আগে অন্যান্য প্যাকেজ আপডেট করার চেষ্টা করা থাকলে আপনি এখনও সমস্যার মধ্যে পড়তে পারেন ।

প্রথমে php70 কে ম্যানুয়ালি আপডেট করে এটি ঠিক করুন brew upgrade php70এবং তারপরে আপনি brew upgradeকোনও সমস্যা চালাতে সক্ষম হবেন না (বা, ভাল, কমপক্ষে এই সমস্যাটি ছাড়াই )।



0

কিছু ক্ষেত্রে, বিশেষত ক্যাটালিনায়, প্যাকেজটির জন্য হোমব্রাব্য ক্যাস্ক উপস্থিত থাকতে পারে তবে সঠিকভাবে লিঙ্ক করা যায় না। সেক্ষেত্রে চেষ্টা করুন:

brew link libjpeg
brew reinstall php --build-from-source
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.