มีวิธีที่รวดเร็วในการเชื่อมโยงถัง homebrew ของฉันได้อย่างไร


61

ฉันเพิ่งอัพเกรด MacBook Air เป็น Mavericks กระบวนการนี้ดูเหมือนจะได้ลบออกเกือบทั้งหมดของ symlinks ที่ใส่ในhomebrew /usr/local/binเมื่อฉันสังเกตเห็นสิ่งต่าง ๆ ที่ขาดหายไปจากนั้นฉันเชื่อมโยงอีกครั้งผ่านทางbrew unlink <keg> && brew link <keg>(แม้ว่าการเชื่อมโยงจะหายไป แต่homebrewยังคงคิดว่าพวกเขาอยู่ที่นั่นดังนั้นฉันต้องunlinkก่อน) สิ่งนี้รู้สึกไม่มีประสิทธิภาพพอสมควร

ฉันสามารถวนรอบทุกสิ่งทุกอย่าง/usr/local/Cellarได้ แต่ไม่ใช่ทุกถังจะถูกเชื่อมโยงโดยอัตโนมัติและฉันไม่ต้องการเชื่อมโยงเหล่านั้น ดังนั้นฉันเดาต่อไปคือรายการถังที่เชื่อมโยงและเชื่อมโยงพวกเขาอีกครั้ง (ใช้ด้านบน)

มีคำสั่งเวทมนต์ที่จะค้นหาถังทั้งหมดที่homebrew คิดว่ามีการเชื่อมโยงเพื่อให้ฉันสามารถเชื่อมโยงพวกเขาอีกครั้ง?


ฉันใช้ Migration Assistant เพื่อย้าย "ทุกอย่าง" จาก Mac เครื่องเก่าไปยังเครื่องใหม่และฉันก็สูญเสีย symbian homebrew ของฉันไปด้วย น่ารำคาญ
Grav

คำตอบ:


39

/usr/local/Library/LinkedKegs ดูเหมือนว่าจะมีรายการของดีถังที่เชื่อมโยงดังนั้นสิ่งนี้ควรทำเคล็ดลับ:

ls -1 /usr/local/Library/LinkedKegs | while read line; do
    echo $line
    brew unlink $line
    brew link --force $line
done

ฉันขอแนะนำให้แน่ใจว่าคุณมีสิทธิ์ในการเขียน/usr/local/libอีกครั้งก่อนลอง


ค่อนข้างแน่ใจว่านี่เป็นเพียงการคืนค่า homebrew ของฉันให้ทำงานได้ ขอบคุณ!
Robert Massaioli

น่าอัศจรรย์ขอบคุณ :) เพียงแค่ทำส่วนสำคัญออกมาถ้าคุณไม่รังเกียจฉันค่อนข้างแน่ใจว่าเราไม่ใช่คนเดียวที่ประสบปัญหานี้ .. goo.gl/YTPMjh
Stone Alessandro

1
ไม่ทำ--force! brew linkควรเพียงพอและถังบางตัวไม่ควรเชื่อมโยง (เพราะอาจขัดแย้งกับไลบรารีระบบ) ในขณะที่--forceจะบังคับให้เชื่อมโยง
Chris Jefferson

ฮะ. /usr/local/Libraryดูเหมือนว่าฉันยังลบ
Kyle Strand

59

คำสั่ง bash นี้ (นำมาจากที่นั่น ) จะยกเลิกการเชื่อมโยงสูตรที่ติดตั้งทั้งหมดแล้วเชื่อมโยงอีกครั้ง:

brew list -1 | while read line; do brew unlink $line; brew link $line; done

ฉันเดาว่าสูตรทั้งหมดจะต้องมีการเชื่อมโยงไม่เช่นนั้นแล้วแต่ว่าเครื่องมือใดขึ้นอยู่กับพวกมันจะไม่สามารถหาได้ ..


ฉันไม่แน่ใจว่าจะต้องเชื่อมโยงสูตรทั้งหมด บางตัวเป็นแบบถังเท่านั้นแต่ฉันไม่รู้ว่าเนื่องจากบางตัวถูกติดตั้งเป็นการพึ่งพาของผู้อื่น
Loop Space

4
ดูเหมือนว่าคุณเพิ่งได้รับคำเตือนบางอย่างเช่น "คำเตือน: พิเศษคือถังเท่านั้นและจะต้องเชื่อมโยงกับ
Grav

2
นี่เป็นรุ่นที่เทียบเท่ากันโดยใช้ xargs:brew list -1 | xargs -I formula sh -c "brew unlink formula && brew link formula"
paulmelnikow

ดีที่จะใช้ ฉันใช้ 10.12.6 mac os
Raju yourPepe

8

นอกเหนือจากคำตอบอื่น ๆ สำหรับคำถามนี้คุณอาจต้องเชื่อมโยงสูตรอีกครั้งด้วยการติดตั้งหลายเวอร์ชัน ( brew linkจะไม่ทำสิ่งนี้ให้คุณ)

ก่อนอื่นให้เชื่อมโยงสูตรทั้งหมดที่คุณสามารถทำได้:

brew list -1 | while read line; do brew unlink $line; brew link --force $line; done

จากนั้นเรียกใช้brew doctorซึ่งควรจะบ่นและให้รายการสองรายการแก่คุณ:

  • ยกเลิกการเชื่อมโยงสูตรกับหลายรุ่น
  • สูตรเฉพาะถังที่มีการเชื่อมโยงอย่างไม่ถูกต้องโดยกระบวนการเชื่อมโยงเดิม

สำหรับแต่ละสูตรที่มีหลายรุ่นให้รันดังนี้แทนที่ "python" ด้วยชื่อสูตร:

brew info python  

ข้อมูลนี้จะแสดงเวอร์ชั่นที่ติดตั้งทั้งหมดของคุณ เลือกเวอร์ชันที่คุณต้องการเชื่อมโยง (สำหรับฉันรุ่น 2.7.6) และใช้brew switch

brew switch python 2.7.6

นอกจากนี้คุณยังจะต้องการเรียกใช้brew unlinkในรายการ (ถ้ามี) ของสูตรเฉพาะถังที่มีการเชื่อมโยง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.