dyld: Library not loaded: /usr/local/lib/libjpeg.8.dylib - homebrew php

  • 19
    Like
  • 2
    Comment

dyld: Library not loaded: /usr/local/lib/libjpeg.8.dylib - homebrew php

最近ずっと仮想環境での作業なので、homebrewのphpとか久し振りに触るとぶっ壊れてることおおいですね。

brew updateとbrew upgradeやってたら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

こちらを参考に、解決しました。
homebrewで過去のバージョンインストールする方法

libjpegのバージョン違いだったので、v8のjpegのライブラリがはいってるコミットを探します。

Formulaが置いてあるディレクトリで

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/

ログ検索

brew log jpeg

最新のだと、これくらいしかログが出ないので、

Warning: homebrew/core is a shallow clone so only partial output will be shown.
To get a full clone run:
  git -C "$(brew --repo homebrew/core)" fetch --unshallow
commit 2cfb629ee82e4e3bced64d14669192b281b14055
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Mon Aug 7 06:33:22 2017 +0000

    jpeg: update 9b bottle.

commit 1fee4a326dd7144e192027705fa82d86e4676837
Author: ilovezfs <ilovezfs@icloud.com>
Date:   Sat Aug 5 11:44:29 2017 -0700

    jpeg 9b

commit b23146936a3abb57aabb39017561e7b0c750abbf
Author: FX Coudert <fxcoudert@gmail.com>
Date:   Sun Mar 12 09:15:30 2017 +0100

    jpeg: drop universal

commit 8a07d55e33686dda515024cc69fe5c862ff30ad0
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Fri Dec 2 12:16:30 2016 +0000

    libical-glib: update 1.0.4_1 bottle.

古いのもfetchします。

git -C "$(brew --repo homebrew/core)" fetch --unshallow

そしてもう一回、logをみると

brew log jpeg

対象のログが見つかりました。

commit 7f16e5aa9451ea391cbb7822a59d2bf702c5b834
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Tue Sep 6 14:22:41 2016 +0100

    jpeg: update 8d bottle.

これをチェックアウトして、

git checkout 7f16e5aa9451ea391cbb7822a59d2bf702c5b834 jpeg.rb

jpegをインストール

brew install jpeg

すると、うごきました。

php -v
PHP 7.1.7 (cli) (built: Jul 19 2017 15:58:29) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

忘れそうなので、masterに一応戻しときましょう。

git checkout master