首页 文章

是'yum install java-1.8.0'某种别名?

提问于
浏览
1

我发布了一个新的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 回答

  • 2

    如果“yum install”找不到具有指定名称的包,它将查找提供具有该名称的功能的包 . 从yum手册页的安装部分:

    如果名称与包不匹配,则搜索包“provide”(例如“_sqlite-cache.so()(64bit)”)和文件列表(例如“/ usr / bin / 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命令也可以工作 . )

相关问题