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

use*_*697 27 package-management dpkg

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

$ dpkg --get-selections apache2
apache2                                         install
Run Code Online (Sandbox Code Playgroud)

显示已安装 apache2,但未安装版本。我最近做了一个apt-get upgradeapache2.2.22-1应该安装的版本(http://packages.ubuntu.com/precise-updates/apache2.2-common),但我怎么能显示呢?

谢谢!

Ala*_*Ali 35

使用dpkg -l来代替。

例子:

dpkg -l | grep '^ii' | grep skype
Run Code Online (Sandbox Code Playgroud)

输出这个:

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}'
Run Code Online (Sandbox Code Playgroud)

它只会打印上述输出中的第二列和第三列,如下所示:

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}'
Run Code Online (Sandbox Code Playgroud)


Flo*_*sch 13

dpkg-query --show apache2
Run Code Online (Sandbox Code Playgroud)

获取包的版本号apache2

dpkg-query --show 
Run Code Online (Sandbox Code Playgroud)

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

  • @Thomas Jensen:感谢您发现这一点。`dpkg-query --show` 实际上不显示*已安装*的包,而是*未安装*的包。也就是说,它也显示了例如半安装的包或带有剩余配置文件的包。 (3认同)