Dpkg

所有軟體包的可排序列表 (dpkg)

  • April 4, 2018

我想在使用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

引用自:https://serverfault.com/questions/905928