dyld: Kitaplık yüklenmedi: /usr/local/lib/libjpeg.8.dylib - homebrew php


108

Bu libpng sorunuyla karşılaştığım için PHP benim için çalışmıyordu , bu yüzden Homebrew ile yeni bir sürümü yeniden yükledim.

Ancak, libjpegbu sefer benzer bir hata alıyorum :

$ 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

Baska öneri?


Çıktısı nedir brew doctorve brew list?
IKavanagh

Yanıtlar:


250

Homebrew-php repo sorununda @ jirson-tavera tarafından önerildiği gibi , bu, brew kurulumunuzu geçersiz kılmadan düzeltilebilir:

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
Temizleme için garip bir satır eklemenin yanı sıra, bu kabul edilen cevap olmalı ...
Koen Betsens

Benim için de çalıştı. Teşekkürler.
Adrian Lynch

Benim için de çalıştı. Şerefe.
Eduardo Leggiero

19
Bunun yerine doğru şekilde yapmayı düşünün .
sepehr

teşekkürler çalışır, rabbitmq yüklendikten sonra aynı sorunu yaşıyorum
Omar Makled

167

Kabul edilen cevaptaki çözüm işe yarasa da sorunu çözmenin doğru yolu bu değildir. Brew'ün meta veri bütünlüğünü ihlal ediyor.

Sorun

Sorun, Homebrew'in jpegformülünün v9'a yükseltilmiş olması, ancak mevcut "şişelenmiş" PHP formülünün hala oluşturulup sisteminizde artık bulunmayan önceki sürüm olan v8 ile bağlantılı olmasıdır.

Sorunu çözmek için birkaç seçeneğiniz var.

1. phpxxFormülü kaynaktan yeniden derleyin (kesinlikle önerilir)

Php formülünüzü kaldırın ve şişelenmiş sürümü kullanmak yerine kaynaktan yeniden oluşturun. Bu şekilde, php şu anda kurulu olan sürümünü kullanacak ve ona bağlanacaktır jpeg. Başa çıktığınızı varsayarsak php71:

brew reinstall php71 --build-from-source

2. jpegFormülü doğru şekilde düşürün (manuel olarak yeniden derlemek yerine tercih edilir)

Eğer çalıştırmadıysanız brew cleanup, zaten önceki got jpegkendisine senin demlemek mahzeninde sürümü anahtarı:

brew switch jpeg 8d

Bir jpeg does not have a version "8d" in the Cellar.hata alırsanız, önce geçmişi geri alarak onu geri yüklemeniz gerekir:

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 jpegCommit mesajlarını kullanarak ve bunlardan geçerek commit hashini öğrenebilirsiniz .

Olumsuz yanı, daha yeni sürümün düzgün çalışmasını gerektiren başka formüllerin olabilmesidir, örn imagemagick. Bu tür uyumsuzluk sorunlarıyla karşılaşırsanız, yukarıdaki ilk çözüme bakın.

3. jpegManuel olarak yeniden derleyerek eski sürüme geçin (önerilmez)

Kaynağı getirin, derleyin ve brew versiyonunun üzerine yazın. Ayrıntılar için Denis'in cevabına bakın.

Demleme meta verilerinizin bütünlüğünü ihlal ettiği için bu önerilmez. Brew, 8b sürümüne sahip olduğunu düşünüyor, ancak siz 9b'yi manuel olarak derlediniz ve dosyaların üzerine yazdınız.

4. Eski sürümü manuel olarak sembolik bağla (ciddi mi?)

Yapmayın elle sembolik bir link tamamını kullanmadığı libjpeg.8.dylib. Dosya oradaysa, brew switchyukarıdaki ikinci çözümde belirtildiği gibi yapabilirsiniz.

Burada yapabileceğiniz en kötü hack.


Bu tür sorunlar sonunda çözülecektir .


4
Bu, neredeyse olumlu olarak kabul edilen cevap olmalıdır.
Mike Legacy

İlk yöntem benim için çalıştı - ancak, xcode-select --installPHP 7.1'i kaynaktan yeniden yükleyebilmem için önce çalıştırmam gerekiyordu .
jrdn

Yöntem 2 artık commit'i bulamıyor, belki de zorlama nedeniyle. Bir çözüm: git checkout b231469yaptım curl https://raw.githubusercontent.com/Homebrew/homebrew-core/b23146936a3abb57aabb39017561e7b0c750abbf/Formula/jpeg.rb > Formula/jpeg.rbyerine, sonra git checkout masteryazdım git checkout Formula/jpeg.rb.
tuomassalo

@tuomassalo Çözümünüzü paylaştığınız için teşekkürler. İşleme yerel klonumda hala var. Zorunlu bir itmeden kaynaklanıyorsa, curlikisini de kullanarak getiremezsiniz . Bana göre, yerel klonunuz uzaktan kumanda ile bir şekilde güncel değil gibi görünüyor 🤔.
sepehr

2
eğer git checkout b231469hata alır, sonra bu ilk deneyingit -C "$(brew --repo homebrew/core)" fetch --unshallow
Yoshi

13

Bugün benzer bir sorunla karşılaştım. Sorunun nedeni daha yeni bir sürümüydü libjpeg. Ve işe yarayan çözüm php, kaynaktan bir şişe oluşturmaktı .

Kullanılabilir sürümünü kontrol edin 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

phpKaynaktan yükleyin :

brew install --build-from-source php56

Güncelleme :
Zaten yüklediyseniz php, kaynaktan derlemeden önce onu kaldırmanız gerekir. Ayrıca uzantılar için de geçerlidir.


şimdi burada aynı - tam olarak ne oldu? brew libjpeg'i güncelledi ve şimdi php5.6 için doğru sürümde değil mi?
Toby

Btw. cevabınız çıktılar: Uyarı: josegonzalez / php / php56 5.6.30_6 zaten kurulu, muhtemelen önce onu kaldırmalı mısınız? korkutucu görünüyor: P
Toby

Evet, phpuzantıları kaldırmanız gerekiyor . Sonra yüklemek phpile --build-from-source. libjpegFormülün git geçmişine baktım ve sürümü 5 Ağustos'ta libjpeggüncellendi 9b.
Paweł Wacławczyk

güzel yani bu bir şekilde bozdu ... iyi, derleme yapıldı. şimdi tekrar çalışıyor gibi görünüyor - teşekkürler :)
Toby

Bu PHP 7.1 için de çalıştı, sadece kaldırın ve sonra çalıştırın brew install --build-from-source php71. Bu gece kaçtıktan sonra sorun benim için ortaya çıktı brew upgrade.
Dwight

6

Ben de aynı sorunu yaşadım ve libjpeg tarball manuallu'yu buradan indirip çalıştırarak çözdüm :

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

Benim için aynı sorunu çözdü, ancak derlenen sürüm şimdi v8d olmalı ve bu libtool dosyaları sistemimde mevcut değil (hala çalışıyor).
Christoph Burschka

Benim için de sorunu çözdüm. Teşekkürler!
Roni Laukkarinen

6

Yükseltmeye çalışırken benzer bir sorunla karşılaşıyordum composer:

dyld: Kitaplık yüklenmedi: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
Başvurulan kaynak: / usr / local / bin / php
Nedeni: görüntü bulunamadı
besteci: Bu formül için PHP Phar desteği gerekli
Hata: Tatmin edilmeyen bir gereksinim bu derlemede başarısız oldu.

Sorun artık kitaplık phpbulunamıyordu libjpeg. Bunu düzeltmenin bir yolu yeniden yüklemek phpve libjpeg. İşte onları nasıl yeniden yükledim:

# 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

Daha sonra her şeyi tekrar yükseltebildim :)

brew update && brew upgrade

🍻


6

Benim için iyi çalışan kirli bir çözüm.

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

5

Aşağıdaki komut benim için çalıştı.

brew switch libjpeg 8d

Bu benim için çalıştı. Ben kullanarak benim dizinde baktım ls /usr/local/Cellar/jpeg/ve iki alt dizinleri gördü 8dve 9c benim hata olduğu için dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylibbu yanlış bir yüklemeye çalışıyordu mantıklı geldi.
TrophyGeek

4

Jirson'ın cevabını denemedim, ama benim için işe yarayan şuydu:

brew uninstall libjpeg
brew install libjpeg

Libjpeg'e bağlı tüm paketlerle ne yaparsınız? Hata: / usr / local / Cellar / jpeg / 9b'nin kaldırılması reddediliyor çünkü şu anda kurulu olan [SNIP] için gerekli.
Richard A Quadling

1
@RichardAQuadling Kaldırırken bu --ignore-dependenciesseçeneği kullanabilirsiniz .
sepehr

Bu benim için sorunu çözmedi. En son jpeg sürümü şu anda jpeg-9b'dir. @ gwg'nin talimatlarını izledikten sonra libjpeg.8.dylib hala eksik.
Gino

3

Aynı sorunu yaşıyordum ve yardımcı olan tek şey --build-from-sourceparametreyi kullanmaktı :

brew install php70 --build-from-source

2

Benim de bu problemim vardı. Bunu şu şekilde çözdüm: jpeg / 8b'yi kaldırın:

brew uninstall --ignore-dependencies libjpeg

Jpeg / 9b'yi kaldırın:

brew uninstall --ignore-dependencies jpeg

Jpeg / 8b ve 9b'yi kaldırın

Jpeg / 9b'yi yeniden yükleyin

brew install jpeg

Jpeg / 9b'yi yeniden yükleyin


ÇALIŞTI, Evet !!
Husam

1

Bunu PHP5.4 kullanırken aynı sorunu yaşadığım için paylaşıyorum. Başlangıçta PHP5.6 vardı ve iyi çalışıyordu. Daha sonra uygulamam sadece PHP5.4'ü desteklediğinden php5.4'e düşürdüm.

Sonra bu hata ortaya çıktı. Sahip olduğumu libjpeg.9.dylibve PHP5.4'ün aradığını fark ettim libjpeg.8.dylib.

Aşağıdakileri yapmak sorunu sıraladı:

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

0

Homebrew php güncellendi ve artık libjpeg ile ilgili bir sorun değil


0

@Lifecom'un belirttiği gibi, bu homebrew'in php70 güncellemesiyle düzeltildi, ancak yine de sorunla karşılaşabilirsiniz. brew upgrade php70'i yükseltmeden önce diğer paketleri güncellemeye çalışıyorsanız karşılaşabilirsiniz.

Önce php70'i ile manuel olarak güncelleyerek bunu düzeltin brew upgrade php70ve daha sonra brew upgradehiçbir sorun (ya da en azından bu sorun olmadan ) çalıştırabilirsiniz.



0

Bazı durumlarda, özellikle Catalina'da, paket için Homebrew fıçısı mevcut olabilir ancak uygun şekilde bağlanmamış olabilir. Bu durumda şunu deneyin:

brew link libjpeg
brew reinstall php --build-from-source
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.