Dpkg
所有軟體包的可排序列表 (dpkg)
我想在使用
dpkg
.到目前為止,我使用
dpkg -l
.但它有一個缺點:對結果進行排序沒有意義。
頭:
root@aptguettler:~# LANG=C dpkg-query -l| sort | head +++-===========================================================-=================================================-============-================================================================================ Desired=Unknown/Install/Remove/Purge/Hold |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ii a11y-profile-manager-indicator 0.1.10-0ubuntu3 amd64 Accessibility Profile Manager - Unity desktop indicator
尾巴:
root@aptguettler:~# LANG=C dpkg-query -l| sort | tail rc texlive-publishers-doc 2015.20160320-1 all TeX Live: Documentation files for texlive-publishers rc texlive-science 2015.20160320-1 all TeX Live: Natural and computer sciences rc texlive-science-doc 2015.20160320-1 all TeX Live: Documentation files for texlive-science rc tpconfig 3.1.3-15 amd64 touchpad device configuration utility rc ttf-indic-fonts-core 1:0.5.14ubuntu1 all Core collection of free fonts for languages of India rc ttf-punjabi-fonts 1:0.5.14ubuntu1 all Free TrueType fonts for the Punjabi language rc unity-lens-friends 0.1.3+14.04.20140317-0ubuntu1 amd64 Friends scope for unity rc webaccounts-extension-common 0.5-0ubuntu2.14.04.1 amd64 Ubuntu Online Accounts browser extension - common files rc xfonts-mathml 6ubuntu1 all Type1 Symbol font for MathML | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
我通過
etckeeper
(Related question with answer log hwinfo output with etckeeper)保留了這個輸出的歷史。以下是我想改進的地方:
- ascii-art 線條不好。應該被刪除。
- 前兩個字元(例如
ii
)應刪除或出現在末尾。基於 rpm 的系統
rpm -qa
完全符合我的需要。
嘗試
dpkg --get-selections | grep -v deinstall
如果您需要輸出中數據包的確切版本,您可以執行以下操作:
dpkg -l | grep '^ii' | awk '{print $2 "\t" $3}'
這僅列印第 2 列和第 3 列。這也僅列出已安裝的軟體包,沒有解除安裝或其他。
編輯:另一個選項是 dpkg-query:
dpkg-query --show --showformat='${Package} ${Version} ${Architecture} ${db:Status-Abbrev} \n'
其中–showformat(或-f)定義了你想要顯示的列,在這種情況下,包名稱、版本和架構以及最後的簡短狀態(例如“ii”和“rc”),“\n”是換行符。
順便說一句,“ii”定義了已安裝的包,“rc”是解除安裝的包,這就是我使用 grep 和 awk 過濾掉解除安裝的包的原因。
如果您喜歡,也可以像這樣添加列寬:
dpkg-query --show --showformat='${Package;-50} ${Version;-40} ${Architecture;-5} ${db:Status-Abbrev} \n'
負列寬意味著方向是左,正意味著右。
但要小心,因為如果寬度小於包名稱中的字元數,包名稱將被縮短。
我不確定您需要該列表的目的是什麼。如果您只想擁有一個可讀性好的列表,那麼 awk 或其他命令沒有任何問題,如果您想在另一台機器上安裝軟體的“備份”,
dpkg --get-selections
(沒有任何管道)是去,見https://wiki.debian.org/ListInstalledPackages