AskClean

brew cleanup -s คืออะไร? วิธีล้างแคช Homebrew บน Mac

ทีม AskClean · อัปเดตเมื่อ 2026-11-02

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

ขวดและกล่องแพ็กเกจจัดเรียงบนชั้น โดยมีขวดบางส่วนอยู่ในถังรีไซเคิลด้านหน้า
พื้นที่ Homebrew แต่ละประเภทมีต้นทุนการกู้คืนต่างกัน ให้ดูตัวอย่างไฟล์ดาวน์โหลดกับเวอร์ชันเก่า และเก็บเครื่องมือที่ใช้อยู่กับการตั้งค่าไว้

แยกแคชไฟล์ดาวน์โหลดออกจากเครื่องมือที่ติดตั้งแล้ว

แคชไฟล์ดาวน์โหลดมักอยู่ที่ ~/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 ใหม่

  1. รัน brew --cache แล้วใช้ du -sh "$(brew --cache)" จดขนาดแคชดาวน์โหลดที่ใช้งานจริง
  2. รัน brew cleanup -n แล้วตรวจไฟล์ล็อกค้าง ไฟล์ดาวน์โหลดเก่า formula เวอร์ชันเก่า และ dependency ที่อาจถูกถอน พร้อมใช้ brew list --versions ตรวจเครื่องมือสำคัญ
  3. หากยังไม่ยอมรับการถอน dependency อัตโนมัติ ให้ตั้ง HOMEBREW_NO_AUTOREMOVE สำหรับคำสั่ง cleanup และตรวจรายการที่จะถูกถอนแยกด้วย brew autoremove --dry-run
  4. เลือก brew cleanup แบบปกติตามผลตรวจ ส่วน brew cleanup -s หรือ brew cleanup --prune=all ให้ใช้หลังดูตัวอย่างด้วยตัวเลือกเดียวกัน (brew cleanup -n -s หรือ brew cleanup -n --prune=all) และยอมรับต้นทุนการดาวน์โหลดใหม่แล้ว
  5. วัดแคชอีกครั้ง รัน brew cleanup -n และ brew list --versions ซ้ำ แล้วเปิดเครื่องมือ Homebrew สำคัญที่งานปัจจุบันต้องใช้

dry run เป็นเพียงภาพตัวอย่าง ไม่ใช่ข้อมูลสำรอง ทั้ง keg เวอร์ชันเก่าและไฟล์ดาวน์โหลดที่ Homebrew ลบมักไม่เข้าถังขยะของ macOS และไม่มีหลักประกันว่า upstream จะยังเก็บเวอร์ชันเดิมไว้ให้กู้คืน

เลือกคำสั่ง cleanup ที่มีขอบเขตแคบที่สุด

หลังตรวจตัวอย่างแล้ว ใช้ brew cleanup สำหรับการบำรุงรักษาปกติ ค่าเริ่มต้นปัจจุบันถือว่าไฟล์ดาวน์โหลดที่เก่ากว่า 120 วันล้างได้ และอาจลบ formula เวอร์ชันเก่า brew cleanup -s (--scrub) ขยายไปถึงไฟล์ดาวน์โหลดล่าสุดที่การล้างตามอายุยังเก็บไว้ แต่ไม่ลบไฟล์ดาวน์โหลดของ formula และ cask ที่ติดตั้งอยู่ ตัวเลือก -s ย่อมาจาก --scrub ไม่ได้แปลว่า safe และไม่ได้ล้างแคชทั้งหมด ส่วน brew cleanup --prune=all ลบไฟล์แคชโดยไม่จำกัดอายุ สองตัวเลือกนี้ขยายขอบเขตต่างกันและไม่ใช่คำพ้องกัน ให้ดูตัวอย่างชุดคำสั่งที่จะใช้จริงก่อน เช่น brew cleanup -n -s หรือ brew cleanup -n --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 ซ้ำ แล้วทดสอบเครื่องมือสำคัญ

ขอบเขตการล้างและต้นทุนการกู้คืน

brew cleanup -s (--scrub) ลบอะไรบ้าง ดูตัวอย่างก่อนล้างแคช Homebrew ลบไฟล์ดาวน์โหลดและ formula เวอร์ชันเก่า โดยปกป้องเครื่องมือที่ใช้อยู่และการตั้งค่า

รายการหรือการดำเนินการตรวจสอบได้ที่ผลที่ตามมา
แยกแคชไฟล์ดาวน์โหลดออกจากเครื่องมือที่ติดตั้งแล้ว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 -s / brew cleanup --prune=allหลังตรวจตัวอย่างแล้ว ใช้ brew cleanup สำหรับการบำรุงรักษาปกติ ค่าเริ่มต้นปัจจุบันถือว่าไฟล์ดาวน์โหลดที่เก่ากว่า 120 วันล้างได้ และอาจลบ formula เวอร์ชันเก่า brew cleanup -s (--scrub) ขยายไปถึงไฟล์ดาวน์โหลดล่าสุดที่การล้างตามอายุยังเก็บไว้ แต่ไม่ลบไฟล์ดาวน์โหลดของ formula และ cask ที่ติดตั้งอยู่ ตัวเลือก -s ย่อมาจาก --scrub ไม่ได้แปลว่า safe และไม่ได้ล้างแคชทั้งหมด ส่วน brew cleanup --prune=all ลบไฟล์แคชโดยไม่จำกัดอายุ สองตัวเลือกนี้ขยายขอบเขตต่างกันและไม่ใช่คำพ้องกัน ให้ดูตัวอย่างชุดคำสั่งที่จะใช้จริงก่อน เช่น brew cleanup -n -s หรือ brew cleanup -n --prune=all และเตรียมรับต้นทุนการดาวน์โหลดใหม่ หากขอบเขตทั้งระบบกว้างเกินไป ให้รัน brew cleanup -n <name> ก่อน แล้วค่อยใช้ brew cleanup <name> เมื่อรายการตรงกับเจตนา โดยแทน <name> ด้วยชื่อ formula หรือ cask จริง ห้ามพิมพ์วงเล็บมุมตามตัวอย่าง
แยก cleanup ออกจากการถอน dependency ด้วย autoremovebrew 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 เวอร์ชันเก่า และหากไม่ได้ตั้ง HOMEBREW_NO_AUTOREMOVE ก็จะถอน dependency ที่ไม่มีอะไรใช้แล้วด้วย จึงต้องรัน brew cleanup -n ก่อน และยืนยันว่าไม่มีแผนย้อนกลับเวอร์ชัน (rollback) พาธที่เขียนตายตัวซึ่งพึ่ง keg เก่า หรืองานที่ใช้ dependency ในรายการนั้น

brew cleanup -s กับ brew cleanup --prune=all ต่างกันอย่างไร?

ตัวเลือก -s หรือ --scrub ลบไฟล์ดาวน์โหลดในแคชของเวอร์ชันล่าสุดด้วย สำหรับแพ็กเกจที่ไม่ได้ติดตั้งอยู่ เช่น แพ็กเกจที่ดาวน์โหลดมาแต่ไม่เคยติดตั้ง หรือถอนการติดตั้งไปแล้ว แต่ยังเก็บไฟล์ดาวน์โหลดของ formula และ cask ที่ติดตั้งอยู่ไว้ ส่วน --prune=all ลบไฟล์แคชโดยไม่จำกัดอายุ ทั้งสองแบบยังทำงานปกติของ cleanup เช่นลบไฟล์ล็อกค้างและ formula เวอร์ชันเก่าด้วย ให้ดูตัวอย่างด้วย brew cleanup -n -s หรือ brew cleanup -n --prune=all ก่อน และเตรียมรับต้นทุนการดาวน์โหลดใหม่

ควรรัน brew autoremove หลัง brew cleanup ไหม?

ไม่ควรรันซ้ำโดยอัตโนมัติ เพราะ autoremove เป็นการถอน formula ที่ไม่ใช้แล้ว ไม่ใช่การล้างแคช และ cleanup เองก็อาจเรียก autoremove เว้นแต่ตั้ง HOMEBREW_NO_AUTOREMOVE ให้ตรวจรายการถอนแยกด้วย brew autoremove --dry-run รวมถึงสคริปต์และเซอร์วิสที่อาจเรียกใช้ formula เหล่านั้น

แหล่งอ้างอิง

จัดการพื้นที่ของเครื่องมือนักพัฒนาต่อ