Espai en disc a LinuxInformació del sistema Linux

Quins paquets ocupen més espai a Debian i Ubuntu: dpkg-query amb sort i awk



Quan el disc s’omple en un sistema Debian o Ubuntu, una de les primeres coses que convé mirar és quins paquets instal·lats ocupen més espai. Aquesta línia ho fa combinant dpkg-query amb sort, grep, head i awk:

dpkg-query -W -f='${Package}\t${Installed-Size}\n' | sort -k 2 -nr | grep -v deinstall | head -n 25 | awk '{printf "%.3f \t %s\n", $2/(1024), $1}'

Mostra els 25 paquets més grans, de més a menys, amb la mida en MiB. Funciona, però té un petit error: el grep -v deinstall no filtra res. A sota t’expliquem cada peça i et donem una versió corregida.

Pas a pas

PeçaQuè fa
dpkg-query -W -f='${Package}\t${Installed-Size}\n'Treu una línia per paquet amb el nom, un tabulador i la mida instal·lada en KiB
sort -k 2 -nrOrdena per la segona columna (-k 2), com a número (-n) i de gran a petit (-r)
grep -v deinstallVol treure els paquets desinstal·lats… però la paraula deinstall no surt enlloc de la sortida, perquè el format no inclou l’estat
head -n 25Es queda amb les 25 primeres línies
awk '{printf "%.3f \t %s\n", $2/(1024), $1}'Divideix la mida entre 1024 per passar-la a MiB i la mostra amb tres decimals, seguida del nom

Exemple de resultat

En un Raspberry Pi amb Debian 13 i escriptori (primeres 10 línies):

285.215 	 chromium
280.011 	 firefox
149.594 	 mesa-vulkan-drivers
118.711 	 chromium-l10n
117.594 	 libllvm19
116.914 	 firmware-atheros
82.796 	 chromium-common
80.740 	 containerd
68.586 	 docker.io
61.892 	 firmware-mediatek

En un PC amb Ubuntu sovint dominen la llista els navegadors, els controladors gràfics, libllvm i els paquets del nucli (linux-modules-*, linux-firmware). Si hi veus moltes versions del nucli repetides, és senyal que es poden esborrar les antigues amb sudo apt autoremove.

L’error: paquets desinstal·lats que hi surten igualment

dpkg-query -W també mostra els paquets que has desinstal·lat però dels quals queda la configuració (estat rc), i conserven el camp Installed-Size. Per exemple:

$ dpkg-query -W -f='${Package}\t${Installed-Size}\t${db:Status-Status}\n' rpi-connect-lite
rpi-connect-lite	21273	config-files

Aquest paquet ja no és instal·lat, però amb la comanda original sortiria a la llista com si ocupés 20 MiB. Com que l’estat no forma part del format, grep -v deinstall no el pot treure.

Versió corregida

Afegim l’estat al format i ens quedem només amb els paquets realment instal·lats:

dpkg-query -W -f='${Installed-Size}\t${Package}\t${db:Status-Status}\n' | awk '$3=="installed"' | sort -nr | head -n 25 | awk '{printf "%8.1f MiB  %s\n", $1/1024, $2}'
   285.2 MiB  chromium
   280.0 MiB  firefox
   149.6 MiB  mesa-vulkan-drivers
   118.7 MiB  chromium-l10n
   117.6 MiB  libllvm19
   116.9 MiB  firmware-atheros
    82.8 MiB  chromium-common
    80.7 MiB  containerd
    68.6 MiB  docker.io
    61.9 MiB  firmware-mediatek
...

Els canvis:

  • ${db:Status-Status} afegeix una tercera columna amb l’estat (installed, config-files, not-installed…) i awk '$3=="installed"' deixa passar només els instal·lats.
  • La mida va a la primera columna, de manera que n’hi ha prou amb sort -nr.
  • %8.1f MiB alinea els números a la dreta i hi posa la unitat.

I quant ocupen en total tots els paquets instal·lats:

$ dpkg-query -W -f='${Installed-Size}\t${db:Status-Status}\n' | awk '$2=="installed"{s+=$1} END {printf "%.1f GiB\n", s/1024/1024}'
5.0 GiB

Tingues en compte

  • Installed-Size és una estimació que declara el paquet, no l’espai real mesurat al disc. No inclou els fitxers que el programa crea després (memòries cau, bases de dades, registres).
  • No compta Snap ni Flatpak: si fas servir aquests formats, mira snap list --all (les revisions antigues ocupen espai) o flatpak list --columns=application,size.
  • Alternativa ja feta: el paquet debian-goodies inclou dpigs, que fa justament això.
  • Abans d’esborrar un paquet gran, comprova què se n’emportaria amb apt remove --simulate paquet.

Comandes relacionades