2016-09-17 90 views
1

我启动了一个新的AWS EC2实例(Amazon Linux AMI)。我可以像这样在机器上安装Java 1.8.0:是'yum安装java-1.8.0'某种别名?

sudo yum install java-1.8.0 

我还可以安装使用这个命令:

sudo yum install java-1.8.0-openjdk 

相同的包和依赖安装在这两种情况下。当我执行以下,我收到“无匹配的软件包列出”:

yum info java-1.8.0 

当我执行以下操作器“java-1.8.0”没有出现在列表中,唯一的“java-1.8.0 -openjdk“:

yum search java-1.8.0 

我相关的问题是:

  1. 为什么 ”命令百胜安装的Java 1.8.0“ 工作?这是yum回购的别名吗?
  2. 如果这确实是一个别名,我怎么会知道它存在?有没有办法搜索或列出别名?
+1

尝试做'yum list java-1.8.0',是否给你预期的输出? – px06

+0

没有。此命令导致“没有匹配的软件包列表”。运行'yum list java-1.8.0-openjdk'会给出预期的结果。 – shaunb

回答

1

如果“百胜安装”未找到具有指定名称的包,它会寻找提供该名称的功能包。从yum手册页中的安装部分:

如果名称与包不匹配,那么将搜索包“provides”(例如“_sqlite-cache.so()(64bit)”)文件列表(例如“/ usr/bin/yum”)。

“的java-1.8.0” 被列为在java-1.8.0-OpenJDK的RPM,这是为什么,是由安装的功能 “荫安装java-1.8.0-OpenJDK的”。如果有其他软件包在yum中提供该功能,您可以轻松获得其中的一个。我不确定yum是如何在提供相同功能的多个软件包之间进行选择的,但如果应用程序的特定风格/版本对您来说很重要,则不是我所依赖的。

如果您安装yum-utils,则repoquery命令可以显示关于程序包功能(以及其他许多事情)的信息。例如,repoquery --provides java-1.8.0-openjdk会列出该软件包提供的所有功能。要搜索提供java-1.8.0功能的所有软件包,可以使用repoquery --whatprovides java-1.8.0或仅使用yum provides java-1.8.0。请注意,在yum中,“whatprovides”与“provide”相同;都搜索提供指定功能的软件包。如果您想要指定包中的功能,则需要使用repoquery。 (如果你已经安装或下载了你想要查询的软件包,rpm命令也可以工作。)

+0

很好的回答。谢谢。 – shaunb