Làm cách nào để xóa các gói cũ được cài đặt bởi pacman trong Arch Linux?


51

Gần đây tôi đã cài đặt Arch Linux và thấy rằng tôi đang ăn ở rất nhiều bộ lưu trữ tương đối nhanh chóng. Vì lý do nào tôi đã sử dụng 17GB chỉ trong khoảng 2 tuần. Tôi không có nhiều phần mềm được cài đặt nên tôi được tin rằng tất cả các gói cũ được duy trì ở đâu đó.

Để hỗ trợ điều này, tôi đã nhận thấy rằng nếu tôi đã cài đặt một gói, hãy gỡ bỏ gói đó và sau đó cài đặt lại nó mà pacman chỉ đơn giản là giải nén và cài đặt lại phần mềm mà không phải tải xuống lại.

Sau khi tôi cài đặt hệ thống cơ sở của mình, trước phần mềm bổ sung, tôi có thể sử dụng khoảng 2 GB hoặc hơn. Tôi đã chỉ cài đặt Matlab, Skype, Wine và một vài chương trình nhỏ khác. Tất nhiên tôi cũng đã cài đặt các thư viện bị thiếu và những thứ tương tự, nhưng không có giá trị gần 15 GB.

Tôi hoàn toàn sai ở đây hay Arch không bao giờ xóa các gói cũ khi tải xuống / nâng cấp lên phiên bản mới?

Nếu vậy, làm cách nào để xóa các gói không sử dụng này?

Ngoài ra, khi tôi gỡ bỏ các gói đã cài đặt, tôi sử dụng pacman -R ...


1
Nó có thể là một ý tưởng tốt để thiết lập paccache như một thường xuyên cronhoặc systemdcông việc.
Sparhawk

Câu trả lời:


59

Không, pacman không xóa các gói cũ khỏi bộ đệm của bạn ( /var/cache/pacman/pkg) vì vậy, theo thời gian, nó có thể lấp đầy.

Bạn có thể áp dụng hai cách tiếp cận để xóa bộ nhớ cache: một cách mạnh mẽ với pacman -Sc:

-c, --clean
Xóa các gói không còn được cài đặt từ bộ đệm cũng như cơ sở dữ liệu đồng bộ hiện không được sử dụng để giải phóng không gian đĩa. Khi pacman tải xuống các gói, nó sẽ lưu chúng trong một thư mục bộ đệm. Ngoài ra, cơ sở dữ liệu được lưu cho mọi DB đồng bộ mà bạn tải xuống và không bị xóa ngay cả khi chúng bị xóa khỏi tệp cấu hình pacman.conf (5). Sử dụng một công tắc --clean để chỉ xóa các gói không còn được cài đặt; sử dụng hai để loại bỏ tất cả các tập tin từ bộ đệm. Trong cả hai trường hợp, bạn sẽ có tùy chọn có hoặc không để xóa các gói và / hoặc cơ sở dữ liệu đã tải xuống không sử dụng.

Hoặc, đối với cách tiếp cận nhiều sắc thái hơn, bạn có thể sử dụng một trong những tiện ích đi kèm với pacman-contrib , paccache:

paccache là một tiện ích dọn dẹp bộ đệm pacman linh hoạt, có nhiều tùy chọn để giúp kiểm soát số lượng và những gì, bị xóa khỏi bất kỳ thư mục nào chứa tarball gói pacman.

Theo mặc định, paccachesẽ xóa tất cả trừ ba phiên bản cuối cùng của gói đã cài đặt, nhưng bạn có thể thay đổi số này bằng công -k, --keeptắc. Ngoài ra còn có một -d, --dryruncông tắc để xem trước những thay đổi của bạn. Xem paccache --helpcho tất cả các công tắc.

Có một số tiện ích trong gói pacman-contrib để hỗ trợ quản lý gói, đáng để tìm kiếm tất cả và hiểu được cách chúng hoạt động và có thể giúp chạy Arch dễ dàng hơn nhiều. Bạn có thể xem danh sách đầy đủ với:

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'

jasonwryan đã nói vậy :) Cũng phải thực sự cẩn thận với công --cleantắc kép : cấm dễ dàng quay trở lại gói làm việc, trong trường hợp có bất kỳ sự cố nào xảy ra với phiên bản mới nhất (ví dụ: gói mới dựa trên bản phát hành lib hoặc Python cũ hơn, cùng với phần cứng và mới nhất hạt nhân). Tôi thấy việc thiết lập bộ đệm pacman ở nơi khác hơn là /một giải pháp tốt hơn nhiều (chỉ cần đặt đường dẫn trong /etc/pacman.conf ).
tuk0z

2
Nếu bạn không có, paccachebạn có thể lấy nó bằng cách cài đặt pacman-contribgói.
pfrenssen

+1, nhưng tôi đề nghị $ pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin\/./ {print $NF}'tránh một dòng trống trong kết quả? ;-)
Cbhihe

Welp, rm -rf /var/cache/pacman/pkglà điều sai trái
Đăng


13

Bộ nhớ cache gói của bạn là trong /var/cache/pacman/pkg/.

LƯU Ý: pacman các gói đã được cập nhật vào năm 2018 và ngoài ra yêu cầu cài đặt pacman-contribđể sử dụng các tập lệnh / công cụ như paccacheđược mô tả dưới đây.

Làm:

paccache -d

Để thực hiện -dryrunvà xem những gì chạy tiện ích đó có thể loại bỏ khi bạn làm tiếp theo:

paccache -r

Để loại bỏ các gói được lưu trữ. 17gbs có âm thanh dốc. Hãy chắc chắn rằng bạn không có một số nhật ký bỏ trốn. Làm:

du -h /var/log

Hoặc thậm chí chỉ:

du -h /var

Đối với một ý tưởng tổng quát hơn về những gì đang xảy ra.


7

pacman -Scclàm những gì bạn yêu cầu, nhưng nó không được khuyến khích. Từ Wiki

Cũng có thể làm trống hoàn toàn thư mục bộ đệm với pacman -Scc , nhưng thực hiện nó được coi là thực hành xấu, vì, ngoài việc trên, nó cũng ngăn không cho cài đặt lại gói trực tiếp từ thư mục bộ đệm trong trường hợp cần thiết, do đó buộc để tải lại nó. Bạn không bao giờ nên sử dụng nó trừ khi có nhu cầu tuyệt đối về không gian đĩa.

Bên cạnh đó, khi tôi gỡ cài đặt các gói, tôi thích sử dụng hơn pacman -Rnsc, vì nó cũng loại bỏ các phụ thuộc gói cũng như các gói phụ thuộc vào gói này. Như mọi khi, hãy đọc kỹ những gói nào đang bị xóa, vì bạn có thể dễ dàng rời khỏi hệ thống của chúng tôi trong trạng thái không sử dụng được.


Điều đó thật tuyệt - vậy nó tương đương với rm /var/cache/pacman/pkg/*sau đó? Hoặc - ít nhất là theo mặc định, tôi đoán vậy. Tôi đã chuyển bộ nhớ cache pkg của mình sang /tmphầu hết các máy từ lâu và cho phép squidxử lý một bộ đệm trung tâm duy nhất tại bộ định tuyến. Không dễ như pacman -Sccmặc dù.
mikeerv

@mikeerv Một bộ đệm gói Pacman trung tâm tại bộ định tuyến của bạn? Làm thế nào bạn thiết lập nó, tôi thích âm thanh của nó vì tôi có cả máy tính để bàn Arch và máy tính xách tay.
cắt đứt

6

Tôi đề nghị sử dụng paccachethay vì pacman -Sc. Thậm chí còn có một cờ rất hiệu quả để loại bỏ có chọn lọc các phiên bản của các gói được gỡ cài đặt -u. Các cờ của paccachetôi khuyên dùng là (như một phần của paccache v5.0.2):

  • -d, --dryrun: thực hiện chạy khô, chỉ tìm gói ứng viên
  • -r, --remove: xóa gói ứng viên
  • -u, --uninstalled: chỉ gói gỡ cài đặt mục tiêu
  • -k, --keep <num>: giữ "num" của mỗi gói trong bộ đệm (mặc định: 3)

Ví dụ: Kiểm tra các phiên bản bộ nhớ cache còn lại của các gói đã gỡ cài đặt

paccache -dvuk0

1
Làm thế nào để điều này thêm vào các câu trả lời hiện có, ngoài việc in ra các tùy chọn?
jasonwryan

Nếu bạn đã xóa rất nhiều gói lớn không sử dụng, bạn muốn xóa chúng khỏi bộ đệm của pacman. Điều này là có thể với cờ -ucủa paccache. Ví dụ về các gói lớn, ví dụ Gnome, KDE hoặc Texlive để cung cấp cho bạn một ý tưởng.
strpeter

1
Vâng, tôi quen thuộc với cờ. Quan điểm của tôi chỉ là thêm nhiều cờ vào câu trả lời không làm thay đổi thực tế rằng nó chỉ sao chép những gì đã có ở đây.
jasonwryan

các -klá cờ là mới với tôi và không giải thích rất rõ trong hộp thoại giúp đỡ, vì vậy sử dụng của nó ở đây là hữu ích.
hLk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.