Несмотря на то, что решение в принятом ответе работает, это неправильный способ решить проблему. Это нарушает целостность метаданных пива.
проблема
Проблема в том, что 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
?