Package-Management
dpkg-query 僅顯示已安裝的軟體包而不是“rc”
我在用:
dpkg-query -W -f='${package}\t${version}\t${architecture}\n'
列出已安裝的軟體包,但它還顯示標記為要刪除的軟體包,即狀態
rc
。如何僅獲取已安裝的軟體包?
dpkg-query
不支持過濾狀態,但它可以輸出包的狀態,這允許它們被過濾:dpkg-query -W -f='${Status}\t${package}\t${version}\t${architecture}\n' | grep "^install ok installed"
dpkg -l
是基於的dpkg-query
,因此也不能過濾狀態本身。
aptitude
提供更強大的搜尋選項,並可用於此;請參閱獲取與模式匹配的已安裝軟體包列表的正確方法?詳情。以下命令將顯示所有已安裝包(且僅已安裝包)的包名稱、版本和體系結構:aptitude search "~i" -F "%p%v#%E"
請注意,如果包名與系統的主要架構不匹配,則包名將包含架構;例如
zlib1g 1:1.2.11.dfsg-1 amd64 zlib1g:i386 1:1.2.11.dfsg-1 i386
您使用的命令僅指定包、版本號和體系結構,無論狀態如何,都會列印出來。
如果您只想顯示已安裝的軟體包:
dpkg --list | grep ^ii
狀態將位於第一列,
ii
表示預計將安裝並安裝。進入的管道grep ^ii
僅顯示具有該狀態的包。如果您只想安裝 amd64 架構的軟體包:
dpkg --list | grep "^ii.*amd64"
那隻會列印包含
ii
狀態和amd64
.要做同樣的事情
awk
,只列印第一列有ii
和第四列有的行amd64
:dpkg --list | awk '$1=="ii" && $4=="amd64"'