수락 된 답변의 솔루션이 작동하더라도 문제를 해결하는 올바른 방법은 아닙니다. 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
위의 두 번째 솔루션에서 언급 한대로 파일로 이동할 수 있습니다 .
여기서 할 수있는 최악의 해킹입니다.
이러한 문제는 결국 수정 될 것 입니다.
brew doctor
과brew list
?