Несмотря на то, что решение в принятом ответе работает, это неправильный способ решить проблему. Это нарушает целостность метаданных пива.
проблема
Проблема в том, что jpegформула Homebrew была обновлена до 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. Обратитесь к ответу Дениса для деталей.
Это не рекомендуется, поскольку это нарушает целостность метаданных вашего пива. Брю считает, что у него версия 8b, однако вы вручную скомпилировали 9b и перезаписали файлы.
4. Вручную сделать символическую ссылку на старую версию (серьезно?)
Не создавайте вручную символических ссылок на оставшееся libjpeg.8.dylib. Если файл есть, вы можете просто brew switchк нему, как указано во втором решении выше.
Это просто худший взлом, который вы можете здесь сделать.
Такие проблемы со временем будут исправлены .
brew doctorиbrew list?