2016-09-17 89 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