如何列出所有安装的具有特定版本号的软件包?


27

我想列出所有已安装的软件包,以及系统上的特定版本号。我已签出dpkg --get-selections如何列出所有已安装的软件包),但没有显示我需要的东西。例如:

$ dpkg --get-selections apache2
apache2                                         install

显示已安装apache2,但未安装该版本。我最近做了apt-get upgrade这样apache2.2.22-1 应该是安装版(http://packages.ubuntu.com/precise-updates/apache2.2-common),但我怎么能证明?

谢谢!

Answers:


35

使用dpkg -l代替。

例:

dpkg -l | grep '^ii' | grep skype

输出此:

alaa @ aa-lu:〜$ dpkg -l | grep'^ ii'| grep skype
ii Skype 4.2.0.11-0ubuntu0.12.04.2 i386客户端(适用于Skype VOIP)

如果只想提取名称和版本,则可以执行以下操作:

dpkg -l | grep '^ii' | grep skype | awk '{print $2 "\t" $3}'

它将仅显示上述输出中的第二列和第三列,如下所示:

alaa @ aa-lu:〜$ dpkg -l | grep'^ ii'| grep skype | awk'{print $ 2“ \ t” $ 3}'
skype 4.2.0.11-0ubuntu0.12.04.2

当然,如果要列出所有已安装的软件包及其版本,而不仅是Skype,请删除该grep skype部分以执行以下命令:

dpkg -l | grep '^ii' | awk '{print $2 "\t" $3}'

我注意到dpkg -l会截断版本号(如果长度超过21个字符),并且像所有软件包版本一样,它们的长度都超过22个字符。:(
ThorSummoner 2015年

12

使用

dpkg-query --show apache2

获取软件包的版本号apache2

dpkg-query --show 

获取所有已安装软件包的版本号


1
您的解决方案给我的包裹比给我的包裹多20%dpkg -l | grep '^ii' | awk '{print $2 "\t" $3}'。你知道有什么区别吗?
Thomas Jensen 2015年

3
@Thomas Jensen:感谢您发现这一点。dpkg-query --show其实不显示已安装的软件包,但不是没有安装的。也就是说,它显示了例如半安装的软件包或具有剩余配置文件的软件包。
Florian Diesch 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.