我正在尝试使用 yum install 安装 jdk 1.8.0_311。但是,我在尝试安装时收到一条错误消息,指出“无事可做”。
我用过
yum --showduplicates list jdk*
检查包裹是否在那里
jdk-20-headful.aarch64 2000:20.0.1-9.el7 ol7_oci_included
jdk-20-headless.aarch64 2000:20-36.el7 ol7_oci_included
jdk-20-headless.aarch64 2000:20.0.1-9.el7 ol7_oci_included
jdk1.8.aarch64 2000:1.8.0_301-fcs ol7_oci_included
jdk1.8.aarch64 2000:1.8.0_311-fcs ol7_oci_included
jdk1.8.aarch64 2000:1.8.0_331-fcs ol7_oci_included
jdk1.8.aarch64 2000:1.8.0_341-fcs ol7_oci_included
jdk1.8.aarch64 2000:1.8.0_351-fcs ol7_oci_included
然后我尝试运行
yum install jdk1.8.aarch64-2000:1.8.0_311-fcs
我收到错误“无事可做”
yum install jdk1.8.aarch64-2000:1.8.0_311-fcs
Loaded plugins: langpacks, ulninfo
No package jdk1.8.aarch64-2000:1.8.0_311-fcs available.
Error: Nothing to do
根据文档,这是安装它的正确方法,但它无法识别该包。如果我不指定版本,则默认为我无法使用的较新版本(351)。如有任何帮助,我们将不胜感激,谢谢。
答案1
安装特定版本的包的语法是:
yum install <package_name>-<version>
<package_name> 不应包含体系结构名称(在您的情况下为 .aarch64)。
尝试运行:
yum install jdk1.8-2000:1.8.0_311-fcs
如果您想指定架构,请运行如下命令:
yum install jdk1.8-2000:1.8.0_311-fcs.aarch64
答案2
不幸的是,yum 对于“yum install”、“yum擦除”和“yum list displayed”的反应并不真正一致:对于安装,您可以使用“缩写”pkg名称“pkgname-pkgversion”,例如:
yum install jdk1.8-1.8.0_311-fcs
对于“yum list install”和“yum擦除”,您必须使用“完整包名称”(如前面的解决方案中提到的)或使用glob(无正则表达式),例如:
> yum list installed jdk*
Installed Packages
jdk1.8.x86_64 2000:1.8.0_311-fcs
> yum erase jdk1.8-2000:1.8.0_311-fcs*
> yum erase jdk1.8-*1.8.0_311-fcs*
/* That's similar to abbreviated installation syntax ("pkgname-*pkgversion*"), avoiding "2000" + <architecture> */
“architecture”作为软件包名称的一部分列在“yum list displayed ...”的输出中(参见上文:“jdk1.8.1”)。x86_64”),但在“现实世界”(对于用法“yum擦除”和“yum列表已安装”)它位于“完整包名称”中的版本之后:
jdk1.8-2000:1.8.0_311-fcs.x86_64
不知道为什么它是这样实现的,或者为什么你可以用“yum install”省略“2000”......