แม้ว่าวิธีแก้ปัญหาในคำตอบที่ยอมรับจะใช้ได้ผล แต่ก็ไม่ใช่วิธีที่ถูกต้องในการแก้ไขปัญหา มันละเมิดความสมบูรณ์ของข้อมูลเมตาของเบียร์
ปัญหา
ปัญหาคือ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. เชื่อมโยงเวอร์ชันเก่าด้วยตนเอง(อย่างจริงจัง?)
อย่าตนเอง symlinklibjpeg.8.dylib
เหลือ หากไฟล์อยู่ที่นั่นคุณสามารถทำได้brew switch
ตามที่กล่าวไว้ในแนวทางที่สองข้างต้น
มันเป็นเพียงการแฮ็กที่แย่ที่สุดที่คุณสามารถทำได้ที่นี่
ปัญหาดังกล่าวจะได้รับในที่สุดได้รับการแก้ไข
brew doctor
และbrew list
คืออะไร?