Có an toàn để xóa thủ công nội dung / var / cache / apt không?


21

Trên một hệ thống nhúng có không gian đĩa rất hạn chế, tôi có thư mục /var/cache/aptđầy đủ với khoảng 700 MB srcpkgcache.bin.*và một vài *.bintệp lớn .

Biểu diễn sudo apt-get cleankhông tạo ra sự khác biệt rõ ràng.

Có an toàn để xóa thủ công các *.bin*tập tin này ?


6
Kể từ Ubuntu 14.04, việc loại bỏ các *.bintệp trong thư mục nói trên là hoàn toàn an toàn - giả sử không có quy trình liên quan đến apt hiện đang chạy. Việc tiếp theo apt-get updatesẽ tạo lại các *.bintập tin. Câu hỏi này được quyết định không phải về các tập tin /var/cache/apt/archives, mà là các tập tin /var/cache/apt/*.bin. Sự khác biệt lớn. Cái trước có thể được làm sạch bằng cách phát hành apt-get clean, cái sau phải được gỡ bỏ bằng tay. Rõ ràng những người bỏ phiếu để đóng câu hỏi đã không đọc câu hỏi đúng. Thật không may, tôi không thể bỏ phiếu để mở lại sau khi trao một số đại diện của tôi trong tiền thưởng.
0xC0000022L

3
Đây không phải là một bản sao. Câu trả lời được liên kết là về thư mục con archivesbên trong /var/cache/apt/, câu hỏi này là về các *.bin*tệp.
Olaf Dietsche

Câu trả lời:


11

Không hẳn vậy. Những tệp này giúp hệ thống của bạn xác định những gì có sẵn và những gì không. Làm trống thư mục đó sẽ dẫn đến một hệ thống apt-get bị hỏng. Dưới đây là một vài lời khuyên.

Đầu tiên, tự động làm sạch

thêm một

DPkg::Post-Invoke { "apt-get clean"; };

đến hết /etc/apt/apt.conf. Nó sẽ làm cho quá trình apt và dpkg mất nhiều thời gian hơn, nhưng sẽ làm cho nó để thư mục bộ nhớ cache của bạn luôn sạch sẽ.

Tiếp theo, xóa tài liệu lưu trữ

Bắt đầu bằng cách loại bỏ và vô hiệu hóa tất cả các tài liệu lưu trữ nguồn (mà bạn không sử dụng). Trên một hệ thống nhúng, bạn có thể không cần chúng. Tiếp theo loại bỏ tất cả các tài liệu lưu trữ không được sử dụng. Bạn có thể chạy apt-cache policyđể tìm hiểu repo một gói đến từ đâu nếu bạn không chắc chắn.

Xóa thêm tài liệu lưu trữ

Một số PPA rất đáng lo ngại về việc có số lượng gói lớn trong đó khi bạn chỉ cần 1 hoặc 2. Hãy thử vô hiệu hóa các PPA đó và chỉ cài đặt các tệp gỡ lỗi theo cách thủ công. Bạn tiết kiệm không gian trong những trường hợp đó, nhưng bạn mất tự động cập nhật. Hãy nhớ rằng dpkg sẽ xử lý các phụ thuộc, vì vậy bạn vẫn có thể cài đặt thing-with-ton-of-deps.deb sau đó chạy apt-get -f installđể tìm nạp các phụ thuộc.

Hoàn toàn cực kỳ Trả lời 1

Bởi vì đã nói về một hệ thống nhúng, 90% các repos chính sẽ không giúp ích gì cho bạn. Để xử lý việc này, bạn có thể chạy máy chủ repo apt-get của riêng bạn Xem liên kết này . Điều đó không dễ, và đó là PIA cho chỉ một máy. Nhưng nếu bạn có một vài trong số những chiếc máy này thì nó hoàn toàn xứng đáng. (Máy chủ apt repo của bạn có thể lưu trữ chỉ một tập hợp con các gói bạn thực sự sử dụng. Bạn không cần phải phản ánh toàn bộ nội dung)

Hoàn toàn cực kỳ Trả lời 2

Nếu không gian thực sự là một vấn đề lớn, thì bạn có thể vô hiệu hóa apt cùng nhau và hoàn nguyên để cài đặt thủ công qua dpkg. Tôi đã phải làm điều này trên một số hệ thống nhúng. Nó hoạt động, nhưng đó là một cơn ác mộng quản trị.


Đây là một câu trả lời tuyệt vời (đặc biệt là những câu hoàn toàn cực đoan) nhưng /etc/apt/apt.conf không còn tồn tại trong Ubuntu 14.04. Thực hành tốt nhất hiện nay là gì?
zachaysan

1
JUst tạo tập tin nếu nó không tồn tại. Nó vẫn sẽ được đọc.
coteyr

5
Xin vui lòng, tại sao bạn viết nó không an toàn để loại bỏ các *.bintập tin? Bất kỳ lần chạy nào apt-get updatecũng sẽ tạo lại các tệp đó từ đầu (đã kiểm tra). Ví dụ, trường hợp sử dụng của tôi là tôi muốn tạo các mẫu container LXC và muốn loại bỏ kho lưu trữ càng nhiều càng tốt. Tôi không thể thấy bất kỳ lý do ho nó không an toàn. Và câu trả lời của bạn không chỉ ra một lý do, chỉ nói rằng nó không an toàn. Đã kiểm tra rằng nó hoàn toàn an toàn trên Ubuntu 14.04.
0xC0000022L

1
Bạn đang nói bao gồm apt-cache cleantrong một cuộc gọi dpkg sẽ dẫn đến bộ nhớ cache sạch hơn, nhưng người dùng nói apt-cache cleankhông làm sạch bất cứ điều gì cho họ. Ngoài ra câu trả lời của bạn là hoàn toàn sai vì dpkg không sử dụng /var/cache/apt/*nội dung để được thông báo cho thống kê gói.
Anwar

1
Trang chủ apt-get mô tả rõ ràng chức năng cleannhư * dọn dẹp kho lưu trữ cục bộ của các tệp gói được truy xuất. Nó xóa mọi thứ trừ tệp khóa khỏi / var / cache / apt / archives / và /var/cache/apt/archives/partial/.* Nếu nguy hiểm, sẽ không có chức năng nào như vậy để dọn dẹp.
Anwar

3

Tất nhiên bạn có thể xóa pkgcache.binsrcpkgcache.bin, không có gì xảy ra. Chỉ cần chạy apt-get updateđể tạo lại chúng.


... và điều này có thực sự độc lập với việc xóa các .debtập tin không?
einpoklum - phục hồi Monica

1

Giữ pkgcache.binsrcpkgcache.bin, bạn có thể xóa những người khác một cách an toàn. Đừng chạm vào các thư mục!


Được rồi cảm ơn. Tôi tạm thời chuyển các *bin.*tập tin vào một thư mục sao lưu. Tuy nhiên, tại sao apt-get quản lý bộ đệm trong bộ đệm? Một thư mục bộ đệm nên được lưu trữ tạm thời theo bản chất.
ysap

Vấn đề này đã được báo cáo lỗi. :) Xem tại đây
Frantique

Tất nhiên bạn có thể xóa pkgcache.bin và srcpkgcache.bin, không có gì xảy ra. Cập nhật apt-get tạo lại chúng.
Tomas M

0

Tất nhiên bạn có thể tạo chia sẻ NFS (hệ thống tệp mạng) cho việc này. Để lại các tệp này trên máy chủ và chỉ chia sẻ khi bạn muốn cập nhật / cài đặt gói. Trong các môi trường nhúng, cài đặt thường sẽ tương đối tĩnh.

sshfs là một tùy chọn tốt khác, dễ cài đặt hơn nhiều (về cơ bản chỉ yêu cầu SSH là tiêu chuẩn), nhưng nó có nhiều chi phí hơn (chậm hơn).


Điều này sẽ hoạt động về mặt kỹ thuật, ngoại trừ bạn không có toàn quyền kiểm soát khi apt chạy. Nếu bạn sử dụng một cái gì đó như thế này, bạn cần đảm bảo rằng bạn vô hiệu hóa các tác vụ "tự động" như các công việc định kỳ chạy apt-get update.
coteyr
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.