在本教程中,我將帶您完成在 Ubuntu/Debian Linux 系統上顯示已安裝包大小的步驟。 這在進行空間審計以嘗試使用佔用系統上的大空間來查找包時非常重要。
Ubuntu / Debian dpkg-查詢 和 dpkg 包管理器提供了一些可用於此任務的命令行選項,在一些 Linux 正則表達式工具的幫助下,如 awk,sed,排序,tr 等等。
使用 Wajig 顯示已安裝的包大小
另一個可以用來列出包大小空間的程序是 Wajig。 Wajig 是 Debian / Ubuntu 軟件包的簡化命令行管理員。 可以使用以下命令安裝此工具:
$ sudo apt-get install wajig
要按降序列出最大的已安裝軟件包,請使用以下命令:
# wajig large
Package Size (KB) Status
=================================-==========-============
libc6 10,508 installed
grub-common 11,484 installed
linux-headers-3.13.0-32-generic 12,999 installed
linux-headers-3.13.0-143-generic 13,216 installed
iso-codes 15,207 installed
perl-modules 16,134 installed
perl 17,320 installed
vim-runtime 25,186 installed
linux-image-3.13.0-32-generic 41,029 installed
linux-image-3.13.0-143-generic 43,054 installed
linux-headers-3.13.0-32 61,797 installed
linux-headers-3.13.0-143 62,064 installed
linux-firmware 124,150 installed
linux-image-extra-3.13.0-32-generic 148,283 installed
linux-image-extra-3.13.0-143-generic 150,240 installed
從上面的輸出中,在我的 Ubuntu 服務器上使用最大空間的包是 Linux-image-extra-3.13.0-143-generic 大小為 150Mb。
使用 dpkg-query 顯示已安裝的包大小
您還可以使用 dpkg-query 命令列出按大小過濾的已安裝包。 dpkg-query 是一種用於顯示有關 dpkg 數據庫中列出的軟件包的信息的工具。 你必須使用選項 -Wf
並將輸出通過管道輸送到 sort 命令以按順序對輸出進行排序。
# dpkg-query -Wf '${Installed-Size}t${Package}n' | sort -n | tail -n 10
23508 git
26870 vim-runtime
30094 libicu55
32502 cassandra
65367 linux-image-4.4.0-87-generic
68901 linux-headers-4.4.0-87
75176 snapd
97190 openjdk-8-jre-headless
148663 linux-image-extra-4.4.0-87-generic
207968 linux-firmware
您應該注意到此輸出類似於 wajig 命令的輸出。 列出的最後一個文件是最大的。
使用 dpigs 顯示已安裝的包大小
Dpigs 是一個 Debian 工具,用於顯示哪些已安裝的軟件包在系統上佔用的空間最多。 dpigs 按大小對已安裝的包進行排序並輸出最大的包,默認顯示的包數為 10.
這個工具默認沒有安裝,在Ubuntu/Debian系統上使用命令安裝。
# apt-get install debian-goodies
運行:
# dpigs
150240 linux-image-extra-3.13.0-143-generic
148283 linux-image-extra-3.13.0-32-generic
124150 linux-firmware
93841 libboost1.54-dev
62064 linux-headers-3.13.0-143
61797 linux-headers-3.13.0-32
54539 openjdk-7-jre-headless
43054 linux-image-3.13.0-143-generic
41029 linux-image-3.13.0-32-generic
39210 python-neutron
使用 /var/lib/dpkg/status 和 awk 顯示已安裝的包大小
您還可以使用 awk 從中讀取數據 /var/lib/dpkg/狀態 並過濾它以獲得系統上安裝的每個包的大小。 為此,請使用以下命令。
# awk '{if ($1 ~ /Package/) p = $2; if ($1 ~ /Installed/) printf("%9d %sn", $2, p)}' /var/lib/dpkg/status
您可以通過管道將輸出進一步過濾到 種類 和 尾巴|頭 命令。
# awk '{if ($1 ~ /Package/) p = $2; if ($1 ~ /Installed/) printf("%9d %sn", $2, p)}' /var/lib/dpkg/status | sort -n | tail
上面的命令將按升序顯示包裹尺寸 – 從最小到最大。
您還可以使用其他命令,但都執行相同的操作。 這應該為您提供足夠的信息來開始。 您可以編寫自己的函數/別名或 bash 腳本使用相同的命令快速執行和參考。