Những gói phần mềm được cài đặt nào sử dụng nhiều dung lượng đĩa nhất trên Debian?


76

Dung lượng ổ đĩa trên phân vùng gốc của tôi sắp hết, vì vậy tôi muốn xóa một số ứng dụng khỏi hệ thống. Làm cách nào để xem gói phần mềm nào sử dụng nhiều dung lượng đĩa nhất? Có thể xem từ đó aptitude?

Tôi biết về các máy phân tích không gian đĩa chung như dfhoặc baobab, nhưng tôi cần các giải pháp cho các ứng dụng đã cài đặt.


Câu trả lời:


53

Dễ nhất là chạy wajig large. Các gói nên là một apt-install-away.

Đây là hai liên kết cho các cách khác để làm điều đó:

Cũng nên nhớ rằng kích thước được cài đặt chỉ là một phần của không gian được chiếm bởi các gói. Phiên bản nén có lẽ vẫn còn trong bộ đệm và cũng chiếm một số dung lượng. Bạn có thể loại bỏ những người có apt-get clean.


4
Lệnh để làm trống bộ đệm gói là apt-get clean. “Gạt bỏ cái kho địa phương các tập tin gói lấy ra” - người đàn ông apt-get
manatwork

97

Cách dễ nhất (không cần cài đặt thêm gói) là:

dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n

trong đó hiển thị các gói theo thứ tự kích thước, gói lớn nhất cuối cùng.

Thật không may trên ít nhất một số hệ thống, danh sách này bao gồm các gói đã bị xóa nhưng không bị xóa. Tất cả các gói như vậy có thể được thanh lọc bằng cách chạy:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge

Hoặc nếu bạn không muốn xóa các gói đã gỡ cài đặt, bạn có thể sử dụng biến thể này để lọc các gói không ở trạng thái 'đã cài đặt' khỏi danh sách:

dpkg-query -Wf '${db:Status-Status} ${Installed-Size}\t${Package}\n' | sed -ne 's/^installed //p'|sort -n

2
"Kích cỡ đã cài đặt" là ước tính được ưu tiên về dung lượng mà gói cài đặt sẽ cần. Đó không phải là kích thước thực tế, tôi sợ.
Rolf

23

Vì bạn muốn see which [installed] software packages use the most disk space[,] from aptitude... tất nhiên bạn có thể sử dụng aptitude! thông qua CLI hoặc {tương tác, TUI, không CLI} của nó. Trước tiên hãy thảo luận về CLI, sau đó là TUI. Dù bằng cách nào, bạn chỉ cần biết

  • tùy chọn dòng lệnh để sử dụng. Văn bản sau sử dụng các tùy chọn dài (để dễ tìm kiếm tài liệu), nhưng tất nhiên các tùy chọn ngắn cũng có sẵn.
  • đối số dòng lệnh để sử dụng
  • chuỗi định dạng đầu ra để sử dụng

Dòng lệnh cơ bản nhất để hiển thị gói phần mềm đã cài đặt nào sử dụng nhiều dung lượng đĩa nhất có lẽ là

aptitude search --sort '~installsize' --display-format '%p %I' '~i' | head

Vì vậy, hãy phá vỡ nó:

  • --sortlà thứ tự sắp xếp gói và ~installsizechỉ định chính sách sắp xếp gói .
  • installsizecó nghĩa là 'sắp xếp theo (ước tính) kích thước đã cài đặt' và trước đó ~có nghĩa là sắp xếp giảm dần (vì mặc định cho tất cả các chính sách sắp xếp là tăng dần).
  • --display-formatthay đổi <you guessed :->. Chuỗi định dạng '%p %I' cho biết aptitudetên gói đầu ra, sau đó cài đặt kích thước.
  • '~i'nói aptitudeđể tìm kiếm chỉ gói cài đặt.
  • ... và, trừ khi bạn có rất ít các gói cài đặt (máy trạm Debian kinda-generic của tôi có hơn 2400), bạn muốn ống để headhoặc lesshoặc một tập tin, hoặc có thể chỉ là wc -lđể xem có bao nhiêu dòng aptitudesẽ được trở về.

Bạn cũng có thể muốn

  1. chỉ định chiều rộng dòng (tính bằng ký tự) aptitudeđể sử dụng khi hiển thị, với --width <your desired integer value/>. aptitudesẽ mặc định với chiều rộng của thiết bị đầu cuối của bạn, nhưng đôi khi nó đoán sai và đôi khi bạn muốn ghi vào một tệp, v.v.
  2. hiển thị thêm thông tin trong chuỗi định dạng của bạn hoặc thay đổi độ rộng trường. Ví dụ: chuỗi định dạng nâng cao của tôi '%30p %I %r %60d'hiển thị

    • %30p : tên gói trong trường width = 30 char
    • %I : kích thước cài đặt ước tính
    • %r : 'đảo ngược số lượng phụ thuộc': số lượng xấp xỉ của các gói được cài đặt khác phụ thuộc vào gói này
    • %60d : mô tả ngắn của gói trong trường width = 60 char

Lưu ý rằng, nếu bạn không thấy các thay đổi trong trường đầu ra của mình, có lẽ bạn cần phải đặt --width.

... Và bạn cũng có thể thực hiện loại điều này trong {tương tác, TUI} aptitude. Ví dụ: để đặt tùy chọn định dạng hiển thị,

  • nhấp hoặc điều hướng đến Tùy chọn-> Tùy chọn
  • cuộn đến định dạng hiển thị để xem gói
  • thêm %Ivào giá trị hiện tại ở vị trí mong muốn

Để giới hạn tìm kiếm cho các gói đã cài đặt trong tương tác aptitude,

  • nhấn l(chữ thường L)
  • nhập ~ivào hộp thoại

Để sắp xếp kích thước được cài đặt trong tương tác aptitude,

  • nhấn Shift-S(viết hoa S)
  • nhập installsizevào hộp thoại

Người giới thiệu:


Không chắc chắn nếu có một cách để làm điều đó, nhưng thật tuyệt khi luôn in kích thước bằng kB, điều đó sẽ giúp việc sắp xếp hoặc xử lý hậu kỳ dễ dàng hơn nhiều.
derobert

@derobert đang tìm cách làm thế nào tôi có thể kiểm soát khoảng trắng trong đầu ra của năng khiếu, ngoài ra, rõ ràng không có cách nào để thay đổi đầu ra của kích thước.
Braiam

@Braiam có, tổng số dung lượng tôi đạt được nếu tôi xóa là *texlive*bao nhiêu?
terdon

@terdon mm ... sẽ không aptitude -s remove '?and(texlive,~i)'đủ? Ngoài ra, bạn có thể thêm thẻ người dùng vào gói nhất định để bạn có thể thao tác toàn bộ chúng (như các tác vụ).
Braiam

9

Trong trường hợp bạn không muốn cài đặt wajig. Tôi tưởng tượng tất cả mọi người đã cài đặt debian-goodies:

dpigs              - Show which installed packages occupy the most space

wajig yêu cầu python 3 là 40mb. debian-goodies yêu cầu python 2.6+ cũng vậy, thêm 700kb. Câu trả lời này hay của JosephH là tốt nhất!
Tim O'Brien

Tôi nhận thấy rằng dpigsthực sự có kết quả tương tự dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head, đó là mười gói cài đặt hàng đầu chiếm nhiều không gian nhất. Tuy nhiên, dpigslà đơn giản và ngắn.
Clearkimura

8

Trước hết, sử dụng một công cụ như baobab( sudo apt-get install baobab) để cho bạn thấy nơi không gian đang được sử dụng:

nhập mô tả hình ảnh ở đây

Điều đó sẽ cung cấp cho bạn một tổng quan đồ họa đẹp và giúp bạn thu hẹp những gì đang chiếm không gian của bạn. Bạn cũng có thể lấy thông tin này trên dòng lệnh bằng cách sử dụng du:

$ sudo du -ch /

Vượt qua điều này sort(giả sử GNU sort, whicih sẽ là trường hợp trong Debian) để sắp xếp theo kích thước thư mục:

$ sudo du -ch / | sort -h

Bước tiếp theo, bạn có thể thấy một gói cụ thể đang sử dụng bao nhiêu dung lượng với lệnh này:

$ sudo apt-get --assume-no --purge remove "PACKAGE_NAME" | grep "be freed" | 
   awk '{print $4, $5}' 

Trên hệ thống của tôi, ví dụ, xóa tất cả texlivecác gói sẽ miễn phí 1,502 MB:

$ sudo apt-get --assume-no --purge remove "texlive*" | grep "be freed" | 
   awk '{print $4, $5}' 
1,502 MB

Cuối cùng, bạn có thể lấy thông tin này cho tất cả các gói đã cài đặt bằng lệnh này:

$ for i in $(dpkg -l | awk '($1=="ii"){print $2}'); do  
    echo -e "$i\t"$(sudo apt-get --assume-no --purge remove "$i" | 
                    grep "be freed" | awk '{print $4, $5}'); 
  done

3

Bạn có thể sử dụng gói wajig và lệnh

wajig large

Sự giúp đỡ giải thích những gì nó làm.

wajig large -h

usage: wajig large [-h]

List size of all large (>10MB) installed packages

Xem thêm trang dự án .


3

để thêm vào các câu trả lời khác, nếu bạn thích dòng lệnh, bạn có thể sử dụng tốt durep

# durep -td 1 /etc                         # or -td 2
[ /etc   319.4K (60 files, 43 dirs) ]
  90.2K [########                      ]  28.26% apache2/
  27.5K [##                            ]   8.62% apt/
  23.7K [##                            ]   7.43% mime.types
  19.7K [#                             ]   6.18% cron.daily/
  18.7K [#                             ]   5.87% services
  18.0K [#                             ]   5.64% security/
  14.7K [#                             ]   4.61% init.d/
  13.2K [#                             ]   4.13% ssl/
  11.1K [#                             ]   3.48% ld.so.cache
   9.0K [                              ]   2.81% locale.gen
   7.8K [                              ]   2.43% pam.d/
   4.5K [                              ]   1.42% default/
   4.3K [                              ]   1.35% skel/
   2.9K [                              ]   0.92% locale.alias

Bạn có thể có thể giải phóng không gian bằng cách sử dụng localepurge

# dpkg-reconfigure localepurge
# localepurge
localepurge: Disk space freed in /usr/share/locale: 26160 KiB
localepurge: Disk space freed in /usr/share/man: 1304 KiB

Total disk space freed by localepurge: 27464 KiB

Cuối cùng, bạn có thể có thể thoát khỏi các biểu tượng và phông chữ đôi khi có thể chiếm nhiều không gian. Xem chi tiết tại trang web này

https://ownyourbits.com/2017/02/18/squeeze-disk-space-on-a-debian-system/

(ví dụ trích xuất từ ​​ownyourbits)


dpkg-reconfigure localepurgephàn nàn về localepurgegói không có sẵn.
Rolf

2

Thêm một vài công cụ nữa vào danh sách, tôi đã luôn sử dụng debfosterdeborphantrên các hệ thống của mình. Chúng hữu ích nhất để săn các phụ thuộc cũ đang treo xung quanh sau khi nâng cấp.

apt-get autoremovelà tuyệt vời, nhưng không có được mọi thứ và vì nó tuân theo các dấu cài đặt, nên nó không hoàn toàn luôn biết bạn muốn giữ gì. Sử dụng apt-markcho phép bạn hướng nó đến một mức độ nào đó, mặc dù.

Kiểm tra thêm: https://wiki.debian.org/ReduceDebian


0

Mặc dù đây là một bộ công cụ tuyệt vời, nhưng tôi sẽ thêm KDE / QT Filelight, tương tự như các công cụ sử dụng không gian đĩa gui khác, nó không phải là câu trả lời chính xác cho tiêu đề chủ đề.

Nếu bạn đặt câu hỏi về chủ đề này theo nghĩa đen, nghĩa là các gói lớn nhất trong hệ thống của bạn, theo quy định, chúng là:

Bộ gói libreoffice, không phải là một gói duy nhất, nhưng nó thực sự lớn.

Hạt nhân linux và các gói tiêu đề liên quan đến tôi nghĩ thứ hai, và nếu bạn đã cài đặt nhiều hạt nhân, mà hầu hết các hệ thống có xu hướng có, mỗi cái xung quanh tôi nghĩ rằng không gian đĩa 135 mB, đại khái, sẽ lớn hơn mỗi năm, nhưng nó lớn hơn . Nếu bạn sử dụng trình điều khiển video không miễn phí thì cũng sẽ có các gói / tệp trình điều khiển được liên kết. Lưu ý rằng như với libreoffice, mỗi hạt nhân thực sự có thể được tạo thành từ 2 hoặc 3 gói, hình ảnh, tiêu đề và gói trình điều khiển, do đó, số lượng kích thước mỗi gói không thực sự chính xác ngoại trừ có ý nghĩa thô thiển.

Sau đó, không có một số lượng lớn các gói lớn trong nhóm gói của Debian mà tôi biết.

Tôi thấy rằng một khi phân vùng gốc bắt đầu đủ lớn đến nơi bạn bắt đầu tự hỏi làm thế nào để loại bỏ các gói để thu nhỏ nó, thì thường đến lúc chuyển / thay đổi kích thước sang phân vùng gốc lớn hơn.

Tất nhiên, apt-get clean là điều đầu tiên cần chạy, để loại bỏ tất cả các tệp .deb được lưu trong bộ nhớ cache, nhưng một khi bạn xóa nó, và tất cả chỉ nói 2 hạt nhân, nếu bạn vẫn bị kẹt với không đủ chỗ, thì còn hơn thế nữa Thực tế để tăng kích thước phân vùng vì dọn dẹp, v.v. chỉ là những lá cờ đỏ bạn đang chạy gần hết không gian phân vùng gốc, đây có thể là một vấn đề thực sự nếu apt không có đủ chỗ trong / var để thực sự tải xuống và giải nén các gói cho một nâng cấp. Dọn dẹp bằng các hành động thanh lọc các tệp cấu hình còn sót lại từ các gói bị loại bỏ sẽ không giúp ích gì cho bạn trong việc lấy lại dung lượng ổ đĩa vì chúng rất nhỏ, nhưng thật tốt khi thực hiện ngay bây giờ và sau đó chỉ để dọn sạch hành trình, nhưng không nên T bị nhầm lẫn thực sự lấy lại bất kỳ không gian đĩa có ý nghĩa.

apt-get auto-remove cũng không tệ, nhưng lưu ý rằng đôi khi sai về gói bị xóa, vì vậy bạn muốn kiểm tra danh sách đó một cách cẩn thận trước khi bạn để apt gỡ bỏ nội dung. Về mặt kỹ thuật, tốt hơn hết là xóa danh sách đó, bằng cách đó bạn cũng loại bỏ được các tệp cấu hình, đồng thời xóa hoặc tự động xóa, tôi tin rằng sẽ giữ chúng đúng chỗ.

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.