Cách xóa bộ nhớ đệm Homebrew trên Mac: brew cleanup -s và --prune=all
Đội ngũ AskClean · Cập nhật 2026-11-02
Hãy chạy brew cleanup -n trước khi thay đổi bất cứ thứ gì. Một lượt cleanup thông thường xóa tệp lock đã cũ, tệp tải xuống lỗi thời và phiên bản formula cũ; nếu chưa đặt HOMEBREW_NO_AUTOREMOVE, lệnh còn gỡ các phần phụ thuộc không còn gì cần đến. Tùy chọn -s (--scrub) đi xa hơn: nó còn xóa cả tệp tải xuống của phiên bản mới nhất trong bộ nhớ đệm, chẳng hạn gói bạn đã tải về nhưng chưa từng cài hoặc đã gỡ; tệp tải xuống của mọi thứ vẫn đang cài thì luôn được giữ lại. Còn --prune=all xóa tệp trong bộ nhớ đệm bất kể tuổi. Dùng brew --cache để xác nhận vị trí bộ nhớ đệm đang dùng.

Phân biệt tệp tải xuống, keg cũ và công cụ đang dùng
Homebrew lưu bottle, tệp lưu trữ mã nguồn và tệp cask tải về trong bộ nhớ đệm, mặc định là ~/Library/Caches/Homebrew; HOMEBREW_CACHE có thể đổi đường dẫn này. Formula đã cài nằm dưới dạng keg theo phiên bản trong Cellar, cask nằm trong Caskroom và liên kết đang hoạt động nằm dưới prefix. Hãy tìm vị trí thực bằng brew --cache, brew --cellar, brew --caskroom và brew --prefix. Keg cũ không phải bộ nhớ đệm mà là phiên bản đã cài: xóa đi thì mất khả năng quay về bản trước, chứ không chỉ phải tải lại.
Xem trước bằng brew cleanup -n
Đo bộ nhớ đệm đang dùng bằng du -sh "$(brew --cache)"; dấu ngoặc kép giúp xử lý đường dẫn có khoảng trắng. Sau đó chạy brew cleanup -n (tương đương --dry-run) để xem Homebrew sẽ xóa gì mà chưa xóa thật: tệp tải xuống, keg theo phiên bản và mọi formula được liệt kê dưới mục “Would autoremove”. Nếu chỉ muốn dọn bộ nhớ đệm và phiên bản cũ mà giữ mọi formula phụ thuộc, hãy xem trước với HOMEBREW_NO_AUTOREMOVE=1 brew cleanup -n. Đối chiếu các keg được liệt kê với brew list --versions trước khi chạy thật.
- Chạy brew --cache rồi đo đường dẫn bộ nhớ đệm bằng du -sh "$(brew --cache)".
- Chạy brew cleanup -n và xem từng tệp tải xuống, phiên bản formula cũ cùng mọi formula trong mục “Would autoremove”; nếu chỉ muốn dọn bộ nhớ đệm, hãy xem trước với HOMEBREW_NO_AUTOREMOVE=1.
- Đối chiếu phiên bản cần giữ bằng brew list --versions; xác minh mạng, proxy, thông tin xác thực và nguồn tải vẫn sẵn sàng cho lần tải sau.
- Dùng brew cleanup cho bảo trì thường lệ; chỉ chạy brew cleanup -s hoặc brew cleanup --prune=all sau khi đã xem trước đúng tổ hợp đó với -n và chấp nhận chi phí tải lại.
- Đo lại bộ nhớ đệm, chạy lại brew cleanup -n, kiểm tra brew list --versions rồi thử ít nhất một công cụ quan trọng được cài qua Homebrew.
brew cleanup -n chỉ là bản xem trước, không phải bản sao lưu: mục đã bị dọn thật không vào Thùng rác và đúng phiên bản đó chưa chắc còn trên nguồn tải. Xóa keg cũ có thể làm mất khả năng quay về bản trước hoặc làm hỏng script dùng đường dẫn không được ghi lại.
brew cleanup, -s và --prune=all khác nhau thế nào
brew cleanup thông thường coi tệp tải xuống cũ hơn 120 ngày là ứng viên và xóa phiên bản formula cũ, nhưng giữ phiên bản đang cài. Tùy chọn -s, tức --scrub, mở rộng việc dọn sang cả tệp tải xuống gần đây của phiên bản mới nhất đối với các gói không được cài (đã tải về nhưng chưa từng cài, hoặc đã gỡ), nhưng vẫn giữ tệp tải xuống của formula và cask còn đang cài — nó không có nghĩa là “an toàn” hay “làm trống mọi thứ”. Còn --prune=all bỏ giới hạn tuổi và xóa mọi tệp trong bộ nhớ đệm thuộc phạm vi của cleanup. Hai tùy chọn mở rộng theo hai cách khác nhau, nên hãy xem trước đúng tổ hợp định dùng bằng brew cleanup -n -s hoặc brew cleanup -n --prune=all, và nhớ rằng cả hai vẫn có thể xóa keg cũ.
Tách autoremove, dữ liệu người dùng và bước xác minh
brew autoremove không phải dọn bộ nhớ đệm: lệnh này gỡ formula mà Homebrew coi là phần phụ thuộc không còn cần, và một lượt brew cleanup toàn cục cũng làm việc này nếu chưa đặt HOMEBREW_NO_AUTOREMOVE. Hãy xem riêng bằng brew autoremove --dry-run, vì script cục bộ có thể dùng công cụ nằm ngoài đồ thị phần phụ thuộc. Prefix, Cellar, Caskroom, Brewfile, dotfile, dịch vụ, cơ sở dữ liệu và chứng chỉ không phải bộ nhớ đệm; đừng chạy rm -rf trên chúng. Sau cleanup, đo lại bộ nhớ đệm, chạy lại bản xem trước và thử các lệnh quan trọng. AskClean có thể hiển thị bộ nhớ đệm Homebrew như một mục tổng thể và xóa vĩnh viễn mục bạn duyệt, nhưng không dọn keg cũ trong Cellar; quyết định theo từng gói vẫn phải dựa vào bản xem trước của Homebrew.
Ranh giới xóa và chi phí khôi phục
Hiểu brew cleanup -s (--scrub) và --prune=all, xem trước bằng brew cleanup -n, xóa tệp tải xuống và phiên bản cũ mà vẫn giữ công cụ cùng cấu hình đang dùng.
| Mục hoặc thao tác | Nơi kiểm tra | Hậu quả |
|---|---|---|
| Phân biệt tệp tải xuống, keg cũ và công cụ đang dùng | brew --cache | Homebrew lưu bottle, tệp lưu trữ mã nguồn và tệp cask tải về trong bộ nhớ đệm, mặc định là ~/Library/Caches/Homebrew; HOMEBREW_CACHE có thể đổi đường dẫn này. |
| Xem trước bằng brew cleanup -n | brew cleanup -n | Đo bộ nhớ đệm đang dùng bằng du -sh "$(brew --cache)"; dấu ngoặc kép giúp xử lý đường dẫn có khoảng trắng. |
| brew cleanup, -s và --prune=all khác nhau thế nào | brew cleanup -n -s / brew cleanup -n --prune=all | brew cleanup thông thường coi tệp tải xuống cũ hơn 120 ngày là ứng viên và xóa phiên bản formula cũ, nhưng giữ phiên bản đang cài. |
| Tách autoremove, dữ liệu người dùng và bước xác minh | brew autoremove --dry-run (không phải dọn bộ nhớ đệm) | brew autoremove không phải dọn bộ nhớ đệm: lệnh này gỡ formula mà Homebrew coi là phần phụ thuộc không còn cần, và một lượt brew cleanup toàn cục cũng làm việc này nếu chưa đặt HOMEBREW_NO_AUTOREMOVE. |
Câu hỏi thường gặp
Chạy brew cleanup trên Mac có an toàn không?
Đây là lệnh bảo trì chính thức của Homebrew, nhưng hãy xem trước bằng brew cleanup -n. Lệnh xóa tệp tải xuống lỗi thời, phiên bản cũ của formula đã cài và — nếu chưa đặt HOMEBREW_NO_AUTOREMOVE — cả phần phụ thuộc không còn gì cần đến, nên hãy chắc chắn không quy trình nào dựa vào keg cũ hay phần phụ thuộc được liệt kê. Cũng vì cleanup toàn cục đã gỡ các phần phụ thuộc này, thường không cần chạy thêm brew autoremove.
brew cleanup -s nghĩa là gì?
Tùy chọn -s chính là --scrub. Nó còn xóa cả tệp tải xuống của phiên bản mới nhất trong bộ nhớ đệm đối với các gói không được cài, chẳng hạn gói bạn đã tải về nhưng chưa từng cài hoặc đã gỡ. Tệp tải xuống của formula và cask bạn vẫn đang cài thì được giữ lại. Hãy xem danh sách thực tế bằng brew cleanup -n -s trước khi chạy.
brew cleanup --prune=all xóa những gì?
Lệnh này chạy cleanup với chính sách xóa tệp trong bộ nhớ đệm bất kể tuổi, trong khi cleanup vẫn có thể xóa tệp lock cũ và phiên bản formula cũ. Hãy xem trước kết quả chính xác bằng brew cleanup -n --prune=all và chuẩn bị cho việc phải tải lại khi cài hoặc cài lại sau này.
Nguồn tham khảo