我发布了一个新的AWS EC2实例(Amazon Linux AMI) . 我可以在机器上安装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
我的相关问题是:
-
为什么"sudo yum install java-1.8.0"有效?它是yum回购的别名吗?
-
如果这确实是别名,我怎么知道它存在?有没有办法搜索或列出别名?
1 回答
如果“yum install”找不到具有指定名称的包,它将查找提供具有该名称的功能的包 . 从yum手册页的安装部分:
“java-1.8.0”作为java-1.8.0-openjdk RPM中的一个功能列出,这就是“yum install 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"与"provides"相同;都搜索提供指定功能的包 . 如果要使用指定包中的功能,则需要使用repoquery . (如果您已经安装或下载了要查询的软件包,rpm命令也可以工作 . )