डाइल्ड: लाइब्रेरी लोड नहीं: /usr/local/lib/libjpeg.8.dylib - homebrewpp


108

PHP मेरे लिए काम नहीं कर रहा था क्योंकि मैं इस libpng मुद्दे का सामना कर रहा था , इसलिए मैंने Homebrew के साथ एक नया संस्करण पुनः इंस्टॉल किया।

हालाँकि, मुझे 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

जैसा कि homebrew-php रेपो मुद्दे में @ jirson-tavera द्वारा प्रस्तावित किया गया है , यह आपके काढ़ा की स्थापना को खत्म किए बिना तय किया जा सकता है:

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
शायद सफाई के लिए एक विषम रेखा जोड़ने के अलावा, यह स्वीकृत उत्तर होना चाहिए ...
Koen Betsens

मेरे लिए भी काम किया। धन्यवाद।
एड्रियन लिंच

मेरे लिए भी काम किया। चीयर्स।
एडुआर्डो लेगिएरियो

19
इसके बजाय इसे सही तरीके से करने पर विचार करें ।
सेफर

धन्यवाद काम करता है, मैं स्थापित खरगोश के बाद एक ही मुद्दा मिला
उमर Makled

167

भले ही स्वीकृत उत्तर में समाधान काम करता है, यह समस्या को ठीक करने का सही तरीका नहीं है। यह काढ़ा की मेटाडेटा अखंडता का उल्लंघन करता है।

संकट

मुद्दा यह है कि Homebrew के jpegफॉर्मूले को v9 में अपग्रेड किया गया है लेकिन मौजूदा "बोतलबंद" PHP फॉर्मूला अभी भी बना हुआ है और पिछले वर्जन v8 से जुड़ा हुआ है, जो अब आपके सिस्टम पर मौजूद नहीं है।

समस्या को ठीक करने के लिए आपके पास कुछ विकल्प हैं।

1. phpxxस्रोत से पुनरावर्ती सूत्र (अत्यधिक अनुशंसित)

अपने php सूत्र को अनइंस्टॉल करें, और बोतलबंद संस्करण का उपयोग करने के बजाय इसे स्रोत से पुनर्निर्माण करें। इस तरह, php वर्तमान में स्थापित संस्करण के विरुद्ध उपयोग और लिंक करेगा jpeg। यह मानते हुए कि आप के साथ काम कर रहे हैं php71:

brew reinstall php71 --build-from-source

2. डाउनग्रेड 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। यदि आप इस तरह की असंगति के मुद्दों का सामना करते हैं, तो पहले समाधान की जांच करें।

3. jpegमैन्युअल रूप से recompiling द्वारा डाउनग्रेड (अनुशंसित नहीं)

स्रोत प्राप्त करें, संकलित करें और काढ़ा के संस्करण को अधिलेखित करें। विवरण के लिए डेनिस के उत्तर का संदर्भ लें ।

यह अनुशंसित नहीं है क्योंकि यह आपके काढ़ा मेटाडेटा की अखंडता का उल्लंघन करता है। ब्रू सोचता है कि इसका 8 बी संस्करण है, हालांकि, आपने मैन्युअल रूप से 9 बी संकलित किया है और फाइलों को ओवरवोट किया है।

4. पुराने संस्करण को गंभीरता से सहानुभूति देना (गंभीरता से?)

मैन्युअल रूप से बाईं ओर सहानुभूति न रखें libjpeg.8.dylib। यदि फ़ाइल है, तो आप brew switchइसे ऊपर दिए गए दूसरे समाधान में बता सकते हैं।

यह सिर्फ सबसे खराब हैक है जिसे आप यहां कर सकते हैं।


इस तरह के मुद्दे आखिरकार तय किए जाएंगे ।


4
यह लगभग सकारात्मक रूप से स्वीकृत उत्तर होना चाहिए।
माइक लीगेसी

पहली विधि ने मेरे लिए काम किया - हालांकि, मुझे xcode-select --installस्रोत से PHP 7.1 को पुनर्स्थापित करने से पहले मुझे भी चलाना था ।
jrdn

विधि 2 में अब कमिटमेंट नहीं है, हो सकता है कि बल की वजह से धक्का लगे। वर्कअराउंड: बजाय 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

@tuomassalo अपना वर्कअराउंड साझा करने के लिए धन्यवाद। मेरे स्थानीय क्लोन में अभी भी कमिट मौजूद है। यदि यह एक मजबूर धक्का के कारण था, तो आप इसे curlया तो उपयोग करने में सक्षम नहीं थे । मेरे लिए, ऐसा लगता है कि आपका स्थानीय क्लोन किसी भी तरह दूरस्थ like के साथ अद्यतित नहीं है।
sepehr

2
अगर git checkout b231469त्रुटि मिलती है, तो पहले यह प्रयास करेंgit -C "$(brew --repo homebrew/core)" fetch --unshallow
योशी

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। आपका उत्तर आउटपुट: चेतावनी: josegonzalez / php / php56 5.6.30_6 पहले से ही स्थापित है शायद इसे पहले हटा दें? डरावना लगता है: P
Toby

हां, आपको अनइंस्टॉल phpऔर एक्सटेंशन करना होगा। फिर के phpसाथ स्थापित करें --build-from-source। मैंने libjpegसूत्र के git इतिहास पर ध्यान दिया है और 5 अगस्त libjpegको अपडेट का संस्करण अपडेट किया गया था 9b
पवेल वेक्लावस्की

अच्छा तो यह किसी भी तरह इसे तोड़ दिया ... अच्छा, संकलन किया जाता है। ऐसा लगता है कि यह अब फिर से काम करता है - धन्यवाद :)
टॉबी

यह PHP 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 होना चाहिए, और वे लिबेटूल फाइलें मेरे सिस्टम पर मौजूद नहीं हैं (अभी भी काम किया है)।
क्रिस्टोफ़ बुर्शका

मेरे लिए भी समस्या का समाधान किया। धन्यवाद!
रोनी लउक्करिनें en ’१।

6

मुझे अपग्रेड करने की कोशिश में एक समान समस्या हो रही थी composer:

dyld: पुस्तकालय लोड नहीं: /usr/local/opt/jpeg/lib/libjpeg.8.dylib से
संदर्भित: / usr / स्थानीय / बिन / php
कारण: छवि नहीं मिली
संगीतकार: इस सूत्र के लिए PHP समर्थन की आवश्यकता है
त्रुटि: एक असंतुष्ट आवश्यकता इस निर्माण में विफल रही।

समस्या अब लाइब्रेरी 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 पर निर्भर हैं? त्रुटि: अनइंस्टॉल / usr / लोकल / सेलर / jpeg / 9b से इंकार करना क्योंकि यह [SNIP] द्वारा आवश्यक है, जो वर्तमान में स्थापित हैं।
रिचर्ड ए क्वाडलिंग

1
@RichardAQuadling आप --ignore-dependenciesअनइंस्टॉल करते समय विकल्प का उपयोग कर सकते हैं ।
sepehr

यह मेरे लिए समस्या को हल करने के लिए प्रतीत नहीं हुआ। नवीनतम jpeg संस्करण वर्तमान में jpeg-9b है। @ gwg के निर्देशों का पालन करने के बाद भी libjpeg.8.dylib गायब है।
गीनो

3

मुझे एक ही समस्या थी और एक ही चीज़ जो --build-from-sourceपैरामीटर का उपयोग करने में मदद करती थी :

brew install php70 --build-from-source

2

मुझे भी यह समस्या थी। मैंने इसे इस तरह से हल किया: jpeg / 8b को अनइंस्टॉल करें:

brew uninstall --ignore-dependencies libjpeg

Jpeg / 9b को अनइंस्टॉल करें:

brew uninstall --ignore-dependencies jpeg

Jpeg / 8b और 9b को अनइंस्टॉल करें

पुनः jpeg / 9b स्थापित करें

brew install jpeg

Jpeg / 9b को फिर से स्थापित करें


काम किया, हाँ !!
हुसाम

1

मैं इसे साझा कर रहा हूं क्योंकि PHP5.4 का उपयोग करते समय मेरे पास एक ही मुद्दा था। मूल रूप से, मेरे पास PHP5.6 था और यह ठीक काम कर रहा था। तब मैंने php5.4 को डाउनग्रेड किया क्योंकि मेरा ऐप केवल PHP5.4 का समर्थन करता है।

फिर यह त्रुटि सामने आई। मैंने देखा कि मेरे पास है libjpeg.9.dylibऔर PHP5.4 की तलाश है libjpeg.8.dylib

निम्नलिखित समस्या को हल करते हुए:

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

0

Homebrew php अपडेट किया गया है और अब libjpeg के साथ कोई समस्या नहीं है


0

@Lifecom नोट्स के रूप में, यह होमब्रेव के php70 अपडेट के साथ तय किया गया है, लेकिन अगर brew upgradeआप php70 को अपग्रेड करने से पहले अन्य पैकेज को अपडेट करने का प्रयास कर रहे हैं, तो आप अभी भी इस समस्या में भाग सकते हैं ।

पहले से php70 को मैन्युअल रूप से अपडेट करके इसे ठीक करें brew upgrade php70और फिर आपको brew upgradeकोई समस्या (या, कम से कम इस समस्या के बिना ) चलाने में सक्षम होना चाहिए ।



0

कुछ मामलों में, विशेष रूप से कैटलिना में, पैकेज के लिए होमब्रेव पीपा मौजूद हो सकता है लेकिन ठीक से लिंक नहीं किया जाना चाहिए। उस मामले में प्रयास करें:

brew link libjpeg
brew reinstall php --build-from-source
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.