如何知道特定软件包是否安装在 ubuntu 上?

Boy*_*yka 29 package-management installed-programs 14.04

几个月前我在我的 Ubuntu 14.04 上安装了一个 JDK 包,但我不知道如何检查它是哪个版本。

那么如何查找 Ubuntu 上是否安装了软件包以及安装了哪个版本?

Eli*_*gan 32

TL;DR:对于| grep具有紧凑输出的简单命令 (no ),您可以使用

  • apt list package,这通常是您想要的(与 相比),apt-cache policy package
  • dpkg-query -W package作为.dpkg -l package

apt(对命令)是在Ubuntu 14.04及更高版本。apt list package

apt list 告诉您您的软件包是否已安装。

apt list package显示已安装或将要安装的软件包的版本,以及提供该软件包的存储库组件的名称和版本。安装软件包后, 会[installed]突出显示在行尾。

ek@Io:~$ apt list firefox
Listing... Done
firefox/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 amd64 [installed]
N: There is 1 additional version. Please use the '-a' switch to see it
Run Code Online (Sandbox Code Playgroud)

除了[installed]末尾之外,now在存储库组件列表中表示当前已安装该包。这是apt list的输出看起来像一个包没有安装:

ek@Io:~$ apt list dolphin
Listing... Done
dolphin/xenial 4:15.12.3-0ubuntu1 amd64
Run Code Online (Sandbox Code Playgroud)

有时您会看到[installed,automatic],这意味着该软件包是作为其他软件包的依赖项安装的。由于它是自动安装的而不是手动安装的,因此可以在删除所有依赖于它的包之后将其删除(这就是该apt autoremove命令的作用)。

ek@Io:~$ apt list zeitgeist-core
Listing... Done
zeitgeist-core/xenial,now 0.9.16-0ubuntu4 amd64 [installed,automatic]
Run Code Online (Sandbox Code Playgroud)

您可以使用apt list --installed显示已安装的软件包。

看到的一个优点的列表即使未安装该软件包是,你知道有你指定的名称的包。否则,如果您不小心拼错了,您可能会认为您所指的软件包没有安装。

ek@Io:~$ apt list firefoz
Listing... Done
Run Code Online (Sandbox Code Playgroud)

但是,如果您确实希望在没有包的情况下不显示任何内容,请使用:apt list --installed package

ek@Io:~$ apt list --installed firefox dolphin
Listing... Done
firefox/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 amd64 [installed]
N: There is 1 additional version. Please use the '-a' switch to see it
Run Code Online (Sandbox Code Playgroud)

Globbing 可帮助您列出您不知道或不想键入名称的包。

正如您刚刚看到的,您可以将多个包名传递给apt list. 您可以做的另一件事是传递一个glob,其中 a*表示零个或多个字符并?表示一个字符。有几件事情要记住:

  • 壳牌扩展到水珠文件名,但是这是不是你想在这里发生的事情,所以你应该总是给他们(在' '" ",或用\),当你把它们传递给apt list
  • 尽管 glob 和正则表达式都支持字符类(例如,[csz]shmatches cshssh zsh),但它们并不相同,*并且在 glob 中的? 含义与在正则表达式中的含义不同。这很重要,因为用于获取有关包的信息的其他一些命令(例如)使用正则表达式而不是 globs。在依赖任一功能之前,您应该检查命令是否使用 glob 或正则表达式。apt-cache policy package
  • 在实际添加和删除包时,不得将 glob 与正则表达式混淆。 apt list 'wine*'列出名称以 开头的所有包wine,但apt remove 'wine*'删除名称中任何位置带有win(甚至没有e)的所有包!

例如,假设我知道我感兴趣的包soap在某处的名称中以 结尾cil,但我只记得这些:

ek@Io:~$ apt list '*soap*cil'
Listing... Done
libmono-system-runtime-serialization-formatters-soap4.0-cil/xenial,xenial,now 4.2.1.102+dfsg2-7ubuntu4 all [installed,automatic]
Run Code Online (Sandbox Code Playgroud)

当你通配符也是得心应手知道你感兴趣的包的全名,但不想输入。或者当您对匹配 glob 的多个包感兴趣时:

ek@Io:~$ apt list 'firefox-locale-*'
Listing... Done
firefox-locale-af/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-an/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ar/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-as/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ast/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-az/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-be/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-bg/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-bn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-br/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-bs/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ca/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-cak/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-cs/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-csb/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-cy/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-da/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-de/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-el/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-en/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 amd64 [installed]
firefox-locale-eo/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-es/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-et/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-eu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-fa/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-fi/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-fr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-fy/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ga/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-gd/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-gl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-gn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-gu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-he/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hi/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hsb/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-hy/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-id/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-is/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-it/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ja/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ka/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-kab/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-kk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-km/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-kn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ko/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ku/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-lg/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-lt/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-lv/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-mai/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-mk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ml/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-mn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-mr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ms/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-nb/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-nl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-nn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-nso/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-oc/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-or/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-pa/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-pl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-pt/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ro/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ru/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-si/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sq/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sv/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-sw/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-ta/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-te/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-th/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-tr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-uk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-uz/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-vi/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-xh/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-zh-hans/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-zh-hant/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
firefox-locale-zu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 amd64
Run Code Online (Sandbox Code Playgroud)

这是很多包。(虽然没有我运行的那么多apt list '*',它列出了所有可用的包!)幸运的是 globs 也可以使用--installed

ek@Io:~$ apt list --installed 'firefox-locale-*'
Listing... Done
firefox-locale-en/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 amd64 [installed]
N: There is 1 additional version. Please use the '-a' switch to see it
Run Code Online (Sandbox Code Playgroud)

apt list 对比 dpkg-query -W

您可以使用的另一个命令是. 这类似于,但它的输出更加精简和可读,因为只打印包名称和安装的版本(如果有)。dpkg-query -W packagedpkg -l

dpkg-query -W列出dpkg与您提供的名称或全局模式匹配的所有软件包。这包括已安装的包以及未安装但被另一个包引用的包。您可以知道实际安装了哪些软件包,因为安装的版本号/字符串打印在名称的右侧。例如,在我的 16.04 系统上:

ek@Io:~$ dpkg-query -W wine-\*
wine-amd64
wine-gecko
wine-gecko2.21:amd64    2.21-0ubuntu1
wine-gecko2.21:i386     2.21-0ubuntu1
wine-i386
wine-mono
wine-mono0.0.8  0.0.8-0ubuntu1
Run Code Online (Sandbox Code Playgroud)

因此,在列出的软件包中,wine-gecko2.21:amd64wine-gecko2.21:i386(即,wine-gecko2.21对于amd64i386体系结构)和wine-mono0.0.8是我目前安装的软件包。

dpkg-query -W并且apt list都将始终知道已安装的软件包,无论它们是否由任何当前配置的软件源提供,以及它们是否被其他软件包引用。然而:

  • apt list 也知道从任何当前配置的软件源可用的包,但不知道其他包引用的不可用包。
  • dpkg-query -W(如dpkg -l)并不直接反映实际可用的包,但确实知道已安装的任何包所引用的包。

在同一台机器上:

ek@Io:~$ apt list wine-\*
Listing... Done
wine-development/xenial,xenial 1.9.6-1 all
wine-gecko2.21/xenial,now 2.21-0ubuntu1 amd64 [installed,automatic]
wine-mono0.0.8/xenial,xenial,now 0.0.8-0ubuntu1 all [installed,automatic]
Run Code Online (Sandbox Code Playgroud)

与 一样dpkg -l,当您dpkg-query -W使用没有的包名称运行时(例如,我没有chocolate-doom安装),输出与使用不存在的包名称运行时的输出相同全部(例如,由于拼写错误,例如firefoz):

ek@Io:~$ dpkg-query -W chocolate-doom firefoz
dpkg-query: no packages found matching chocolate-doom
dpkg-query: no packages found matching firefoz
Run Code Online (Sandbox Code Playgroud)

相反,apt list明确显示仅chocolate-doom存在(但未安装):

ek@Io:~$ apt list chocolate-doom firefoz
Listing... Done
chocolate-doom/xenial 2.2.1-2.1 amd64
Run Code Online (Sandbox Code Playgroud)


mik*_*ver 9

在终端中,运行dpkg -l | grep <name or pattern>. 例如,

dpkg -l | grep firefox
ii  firefox       51.0.1+build2-0ubuntu0.14.04.2                      amd64 
Run Code Online (Sandbox Code Playgroud)

ii东西意味着它已安装。显然,如果没有输出,则表示未安装该包。

  • 或者干脆`dpkg -l firefox` (2认同)

Ser*_*nyy 8

如果您知道包名称,请使用apt-cache策略:

$ apt-cache policy firefox | grep 'Installed:'                                                                           
  Installed: 51.0.1+build2-0ubuntu0.16.04.1
$ apt-cache policy golang | grep 'Installed:'                                                                            
  Installed: (none)
Run Code Online (Sandbox Code Playgroud)

如果没有,请使用 dpkg --get-selections | grep 'jdk'

$ dpkg --get-selections | grep 'jdk'
jdk1.8.0-111                    deinstall
openjdk-7-jre-headless:amd64            deinstall
openjdk-8-jdk:amd64             install
openjdk-8-jdk-headless:amd64            install
openjdk-8-jre:amd64             install
openjdk-8-jre-headless:amd64            install
openjdk-9-jre-headless:amd64            deinstall
Run Code Online (Sandbox Code Playgroud)


Boy*_*yka 5

使用dpkg command,它是 Debian 的包管理器。

>dpkg -s /package name/  
Run Code Online (Sandbox Code Playgroud)

使用文件 /var/lib/dpkg/available找出所有可用的包名称。

或者您可以使用以下命令(它列出/var/lib/dpkg/status中的所有包):

>dpkg-query -l  
Run Code Online (Sandbox Code Playgroud)

您还可以尝试使用通配符匹配包名称:

>dpkg-query -l 'libc6*'
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

60692 次

最近记录:

8 年,9 月 前