受け入れられた回答の解決策は機能しますが、それは問題を修正する正しい方法ではありません。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番目の解決策で述べたように、ファイルにアクセスできます。
ここで実行できる最悪のハックです。
このような問題は最終的に修正されます。
brew doctor
and の出力は何brew list
ですか?