Obwohl die Lösung in der akzeptierten Antwort funktioniert, ist dies nicht der richtige Weg, um das Problem zu beheben. Es verletzt die Integrität der Metadaten von Brew.
Problem
Das Problem ist, dass die Homebrew- jpeg
Formel auf Version 9 aktualisiert wurde, die vorhandene PHP-Formel in Flaschen jedoch weiterhin mit der vorherigen Version Version 8 erstellt und verknüpft ist, die auf Ihrem System nicht mehr vorhanden ist.
Sie haben einige Möglichkeiten, um das Problem zu beheben.
1. phpxx
Formel aus der Quelle neu kompilieren (sehr zu empfehlen)
Deinstallieren Sie Ihre PHP-Formel und erstellen Sie sie aus der Quelle neu, anstatt die abgefüllte Version zu verwenden. Auf diese Weise wird PHP die aktuell installierte Version von verwenden und mit dieser verknüpfen jpeg
. Angenommen, Sie haben es zu tun mit php71
:
brew reinstall php71 --build-from-source
2. Downgrade der jpeg
Formel auf die richtige Weise (bevorzugt gegenüber dem manuellen Neukompilieren)
Wenn Sie nicht gelaufen sind brew cleanup
, haben Sie bereits die vorherige jpeg
Version im Keller Ihres Gebräus. Wechseln Sie dazu:
brew switch jpeg 8d
Wenn Sie eine jpeg does not have a version "8d" in the Cellar.
Fehlermeldung erhalten, müssen Sie diese zuerst wiederherstellen, indem Sie den Verlauf zurücksetzen:
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
Sie können den Commit-Hash herausfinden, indem Sie brew log jpeg
die Commit-Nachrichten verwenden und durchgehen.
Der Nachteil ist, dass es möglicherweise andere Formeln gibt, für die die neuere Version ordnungsgemäß funktionieren muss, z imagemagick
. Wenn Sie auf solche Inkompatibilitätsprobleme stoßen, überprüfen Sie die erste Lösung oben.
3. Downgrade jpeg
durch manuelles Neukompilieren (nicht empfohlen)
Holen Sie sich die Quelle, kompilieren Sie die Version von Brew und überschreiben Sie sie. Einzelheiten finden Sie in der Antwort von Denis .
Dies wird nicht empfohlen, da dies die Integrität Ihrer Brühmetadaten verletzt. Brew glaubt, dass es die 8b-Version hat, Sie haben jedoch 9b manuell kompiliert und die Dateien überschrieben.
4. Verknüpfen Sie die alte Version manuell (ernsthaft?)
Verknüpfen Sie den Rest nicht manuelllibjpeg.8.dylib
. Wenn die Datei vorhanden ist, können Sie sie einfach brew switch
wie in der zweiten Lösung oben erwähnt aufrufen.
Es ist nur der schlimmste Hack, den Sie hier machen können.
Solche Probleme werden schließlich behoben .
brew doctor
undbrew list
?