วิธีล้างแคชและเวอร์ชันเก่าของ Homebrew บน Mac
ทีม AskClean · อัปเดตเมื่อ 2026-08-05
ใช้ brew --cache หาตำแหน่งแคชไฟล์ดาวน์โหลด แล้วรัน brew cleanup -n เพื่อดูรายการก่อนเปลี่ยนแปลง brew cleanup แบบปกติลบไฟล์ล็อกค้าง ไฟล์ดาวน์โหลดเก่า และ formula เวอร์ชันเก่า ส่วน brew cleanup --prune=all ลบไฟล์แคชโดยไม่จำกัดอายุ ปัจจุบัน cleanup ยังอาจถอน formula ที่เป็น dependency และไม่ใช้แล้วโดยอัตโนมัติ เว้นแต่ตั้ง HOMEBREW_NO_AUTOREMOVE จึงต้องตรวจทั้งต้นทุนการดาวน์โหลดใหม่ การเสียความสามารถในการย้อนกลับไปใช้เวอร์ชันเก่า และการถอน dependency ก่อนดำเนินการ

แยกแคชไฟล์ดาวน์โหลดออกจากเครื่องมือที่ติดตั้งแล้ว
แคชไฟล์ดาวน์โหลดมักอยู่ที่ ~/Library/Caches/Homebrew แต่ HOMEBREW_CACHE เปลี่ยนตำแหน่งได้ จึงต้องยึดผลจาก brew --cache ส่วน formula แต่ละเวอร์ชันอยู่ใน Cellar, cask อยู่ใน Caskroom และเวอร์ชันที่ใช้งานอยู่มักเข้าถึงผ่านลิงก์ใต้ Homebrew prefix ให้ใช้ brew --cellar, brew --caskroom และ brew --prefix ตรวจตำแหน่งจริง พาธเหล่านี้ รวมถึง Brewfile, ไฟล์ตั้งค่า shell, เซอร์วิส, ฐานข้อมูล, ใบรับรอง และไฟล์โปรเจกต์ ไม่ใช่แคชที่ลบแบบเหมารวมได้
เริ่มด้วยการตรวจแบบไม่เปลี่ยนแปลงข้อมูล
รัน du -sh "$(brew --cache)" เพื่อวัดแคชจริง แล้วรัน brew cleanup -n ดูตัวอย่างไฟล์ล็อกค้าง ไฟล์ดาวน์โหลดเก่า formula เวอร์ชันเก่า และ dependency ที่อาจถูกถอนอัตโนมัติ หากพบเครื่องมือที่รู้จัก ให้ใช้ brew list --versions ตรวจว่าเวอร์ชันใดใช้งานอยู่ ถ้าจะล้างไฟล์แคชทุกอายุ ให้ดูตัวอย่างด้วย brew cleanup -n --prune=all ก่อนเสมอ การดูตัวอย่างไม่ใช่ข้อมูลสำรอง และการเสีย keg เวอร์ชันเก่าอาจกู้กลับได้ยากกว่าการดาวน์โหลด bottle ใหม่
- รัน brew --cache แล้วใช้ du -sh "$(brew --cache)" จดขนาดแคชดาวน์โหลดที่ใช้งานจริง
- รัน brew cleanup -n แล้วตรวจไฟล์ล็อกค้าง ไฟล์ดาวน์โหลดเก่า formula เวอร์ชันเก่า และ dependency ที่อาจถูกถอน พร้อมใช้ brew list --versions ตรวจเครื่องมือสำคัญ
- หากยังไม่ยอมรับการถอน dependency อัตโนมัติ ให้ตั้ง HOMEBREW_NO_AUTOREMOVE สำหรับคำสั่ง cleanup และตรวจผู้สมัครแยกด้วย brew autoremove --dry-run
- เลือก brew cleanup แบบปกติตามผลตรวจ หรือใช้ brew cleanup --prune=all หลังดูตัวอย่างด้วย brew cleanup -n --prune=all และยอมรับต้นทุนการดาวน์โหลดใหม่แล้ว
- วัดแคชอีกครั้ง รัน brew cleanup -n และ brew list --versions ซ้ำ แล้วเปิดเครื่องมือ Homebrew สำคัญที่งานปัจจุบันต้องใช้
dry run เป็นเพียงภาพตัวอย่าง ไม่ใช่ข้อมูลสำรอง ทั้ง keg เวอร์ชันเก่าและไฟล์ดาวน์โหลดที่ Homebrew ลบมักไม่เข้าถังขยะของ macOS และไม่มีหลักประกันว่า upstream จะยังเก็บเวอร์ชันเดิมไว้ให้กู้คืน
เลือกคำสั่ง cleanup ที่มีขอบเขตแคบที่สุด
หลังตรวจตัวอย่างแล้ว ใช้ brew cleanup สำหรับการบำรุงรักษาปกติ โดยค่าเริ่มต้นปัจจุบันพิจารณาไฟล์ดาวน์โหลดที่เก่ากว่า 120 วันและอาจลบ formula เวอร์ชันเก่า ส่วน brew cleanup --prune=all ลบไฟล์แคชโดยไม่จำกัดอายุ ทำให้การติดตั้งใหม่ครั้งถัดไปต้องดาวน์โหลดไฟล์เหล่านั้นอีก หากขอบเขตทั้งระบบกว้างเกินไป ให้รัน brew cleanup -n <name> ก่อน แล้วค่อยใช้ brew cleanup <name> เมื่อรายการตรงกับเจตนา โดยแทน <name> ด้วยชื่อ formula หรือ cask จริง ห้ามพิมพ์วงเล็บมุมตามตัวอย่าง
แยก cleanup ออกจากการถอน dependency ด้วย autoremove
brew autoremove ไม่ใช่การล้างแคช แต่เป็นการถอน formula ที่ Homebrew มองว่าเคยติดตั้งเป็น dependency และไม่จำเป็นแล้ว นอกจากนี้ brew cleanup และ brew uninstall อาจเรียก autoremove อัตโนมัติ หากต้องการแยกการตัดสินใจ ให้ตั้ง HOMEBREW_NO_AUTOREMOVE สำหรับคำสั่ง cleanup เช่น HOMEBREW_NO_AUTOREMOVE=1 brew cleanup แล้วตรวจรายการถอนด้วย brew autoremove --dry-run ต่างหาก สคริปต์ในเครื่องอาจเรียกใช้ formula โดยไม่ได้อยู่ในกราฟ dependency ของ Homebrew หลังล้างให้วัดแคช รัน brew cleanup -n และ brew list --versions ซ้ำ แล้วทดสอบเครื่องมือสำคัญ
ขอบเขตการล้างและต้นทุนการกู้คืน
ดูตัวอย่างก่อนล้างไฟล์ดาวน์โหลดและ formula เวอร์ชันเก่าด้วย brew cleanup พร้อมปกป้องเครื่องมือที่ใช้อยู่ dependency ที่ยังจำเป็น และการตั้งค่า
| รายการหรือการดำเนินการ | ตรวจสอบได้ที่ | ผลที่ตามมา |
|---|---|---|
| แยกแคชไฟล์ดาวน์โหลดออกจากเครื่องมือที่ติดตั้งแล้ว | brew --cache | แคชไฟล์ดาวน์โหลดมักอยู่ที่ ~/Library/Caches/Homebrew แต่ HOMEBREW_CACHE เปลี่ยนตำแหน่งได้ จึงต้องยึดผลจาก brew --cache ส่วน formula แต่ละเวอร์ชันอยู่ใน Cellar, cask อยู่ใน Caskroom และเวอร์ชันที่ใช้งานอยู่มักเข้าถึงผ่านลิงก์ใต้ Homebrew prefix ให้ใช้ brew --cellar, brew --caskroom และ brew --prefix ตรวจตำแหน่งจริง พาธเหล่านี้ รวมถึง Brewfile, ไฟล์ตั้งค่า shell, เซอร์วิส, ฐานข้อมูล, ใบรับรอง และไฟล์โปรเจกต์ ไม่ใช่แคชที่ลบแบบเหมารวมได้ |
| เริ่มด้วยการตรวจแบบไม่เปลี่ยนแปลงข้อมูล | brew cleanup -n | รัน du -sh "$(brew --cache)" เพื่อวัดแคชจริง แล้วรัน brew cleanup -n ดูตัวอย่างไฟล์ล็อกค้าง ไฟล์ดาวน์โหลดเก่า formula เวอร์ชันเก่า และ dependency ที่อาจถูกถอนอัตโนมัติ หากพบเครื่องมือที่รู้จัก ให้ใช้ brew list --versions ตรวจว่าเวอร์ชันใดใช้งานอยู่ ถ้าจะล้างไฟล์แคชทุกอายุ ให้ดูตัวอย่างด้วย brew cleanup -n --prune=all ก่อนเสมอ การดูตัวอย่างไม่ใช่ข้อมูลสำรอง และการเสีย keg เวอร์ชันเก่าอาจกู้กลับได้ยากกว่าการดาวน์โหลด bottle ใหม่ |
| เลือกคำสั่ง cleanup ที่มีขอบเขตแคบที่สุด | brew cleanup / brew cleanup --prune=all | หลังตรวจตัวอย่างแล้ว ใช้ brew cleanup สำหรับการบำรุงรักษาปกติ โดยค่าเริ่มต้นปัจจุบันพิจารณาไฟล์ดาวน์โหลดที่เก่ากว่า 120 วันและอาจลบ formula เวอร์ชันเก่า ส่วน brew cleanup --prune=all ลบไฟล์แคชโดยไม่จำกัดอายุ ทำให้การติดตั้งใหม่ครั้งถัดไปต้องดาวน์โหลดไฟล์เหล่านั้นอีก หากขอบเขตทั้งระบบกว้างเกินไป ให้รัน brew cleanup -n <name> ก่อน แล้วค่อยใช้ brew cleanup <name> เมื่อรายการตรงกับเจตนา โดยแทน <name> ด้วยชื่อ formula หรือ cask จริง ห้ามพิมพ์วงเล็บมุมตามตัวอย่าง |
| แยก cleanup ออกจากการถอน dependency ด้วย autoremove | brew autoremove --dry-run (ไม่ใช่การล้างแคช) | brew autoremove ไม่ใช่การล้างแคช แต่เป็นการถอน formula ที่ Homebrew มองว่าเคยติดตั้งเป็น dependency และไม่จำเป็นแล้ว นอกจากนี้ brew cleanup และ brew uninstall อาจเรียก autoremove อัตโนมัติ หากต้องการแยกการตัดสินใจ ให้ตั้ง HOMEBREW_NO_AUTOREMOVE สำหรับคำสั่ง cleanup เช่น HOMEBREW_NO_AUTOREMOVE=1 brew cleanup แล้วตรวจรายการถอนด้วย brew autoremove --dry-run ต่างหาก สคริปต์ในเครื่องอาจเรียกใช้ formula โดยไม่ได้อยู่ในกราฟ dependency ของ Homebrew หลังล้างให้วัดแคช รัน brew cleanup -n และ brew list --versions ซ้ำ แล้วทดสอบเครื่องมือสำคัญ |
คำถามที่พบบ่อย
brew cleanup ปลอดภัยไหม?
เป็นคำสั่งบำรุงรักษาที่ Homebrew รองรับ แต่มีขอบเขตถึง formula เวอร์ชันเก่าและอาจเรียก autoremove จึงต้องรัน brew cleanup -n ก่อน ยืนยันว่าไม่มีงานย้อนกลับหรือพาธที่เขียนตายตัวพึ่ง keg เก่า และตั้ง HOMEBREW_NO_AUTOREMOVE หากยังไม่ต้องการถอน dependency
brew cleanup --prune=all ลบอะไร?
คำสั่งนี้ใช้ cleanup โดยลบไฟล์แคชไม่จำกัดอายุ ขณะที่ขอบเขตปกติของ cleanup ยังรวมไฟล์ล็อกค้างและ formula เวอร์ชันเก่า ให้รัน brew cleanup -n --prune=all ก่อนและเตรียมรับต้นทุนดาวน์โหลดใหม่
ควรรัน brew autoremove หลัง brew cleanup ไหม?
ไม่ควรรันซ้ำโดยอัตโนมัติ เพราะ autoremove เป็นการถอน formula ที่ไม่ใช้แล้ว ไม่ใช่การล้างแคช และ cleanup เองก็อาจเรียก autoremove เว้นแต่ตั้ง HOMEBREW_NO_AUTOREMOVE ให้ตรวจรายการถอนแยกด้วย brew autoremove --dry-run รวมถึงสคริปต์และเซอร์วิสที่อาจเรียกใช้ formula เหล่านั้น
แหล่งอ้างอิง