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

标签 java linux amazon-ec2 yum

我启动了一个新的 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

我的相关问题是:

  1. 为什么“sudo yum install java-1.8.0”有效?它是 yum 存储库上的别名吗?
  2. 如果这确实是别名,我怎么知道它存在?有没有办法搜索或列出别名?

最佳答案

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

If the name doesn’t match a package, then package "provides" are searched (e.g. "_sqlite-cache.so()(64bit)") as are filelists (Eg. "/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 或仅 yumprovided java-1.8.0 >。请注意,在 yum 中,“whatprovides”与“provides”相同;两者都搜索提供指定功能的包。如果想要获取指定包中的功能,则需要使用repoquery。 (如果您已经安装或下载了要查询的软件包,则 rpm 命令也可以使用。)

关于java - 'yum install java-1.8.0' 是某种别名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39551163/

相关文章:

java - 在对象数组中找不到对象

Java - 在范围内无法访问类型...的封闭实例

python - 写入错误 : Broken pipe

amazon-web-services - Cloudwatch 自定义指标 - 内存利用率 --from-cron 不起作用

python - 使用 Python 关闭没有特定标签的 EC2 实例

java - swing.JTextField java 中的阿拉伯数字

java - 如何在不知道数据模式的情况下将数据从文本文件加载到 spark 数据框中?

python - Kivy 不工作,MESA-LOADER : failed to open iris and swrast

linux - 为什么 chroot 不起作用?

amazon-web-services - elb健康检查和ec2健康检查有什么区别?