Które zainstalowane pakiety oprogramowania wykorzystują najwięcej miejsca na dysku w Debianie?


76

Brakuje miejsca na dysku na mojej partycji głównej, więc chcę usunąć niektóre aplikacje z systemu. Jak mogę sprawdzić, które pakiety oprogramowania wykorzystują najwięcej miejsca na dysku? Czy można to zobaczyć aptitude?

Wiem o ogólnych analizatorach przestrzeni dyskowej, takich jak dflub baobab, ale potrzebuję rozwiązań dla zainstalowanych aplikacji.


Odpowiedzi:


53

Najłatwiej jest uruchomić wajig large. Paczka powinna być na apt-installwynos.

Oto dwa łącza do innych sposobów:

Pamiętaj również, że zainstalowany rozmiar to tylko część miejsca zajmowanego przez pakiety. Skompresowana wersja prawdopodobnie nadal znajduje się w pamięci podręcznej, co również zajmuje trochę miejsca. Możesz je usunąć za pomocą apt-get clean.


4
Polecenie opróżnienia pamięci podręcznej pakietu to apt-get clean. „
Usuwa

97

Najprostszym sposobem (bez instalowania dodatkowych pakietów) jest:

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

która wyświetla paczki w kolejności wielkości, największa paczka na końcu.

Niestety, przynajmniej w niektórych systemach, ta lista zawiera pakiety, które zostały usunięte, ale nie zostały usunięte. Wszystkie takie pakiety można usunąć, uruchamiając:

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

Lub jeśli nie chcesz usuwać odinstalowanych pakietów, możesz użyć tego wariantu, aby odfiltrować z listy pakiety, które nie są w stanie „zainstalowanym”:

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

2
„Zainstalowany rozmiar” to wstępnie oszacowana ilość potrzebnego miejsca zainstalowanemu pakietowi. Obawiam się, że to nie rzeczywisty rozmiar.
Rolf

23

Ponieważ chcesz see which [installed] software packages use the most disk space[,] from aptitude... oczywiście możesz użyć aptitude! za pośrednictwem interfejsu CLI lub awesomeness {Interactive, TUI, non-CLI}. Omówmy najpierw CLI, a następnie TUI. Tak czy inaczej, musisz tylko wiedzieć

  • opcje wiersza polecenia do użycia. Poniższy tekst używa długich opcji (dla ułatwienia przeszukiwania dokumentacji), ale oczywiście dostępne są również krótkie opcje.
  • argument linii poleceń do użycia
  • ciąg formatu wyjściowego do użycia

Najbardziej podstawowym wierszem poleceń, który pokazuje, które zainstalowane pakiety oprogramowania wykorzystują najwięcej miejsca na dysku, jest prawdopodobnie

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

rozwiążmy to:

  • --sortjest porządkiem sortowania paczek i ~installsizeokreśla zasady sortowania paczek .
  • installsizeoznacza „sortuj według (szacowanego) zainstalowanego rozmiaru”, a poprzedni ~oznacza sortuj malejąco (domyślnie dla wszystkich zasad sortowania jest rosnący).
  • --display-formatzmienia <you guessed :->. Ciąg formatu '%p %I' mówi aptitudedo wyjściowego nazwą pakietu, a następnie zainstalowane wielkości.
  • '~i'każe aptitudewyszukiwać tylko zainstalowane pakiety.
  • ... i, chyba że masz bardzo mało zainstalowanych pakietów (moja rodzajowa stacja robocza Debiana ma ponad 2400), chcesz przesłać strumieniowo do headlub lesspliku, a może po prostu, wc -laby zobaczyć, ile wierszy aptitudezostanie zwróconych.

Możesz także chcieć

  1. określ szerokość linii (w znakach), aptitudektóra ma być używana podczas wyświetlania, za pomocą --width <your desired integer value/>. aptitudedomyślnie będzie to, co uważa za szerokość terminala, ale czasami zgaduje źle, a czasem chcesz zapisać do pliku itp.
  2. wyświetl więcej informacji w ciągu formatu lub zmień szerokości pól. Np moje rozszerzone ciąg formatu '%30p %I %r %60d'wyświetlacze

    • %30p : nazwa pakietu w polu szerokość = 30 znaków
    • %I : szacowany rozmiar instalacji
    • %r : „liczba odwrotna zależy”: przybliżona liczba innych zainstalowanych pakietów, które zależą od tego pakietu
    • %60d : krótki opis paczki w polu szerokość = 60 znaków

Zauważ, że jeśli nie widzisz zmian w polu wyjściowym, prawdopodobnie musisz to ustawić --width.

... i możesz zrobić coś takiego w {Interactive, TUI} aptitude. Np. Aby ustawić preferencje formatu wyświetlania,

  • kliknij lub przejdź do Opcje-> Preferencje
  • przewiń do Format wyświetlania dla widoków pakietów
  • dodać %Ido bieżącej wartości w żądanej pozycji

Aby ograniczyć wyszukiwanie do zainstalowanych pakietów w trybie interaktywnym aptitude,

  • naciśnij l(małe litery L)
  • wejść ~iw okno dialogowe

Aby posortować według zainstalowanego rozmiaru w trybie interaktywnym aptitude,

  • naciśnij Shift-S(wielkie litery S)
  • wejść installsizew okno dialogowe

Bibliografia:


Nie jestem pewien, czy istnieje sposób, aby to zrobić, ale dobrze byłoby zawsze drukować w kB, co znacznie ułatwiłoby sortowanie lub inne przetwarzanie końcowe.
derobert

@derobert zastanawiał się, jak mogę kontrolować białe znaki na wyjściu aptitude, również najwyraźniej nie ma sposobu, aby zmienić wyjście wielkości.
Braiam

@Braiam tak, jaka jest łączna ilość miejsca zdobytego po usunięciu *texlive*?
terdon

@terdon mm ... nie aptitude -s remove '?and(texlive,~i)'wystarczy? Możesz także dodać znacznik użytkownika do określonego pakietu, aby móc nim manipulować jako całość (podobnie jak zadania).
Braiam

9

Jeśli nie chcesz instalować Wajiga. Wyobrażam sobie, że każdy ma zainstalowane gadżety debian:

dpigs              - Show which installed packages occupy the most space

Wajig wymaga Pythona 3, który jest kolejnym 40 MB. Debian-goodies wymaga Pythona 2.6+, więc jest dodatkowo 700kb. Ta odpowiedź Josepha jest najlepsza!
Tim O'Brien,

Zauważyłem, że dpigstak naprawdę ma ten sam wynik dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head, co jest pierwszą dziesiątką zainstalowanych pakietów, które zajmują najwięcej miejsca. Mimo dpigsto jest prosty i krótki.
clearkimura

8

Przede wszystkim użyj narzędzia takiego jak baobab( sudo apt-get install baobab), aby pokazać, gdzie jest używane to miejsce:

wprowadź opis zdjęcia tutaj

To da ci ładny przegląd graficzny i pomoże ci zawęzić to, co zajmuje twoją przestrzeń. Możesz również uzyskać te informacje w wierszu poleceń, używając du:

$ sudo du -ch /

Przekaż to sort(zakładając sort, że GNU , co powinno być w Debianie), aby posortować według rozmiaru katalogu:

$ sudo du -ch / | sort -h

W następnym kroku możesz zobaczyć, ile miejsca zajmuje dany pakiet za pomocą tego polecenia:

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

Na przykład w moim systemie usunięcie wszystkich texlivepakietów zwolni 1 502 MB:

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

Wreszcie możesz uzyskać te informacje dla wszystkich zainstalowanych pakietów za pomocą tego polecenia:

$ 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

Możesz użyć pakietu wajig i polecenia

wajig large

Pomoc wyjaśnia, co to robi.

wajig large -h

usage: wajig large [-h]

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

Zobacz także stronę projektu .


3

aby dodać do innych odpowiedzi, jeśli podoba Ci się wiersz poleceń, możesz użyć starej dobrej 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

Prawdopodobnie możesz zwolnić miejsce za pomocą 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

Wreszcie możesz prawdopodobnie pozbyć się ikon i czcionek, które czasami mogą zająć dużo miejsca. Zobacz szczegóły na tej stronie

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

(przykłady wyodrębnione z ownyourbits)


dpkg-reconfigure localepurgenarzeka, że localepurgepakiet nie jest dostępny.
Rolf

2

Dodając jeszcze kilka narzędzi do listy, zawsze używałem debfosteri deborphanna moich systemach. Są najbardziej przydatne do polowania na stare zależności, które krążą po aktualizacjach.

apt-get autoremovejest świetny, ale nie dostaje wszystkiego, a ponieważ jest zgodny ze znakami instalacyjnymi, nie zawsze wie, co chcesz zachować. Używanie apt-markpozwala jednak do pewnego stopnia pokierować nim.

Sprawdź także: https://wiki.debian.org/ReduceDebian


0

Chociaż jest to niezła kolekcja narzędzi, do której dodałbym Kel / QT Filelight, który jest podobny do innych narzędzi wykorzystujących miejsce na dysku gui, nie jest to dosłowna odpowiedź na tytuł tematu.

Jeśli weźmiesz pytanie tego wątku dosłownie, to znaczy, jakie są największe pakiety w twoim systemie, z reguły są to:

Pakiet pakietów libreoffice, który nie jest pojedynczym pakietem, ale jest naprawdę duży.

Jądro linuksa i powiązane z nim pakiety nagłówków są moim zdaniem na drugim miejscu, a jeśli masz zainstalowanych wiele jąder, które mają większość systemów, każdy z nich jest w pobliżu, myślę, że 135 MB miejsca na dysku, z grubsza, z każdym rokiem się powiększa, ale jest tak duże . Jeśli użyjesz niewolnych sterowników wideo, będą również powiązane pakiety / pliki sterowników. Zauważ, że podobnie jak w przypadku libreoffice, każde jądro może faktycznie składać się z 2 lub 3 pakietów, obrazu, nagłówka i sterowników, więc dosłowne obliczenie wielkości pakietu nie jest w rzeczywistości tak dokładne, z wyjątkiem tego, aby uzyskać ogólny sens.

Po nich nie ma ogromnej liczby ogromnych pakietów w puli pakietów Debiana, o których jestem świadomy.

Zauważyłem, że gdy partycja root zaczyna być wystarczająco duża, aby zacząć zastanawiać się, jak pozbyć się pakietów, aby ją zmniejszyć, zazwyczaj nadszedł czas, aby przenieść / zmienić rozmiar na większą partycję root.

apt-get clean oczywiście jest pierwszą rzeczą do uruchomienia, aby pozbyć się wszystkich buforowanych plików .deb, ale kiedy to usuniesz, i powiedzmy tylko 2 jądra, jeśli nadal masz za mało miejsca, to więcej praktyczne jest zwiększenie rozmiaru partycji, ponieważ porządki itp. to po prostu czerwone flagi, których używasz blisko miejsca na partycji root, co może być prawdziwym problemem, jeśli apt nie ma wystarczającej ilości miejsca w / var, aby faktycznie pobrać i wyodrębnić pakiety dla Aktualizacja. Oczyszczanie przez operacje usuwania resztkowych plików konfiguracyjnych z usuniętych pakietów nie przyniesie ci nic dobrego w zakresie odzyskiwania miejsca na dysku, ponieważ są małe, ale dobrze jest od czasu do czasu po prostu wyczyścić cruft, ale nie powinno mylę się z faktycznym odzyskaniem znaczącego miejsca na dysku.

apt-get auto-remove też nie jest złe, ale pamiętaj, że czasami źle się dzieje, gdy pakiet jest usuwany, więc powinieneś dokładnie sprawdzić tę listę, zanim pozwolisz aptowi usunąć rzeczy. Technicznie lepiej wyczyścić tę listę, w ten sposób pozbywając się plików konfiguracyjnych, jednocześnie usuwając lub automatycznie usuwając, jeśli wierzę, pozostawię je na swoim miejscu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.