dyld:ライブラリがロードされていません:/usr/local/lib/libjpeg.8.dylib-Homebrew php


108

このlibpngの問題が発生したため、PHPが機能しなかったため、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 doctorand の出力は何brew listですか?
IKavanagh

回答:


250

@ jirson-taveraがhomebrew-php repo issueで提案したように、これはbrewのインストールを上書きせずに修正できます。

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
多分クリーンアップのための奇数ラインを追加し、これが受け入れ答えなければなりませんほかに...
公園Betsens

私のためにも働いた。ありがとう。
エイドリアンリンチ

私のためにも働いた。乾杯。
Eduardo Leggiero 2017

19
代わりに正しい方法を検討してください。
sepehr 2017

おかげで動作します。rabbitmqをインストールした後、同じ問題が発生しました
Omar Makled

167

受け入れられた回答の解決策は機能しますが、それは問題を修正する正しい方法ではありません。brewのメタデータの整合性に違反します。

問題

問題は、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手動で再コンパイルしてダウングレードする(非推奨)

ソースを取得し、brewのバージョンをコンパイルして上書きします。詳細については、Denisの回答を参照してください。

抽出メタデータの整合性に違反するため、これはお勧めできません。Brewはそれが8bバージョンであると考えていますが、手動で9bをコンパイルしてファイルを上書きしました。

4.古いバージョンを手動でシンボリックリンクします(真剣に?)

残り物を手動でシンボリックリンクしないくださいlibjpeg.8.dylib。ファイルがそこにある場合は、brew switch上記の2番目の解決策で述べたように、ファイルにアクセスできます。

ここで実行できる最悪のハックです。


このような問題は最終的に修正されます。


4
これは、ほぼ確実に受け入れられる答えになるはずです。
Mike Legacy

最初の方法でうまくxcode-select --installいきましたが、ソースからPHP 7.1を再インストールする前に実行する必要もありました。
jrdn '18年

方法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どちらも使用してフェッチできませんでした。私には、ローカルクローンがリモートwithとはどういうわけか最新ではないようです。
sepehr 2018

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をbrewし、そのphp5.6に適したバージョンではなくなった
トビー

ところで。あなたの答えの出力:警告:josegonzalez / php / php56 5.6.30_6はすでにインストールされているので、おそらく最初に削除する必要がありますか?恐ろしいようです:P
トビー

はい、php拡張機能をアンインストールする必要があります。次に、でインストールphp--build-from-sourceます。libjpeg数式のgit履歴を調べました。バージョンは8月5日libjpegに更新さ9bれました。
パヴェルWacławczyk

いいので、これはどういうわけかそれを壊しました...まあ、コンパイルが行われます。再び動作するようです-ありがとう:)
Toby

これは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になり、それらのlibtoolファイルはシステムに存在しません(まだ機能しています)。
Christoph Burschka 2017

私の問題も修正しました。ありがとう!
Roni Laukkarinen 2017

6

アップグレードしようとすると同様の問題が発生しましたcomposer

dyld:ライブラリがロードされていません:/usr/local/opt/jpeg/lib/libjpeg.8.dylib
参照元:/ usr / local / bin / php
理由:画像が見つかりません
composer:この式にはPHP Pharサポートが必要です
エラー:要件が満たされていないため、このビルドは失敗しました。

ライブラリはライブラリをphp見つけることができませlibjpegんでした。この問題を解決する一つの方法は、再インストールすることですphplibjpeg。ここに私がそれらを再インストールした方法があります:

# 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/し、2つのサブディレクトリを見ました8dし、9c 私の誤りがあったため dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylibそれは間違ったものをロードしようとしていた感知ました。
TrophyGeek

4

私はジャーソンの答えを試さなかったが、私のために働いたのは:

brew uninstall libjpeg
brew install libjpeg

libjpegに依存するすべてのパッケージをどのように処理しますか?エラー:/ usr / local / Cellar / jpeg / 9bは現在インストールされている[SNIP]で必要なため、アンインストールを拒否しています。
Richard A Quadling

1
@RichardAQuadling --ignore-dependenciesアンインストール時にオプションを使用できます。
sepehr 2017

これで問題が解決しなかったようです。最新のjpegバージョンは現在jpeg-9bです。libgeg.8.dylibは、@ gwgの指示に従っても見つからない。
ジノ

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を再インストールします


WORKED、うん!!
Husam

1

PHP5.4を使用するときに同じ問題が発生したため、これを共有します。元々、私はPHP5.6を使用していましたが、問題なく動作していました。アプリはPHP5.4のみをサポートしているため、php5.4にダウングレードしました。

その後、このエラーが発生しました。私がlibjpeg.9.dylibPHP5.4を探していることに気づきましたlibjpeg.8.dylib

次のようにすると、問題が分類されます。

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


0

@lifecomが指摘しているように、これはhomebrewのphp70アップデートで修正されていますが、brew upgradephp70をアップグレードする前に他のパッケージをアップデートしようとすると、問題が発生する可能性があります。

最初にphp70を手動で更新してこれを修正brew upgrade php70するとbrew upgrade、問題なく実行できるはずです(または、少なくともこの問題がなければ)。



0

場合によっては、特にカタリナでは、パッケージのHomebrewキャスクが存在するが、適切にリンクされていない場合があります。その場合は、次のことを試してください。

brew link libjpeg
brew reinstall php --build-from-source
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.