JAVA学习40_ CentOS 7默认的jdk 1.7升级方法(到1.8) - alternatives的功能

本文介绍如何将CentOS7系统上的JDK从1.7升级到1.8,包括下载安装JDK 1.8的rpm包并通过使用alternatives命令进行版本切换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备注:

新版本的elasticsearch需要使用jdk1.8,需要对jdk进行升级;

按照下面操作进行时,不能完全成功,最后还需要按照JAVA学习39进行修改。


要搞整最新2.1版本的elasticsearch,最好用jdk 1.8。CentOS7默认的却是1.7,所以得升个级。

首先看图一目了解java的架构

JDK 8 is a superset of JRE 8, and contains everything that is inJRE 8, plus tools such as the compilers and debuggers necessary fordeveloping applets and applications. JRE 8 provides the libraries,the Java Virtual Machine (JVM), and other components to run appletsand applications written in the Java programming language. Notethat the JRE includes components not required by the Java SEspecification, including both standard and non-standard Javacomponents.

一、CenOS7默认的jdk 1.7

/usr/bin/java首先链接到/etc/alternatives/java,再链接到具体的openjdk

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # java -version  
  2. java version "1.7.0_91"  
  3. OpenJDK Runtime Environment (rhel-2.6.2.1.el7_1-x86_64 u91-b00)  
  4. OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # which java  
  2. /usr/bin/java  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # ll /usr/bin/java  
  2. lrwxrwxrwx. 1 root root 22 Dec  2 00:46 /usr/bin/java -> /etc/alternatives/java  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # ll /etc/alternatives/java  
  2. lrwxrwxrwx. 1 root root 74 Dec  2 00:46 /etc/alternatives/java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/java  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. ]# rpm -qa | grep java  
  2. java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  3. javapackages-tools-3.4.1-6.el7_0.noarch  
  4. python-javapackages-3.4.1-6.el7_0.noarch  
  5. tzdata-java-2015g-1.el7.noarch  
  6. java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.1.el7_1.x86_64  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # rpm -qa | grep jdk  
  2. java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  3. java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.1.el7_1.x86_64  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # ll /usr/share/  
  2. ......  
  3. drwxr-xr-x.   2 root root    94 Sep 20 21:37 java  
  4. drwxr-xr-x.   2 root root     6 Aug 14  2014 java-1.5.0  
  5. drwxr-xr-x.   2 root root     6 Aug 14  2014 java-1.6.0  
  6. drwxr-xr-x.   2 root root     6 Aug 14  2014 java-1.7.0  
  7. drwxr-xr-x.   2 root root     6 Aug 14  2014 java-1.8.0  
  8. drwxr-xr-x.   2 root root     6 Aug 14  2014 javadoc  
  9. drwxr-xr-x.   2 root root     6 Aug 14  2014 java-ext  
  10. drwxr-xr-x.   2 root root  4096 Sep 20 21:33 java-utils  
  11. drwxr-xr-x.  13 root root  4096 Oct 10 05:56 javazi  
  12. drwxr-xr-x.   2 root root    21 Oct 10 05:56 javazi-1.8  
  13. drwxr-xr-x.   2 root root     6 Aug 14  2014 jvm  
  14. drwxr-xr-x.   2 root root     6 Aug 14  2014 jvm-commmon  
  15. ......  
上面的几个版本从1.5到1.8的文件夹都是空的。
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # ll /usr/lib/  
  2. ......  
  3. drwxr-xr-x.  2 root root    6 Aug 14  2014 java  
  4. drwxr-xr-x.  2 root root    6 Aug 14  2014 java-1.5.0  
  5. drwxr-xr-x.  2 root root    6 Aug 14  2014 java-1.6.0  
  6. drwxr-xr-x.  2 root root    6 Aug 14  2014 java-1.7.0  
  7. drwxr-xr-x.  2 root root    6 Aug 14  2014 java-1.8.0  
  8. drwxr-xr-x.  2 root root    6 Aug 14  2014 java-ext  
  9. drwxr-xr-x.  3 root root 4096 Dec  2 00:46 jvm  
  10. drwxr-xr-x.  2 root root    6 Aug 14  2014 jvm-commmon  
  11. drwxr-xr-x.  3 root root 4096 Dec  2 00:46 jvm-exports  
  12. drwxr-xr-x.  3 root root   61 Nov 21 18:47 jvm-private  
  13. ......  
而这几个文件夹从java到java-1.8.0到java-ext都是空的;jre文件全都在 /usr/lib/jvm 文件夹中
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # ll /usr/lib/jvm  
  2. total 8  
  3. drwxr-xr-x.  3 root root 4096 Dec  2 00:46 .  
  4. dr-xr-xr-x. 42 root root 4096 Nov 25 17:22 ..  
  5. drwxr-xr-x.  4 root root   95 Nov 21 18:46 java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  6. lrwxrwxrwx.  1 root root   21 Dec  2 00:46 jre -> /etc/alternatives/jre  
  7. lrwxrwxrwx.  1 root root   27 Nov 21 18:47 jre-1.7.0 -> /etc/alternatives/jre_1.7.0  
  8. lrwxrwxrwx.  1 root root   35 Nov 21 18:47 jre-1.7.0-openjdk -> /etc/alternatives/jre_1.7.0_openjdk  
  9. lrwxrwxrwx.  1 root root   52 Nov 21 18:46 jre-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64 -> java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre  
  10. lrwxrwxrwx.  1 root root   29 Nov 21 18:47 jre-openjdk -> /etc/alternatives/jre_openjdk  
这里看到很多东西链接到了/etc/alternatives,这个alternatives感觉像是个跳板或者统一接口API之类的一样的性质

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. $ ll /etc/alternatives/ | grep -E "java|jre"  
  2. lrwxrwxrwx.   1 root root   74 Nov 21 18:47 java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/java  
  3. lrwxrwxrwx.   1 root root   78 Nov 21 18:47 java.1.gz -> /usr/share/man/man1/java-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  4. lrwxrwxrwx.   1 root root   21 Sep 20 09:41 javaws -> /usr/bin/javaws.itweb  
  5. lrwxrwxrwx.   1 root root   37 Sep 20 09:41 javaws.1.gz -> /usr/share/man/man1/javaws-itweb.1.gz  
  6. lrwxrwxrwx.   1 root root   65 Nov 21 18:47 jre -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre  
  7. lrwxrwxrwx.   1 root root   65 Nov 21 18:47 jre_1.7.0 -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre  
  8. lrwxrwxrwx.   1 root root   69 Nov 21 18:47 jre_1.7.0_exports -> /usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  9. lrwxrwxrwx.   1 root root   60 Nov 21 18:47 jre_1.7.0_openjdk -> /usr/lib/jvm/jre-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  10. lrwxrwxrwx.   1 root root   69 Nov 21 18:47 jre_1.7.0_openjdk_exports -> /usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  11. lrwxrwxrwx.   1 root root   69 Nov 21 18:47 jre_exports -> /usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  12. lrwxrwxrwx.   1 root root   65 Nov 21 18:47 jre_openjdk -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre  
  13. lrwxrwxrwx.   1 root root   69 Nov 21 18:47 jre_openjdk_exports -> /usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  14. lrwxrwxrwx.   1 root root   77 Nov 21 18:47 keytool -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/keytool  
  15. lrwxrwxrwx.   1 root root   81 Nov 21 18:47 keytool.1.gz -> /usr/share/man/man1/keytool-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  16. lrwxrwxrwx.   1 root root   27 Sep 20 09:41 libjavaplugin.so.x86_64 -> /usr/lib64/IcedTeaPlugin.so  
  17. lrwxrwxrwx.   1 root root   74 Nov 21 18:47 orbd -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/orbd  
  18. lrwxrwxrwx.   1 root root   78 Nov 21 18:47 orbd.1.gz -> /usr/share/man/man1/orbd-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  19. lrwxrwxrwx.   1 root root   77 Nov 21 18:47 pack200 -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/pack200  
  20. lrwxrwxrwx.   1 root root   81 Nov 21 18:47 pack200.1.gz -> /usr/share/man/man1/pack200-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  21. lrwxrwxrwx.   1 root root   74 Nov 21 18:47 rmid -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/rmid  
  22. lrwxrwxrwx.   1 root root   78 Nov 21 18:47 rmid.1.gz -> /usr/share/man/man1/rmid-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  23. lrwxrwxrwx.   1 root root   81 Nov 21 18:47 rmiregistry -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/rmiregistry  
  24. lrwxrwxrwx.   1 root root   85 Nov 21 18:47 rmiregistry.1.gz -> /usr/share/man/man1/rmiregistry-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  25. lrwxrwxrwx.   1 root root   80 Nov 21 18:47 servertool -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/servertool  
  26. lrwxrwxrwx.   1 root root   84 Nov 21 18:47 servertool.1.gz -> /usr/share/man/man1/servertool-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  27. lrwxrwxrwx.   1 root root   79 Nov 21 18:47 tnameserv -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/tnameserv  
  28. lrwxrwxrwx.   1 root root   83 Nov 21 18:47 tnameserv.1.gz -> /usr/share/man/man1/tnameserv-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  29. lrwxrwxrwx.   1 root root   79 Nov 21 18:47 unpack200 -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/unpack200  
  30. lrwxrwxrwx.   1 root root   83 Nov 21 18:47 unpack200.1.gz -> /usr/share/man/man1/unpack200-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
看下手册,的确是一个接口性质的东西

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. NAME  
  2.        alternatives - maintain symbolic links determining default commands  
  3.   
  4. SYNOPSIS  
  5.        alternatives [options] --install link name path priority [--slave link name path]...  [--initscript service]  
  6.   
  7.        alternatives [options] --remove name path  
  8.   
  9.        alternatives [options] --set name path  
  10.   
  11.        alternatives [options] --auto name  
  12.   
  13.        alternatives [options] --display name  
  14.   
  15.        alternatives [options] --config name  
  16.   
  17.        alternatives [options] --list name  
ok,看下java相关的

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # alternatives --display java  
  2. java - status is auto.  
  3.  link currently points to /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/java  
  4. /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/java - priority 1700091  
  5.  slave ControlPanel: (null)  
  6. ......  
  7. Current `best' version is /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/java.  

二、下载安装设置jdk1.8。

首先Java官方下载jdk的rpm包,这个东西方便,如果对默认安装目录不那么在乎的话;另外一个就是.tar.gz包了。

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # yum localinstall jdk-8u66-linux-x64.rpm -y /*yum安装,方便*/  
看默认安装的目录和其中的文件

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # ll /usr/java/  
  2. total 8  
  3. drwxr-xr-x.  3 root root   51 Dec  2 00:46 .  
  4. drwxr-xr-x. 14 root root 4096 Oct  7 08:42 ..  
  5. lrwxrwxrwx.  1 root root   16 Dec  2 00:46 default -> /usr/java/latest  
  6. drwxr-xr-x.  9 root root 4096 Dec  2 00:46 jdk1.8.0_66  
  7. lrwxrwxrwx.  1 root root   21 Dec  2 00:46 latest -> /usr/java/jdk1.8.0_66  
如果这个时候来查看java的版本,依然是1.7。也就是说,这个新版本安装并不会去自动更新那个/usr/bin/java或者说是那个alternative的链接目的地;发现没有,这个alternative的作用,应该就是为了版本控制,使得某个软件的多个版本并存并且自定义的切换启用

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. ]# ll /etc/alternatives/ | grep -E "java|jre"  
  2. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 appletviewer -> /usr/java/jdk1.8.0_66/bin/appletviewer  
  3. lrwxrwxrwx.   1 root root   45 Dec  2 00:46 appletviewer.1 -> /usr/java/jdk1.8.0_66/man/man1/appletviewer.1  
  4. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 ControlPanel -> /usr/java/jdk1.8.0_66/bin/ControlPanel  
  5. lrwxrwxrwx.   1 root root   34 Dec  2 00:46 extcheck -> /usr/java/jdk1.8.0_66/bin/extcheck  
  6. lrwxrwxrwx.   1 root root   41 Dec  2 00:46 extcheck.1 -> /usr/java/jdk1.8.0_66/man/man1/extcheck.1  
  7. lrwxrwxrwx.   1 root root   30 Dec  2 00:46 idlj -> /usr/java/jdk1.8.0_66/bin/idlj  
  8. lrwxrwxrwx.   1 root root   37 Dec  2 00:46 idlj.1 -> /usr/java/jdk1.8.0_66/man/man1/idlj.1  
  9. lrwxrwxrwx.   1 root root   29 Dec  2 00:46 jar -> /usr/java/jdk1.8.0_66/bin/jar  
  10. lrwxrwxrwx.   1 root root   36 Dec  2 00:46 jar.1 -> /usr/java/jdk1.8.0_66/man/man1/jar.1  
  11. lrwxrwxrwx.   1 root root   35 Dec  2 00:46 jarsigner -> /usr/java/jdk1.8.0_66/bin/jarsigner  
  12. lrwxrwxrwx.   1 root root   42 Dec  2 00:46 jarsigner.1 -> /usr/java/jdk1.8.0_66/man/man1/jarsigner.1  
  13. lrwxrwxrwx.   1 root root   74 Dec  2 00:46 java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/java  
  14. lrwxrwxrwx.   1 root root   37 Dec  2 00:46 java.1 -> /usr/java/jdk1.8.0_66/man/man1/java.1  
  15. lrwxrwxrwx.   1 root root   78 Dec  2 00:46 java.1.gz -> /usr/share/man/man1/java-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  16. lrwxrwxrwx.   1 root root   31 Dec  2 00:46 javac -> /usr/java/jdk1.8.0_66/bin/javac  
  17. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 javac.1 -> /usr/java/jdk1.8.0_66/man/man1/javac.1  
  18. lrwxrwxrwx.   1 root root   33 Dec  2 00:46 javadoc -> /usr/java/jdk1.8.0_66/bin/javadoc  
  19. lrwxrwxrwx.   1 root root   40 Dec  2 00:46 javadoc.1 -> /usr/java/jdk1.8.0_66/man/man1/javadoc.1  
  20. lrwxrwxrwx.   1 root root   40 Dec  2 00:46 javafxpackager -> /usr/java/jdk1.8.0_66/bin/javafxpackager  
  21. lrwxrwxrwx.   1 root root   47 Dec  2 00:46 javafxpackager.1 -> /usr/java/jdk1.8.0_66/man/man1/javafxpackager.1  
  22. lrwxrwxrwx.   1 root root   31 Dec  2 00:46 javah -> /usr/java/jdk1.8.0_66/bin/javah  
  23. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 javah.1 -> /usr/java/jdk1.8.0_66/man/man1/javah.1  
  24. lrwxrwxrwx.   1 root root   31 Dec  2 00:46 javap -> /usr/java/jdk1.8.0_66/bin/javap  
  25. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 javap.1 -> /usr/java/jdk1.8.0_66/man/man1/javap.1  
  26. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 javapackager -> /usr/java/jdk1.8.0_66/bin/javapackager  
  27. lrwxrwxrwx.   1 root root   45 Dec  2 00:46 javapackager.1 -> /usr/java/jdk1.8.0_66/man/man1/javapackager.1  
  28. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 java-rmi.cgi -> /usr/java/jdk1.8.0_66/bin/java-rmi.cgi  
  29. lrwxrwxrwx.   1 root root   32 Dec  2 00:46 javaws -> /usr/java/jdk1.8.0_66/bin/javaws  
  30. lrwxrwxrwx.   1 root root   39 Dec  2 00:46 javaws.1 -> /usr/java/jdk1.8.0_66/man/man1/javaws.1  
  31. lrwxrwxrwx.   1 root root   37 Sep 20 09:41 javaws.1.gz -> /usr/share/man/man1/javaws-itweb.1.gz  
  32. lrwxrwxrwx.   1 root root   30 Dec  2 00:46 jcmd -> /usr/java/jdk1.8.0_66/bin/jcmd  
  33. lrwxrwxrwx.   1 root root   37 Dec  2 00:46 jcmd.1 -> /usr/java/jdk1.8.0_66/man/man1/jcmd.1  
  34. lrwxrwxrwx.   1 root root   34 Dec  2 00:46 jconsole -> /usr/java/jdk1.8.0_66/bin/jconsole  
  35. lrwxrwxrwx.   1 root root   41 Dec  2 00:46 jconsole.1 -> /usr/java/jdk1.8.0_66/man/man1/jconsole.1  
  36. lrwxrwxrwx.   1 root root   34 Dec  2 00:46 jcontrol -> /usr/java/jdk1.8.0_66/bin/jcontrol  
  37. lrwxrwxrwx.   1 root root   29 Dec  2 00:46 jdb -> /usr/java/jdk1.8.0_66/bin/jdb  
  38. lrwxrwxrwx.   1 root root   36 Dec  2 00:46 jdb.1 -> /usr/java/jdk1.8.0_66/man/man1/jdb.1  
  39. lrwxrwxrwx.   1 root root   31 Dec  2 00:46 jdeps -> /usr/java/jdk1.8.0_66/bin/jdeps  
  40. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 jdeps.1 -> /usr/java/jdk1.8.0_66/man/man1/jdeps.1  
  41. lrwxrwxrwx.   1 root root   30 Dec  2 00:46 jhat -> /usr/java/jdk1.8.0_66/bin/jhat  
  42. lrwxrwxrwx.   1 root root   37 Dec  2 00:46 jhat.1 -> /usr/java/jdk1.8.0_66/man/man1/jhat.1  
  43. lrwxrwxrwx.   1 root root   31 Dec  2 00:46 jinfo -> /usr/java/jdk1.8.0_66/bin/jinfo  
  44. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 jinfo.1 -> /usr/java/jdk1.8.0_66/man/man1/jinfo.1  
  45. lrwxrwxrwx.   1 root root   29 Dec  2 00:46 jjs -> /usr/java/jdk1.8.0_66/bin/jjs  
  46. lrwxrwxrwx.   1 root root   36 Dec  2 00:46 jjs.1 -> /usr/java/jdk1.8.0_66/man/man1/jjs.1  
  47. lrwxrwxrwx.   1 root root   30 Dec  2 00:46 jmap -> /usr/java/jdk1.8.0_66/bin/jmap  
  48. lrwxrwxrwx.   1 root root   37 Dec  2 00:46 jmap.1 -> /usr/java/jdk1.8.0_66/man/man1/jmap.1  
  49. lrwxrwxrwx.   1 root root   29 Dec  2 00:46 jmc -> /usr/java/jdk1.8.0_66/bin/jmc  
  50. lrwxrwxrwx.   1 root root   36 Dec  2 00:46 jmc.1 -> /usr/java/jdk1.8.0_66/man/man1/jmc.1  
  51. lrwxrwxrwx.   1 root root   33 Dec  2 00:46 jmc.ini -> /usr/java/jdk1.8.0_66/bin/jmc.ini  
  52. lrwxrwxrwx.   1 root root   29 Dec  2 00:46 jps -> /usr/java/jdk1.8.0_66/bin/jps  
  53. lrwxrwxrwx.   1 root root   36 Dec  2 00:46 jps.1 -> /usr/java/jdk1.8.0_66/man/man1/jps.1  
  54. lrwxrwxrwx.   1 root root   65 Dec  2 00:46 jre -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre  
  55. lrwxrwxrwx.   1 root root   65 Nov 21 18:47 jre_1.7.0 -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre  
  56. lrwxrwxrwx.   1 root root   69 Nov 21 18:47 jre_1.7.0_exports -> /usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  57. lrwxrwxrwx.   1 root root   60 Nov 21 18:47 jre_1.7.0_openjdk -> /usr/lib/jvm/jre-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  58. lrwxrwxrwx.   1 root root   69 Nov 21 18:47 jre_1.7.0_openjdk_exports -> /usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  59. lrwxrwxrwx.   1 root root   69 Dec  2 00:46 jre_exports -> /usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  60. lrwxrwxrwx.   1 root root   65 Nov 21 18:47 jre_openjdk -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre  
  61. lrwxrwxrwx.   1 root root   69 Nov 21 18:47 jre_openjdk_exports -> /usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64  
  62. lrwxrwxrwx.   1 root root   36 Dec  2 00:46 jrunscript -> /usr/java/jdk1.8.0_66/bin/jrunscript  
  63. lrwxrwxrwx.   1 root root   43 Dec  2 00:46 jrunscript.1 -> /usr/java/jdk1.8.0_66/man/man1/jrunscript.1  
  64. lrwxrwxrwx.   1 root root   35 Dec  2 00:46 jsadebugd -> /usr/java/jdk1.8.0_66/bin/jsadebugd  
  65. lrwxrwxrwx.   1 root root   42 Dec  2 00:46 jsadebugd.1 -> /usr/java/jdk1.8.0_66/man/man1/jsadebugd.1  
  66. lrwxrwxrwx.   1 root root   32 Dec  2 00:46 jstack -> /usr/java/jdk1.8.0_66/bin/jstack  
  67. lrwxrwxrwx.   1 root root   39 Dec  2 00:46 jstack.1 -> /usr/java/jdk1.8.0_66/man/man1/jstack.1  
  68. lrwxrwxrwx.   1 root root   31 Dec  2 00:46 jstat -> /usr/java/jdk1.8.0_66/bin/jstat  
  69. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 jstat.1 -> /usr/java/jdk1.8.0_66/man/man1/jstat.1  
  70. lrwxrwxrwx.   1 root root   32 Dec  2 00:46 jstatd -> /usr/java/jdk1.8.0_66/bin/jstatd  
  71. lrwxrwxrwx.   1 root root   39 Dec  2 00:46 jstatd.1 -> /usr/java/jdk1.8.0_66/man/man1/jstatd.1  
  72. lrwxrwxrwx.   1 root root   35 Dec  2 00:46 jvisualvm -> /usr/java/jdk1.8.0_66/bin/jvisualvm  
  73. lrwxrwxrwx.   1 root root   42 Dec  2 00:46 jvisualvm.1 -> /usr/java/jdk1.8.0_66/man/man1/jvisualvm.1  
  74. lrwxrwxrwx.   1 root root   33 Dec  2 00:46 keytool -> /usr/java/jdk1.8.0_66/bin/keytool  
  75. lrwxrwxrwx.   1 root root   40 Dec  2 00:46 keytool.1 -> /usr/java/jdk1.8.0_66/man/man1/keytool.1  
  76. lrwxrwxrwx.   1 root root   81 Dec  2 00:46 keytool.1.gz -> /usr/share/man/man1/keytool-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  77. lrwxrwxrwx.   1 root root   27 Sep 20 09:41 libjavaplugin.so.x86_64 -> /usr/lib64/IcedTeaPlugin.so  
  78. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 native2ascii -> /usr/java/jdk1.8.0_66/bin/native2ascii  
  79. lrwxrwxrwx.   1 root root   45 Dec  2 00:46 native2ascii.1 -> /usr/java/jdk1.8.0_66/man/man1/native2ascii.1  
  80. lrwxrwxrwx.   1 root root   30 Dec  2 00:46 orbd -> /usr/java/jdk1.8.0_66/bin/orbd  
  81. lrwxrwxrwx.   1 root root   37 Dec  2 00:46 orbd.1 -> /usr/java/jdk1.8.0_66/man/man1/orbd.1  
  82. lrwxrwxrwx.   1 root root   78 Dec  2 00:46 orbd.1.gz -> /usr/share/man/man1/orbd-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  83. lrwxrwxrwx.   1 root root   33 Dec  2 00:46 pack200 -> /usr/java/jdk1.8.0_66/bin/pack200  
  84. lrwxrwxrwx.   1 root root   40 Dec  2 00:46 pack200.1 -> /usr/java/jdk1.8.0_66/man/man1/pack200.1  
  85. lrwxrwxrwx.   1 root root   81 Dec  2 00:46 pack200.1.gz -> /usr/share/man/man1/pack200-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  86. lrwxrwxrwx.   1 root root   36 Dec  2 00:46 policytool -> /usr/java/jdk1.8.0_66/bin/policytool  
  87. lrwxrwxrwx.   1 root root   43 Dec  2 00:46 policytool.1 -> /usr/java/jdk1.8.0_66/man/man1/policytool.1  
  88. lrwxrwxrwx.   1 root root   30 Dec  2 00:46 rmic -> /usr/java/jdk1.8.0_66/bin/rmic  
  89. lrwxrwxrwx.   1 root root   37 Dec  2 00:46 rmic.1 -> /usr/java/jdk1.8.0_66/man/man1/rmic.1  
  90. lrwxrwxrwx.   1 root root   30 Dec  2 00:46 rmid -> /usr/java/jdk1.8.0_66/bin/rmid  
  91. lrwxrwxrwx.   1 root root   37 Dec  2 00:46 rmid.1 -> /usr/java/jdk1.8.0_66/man/man1/rmid.1  
  92. lrwxrwxrwx.   1 root root   78 Dec  2 00:46 rmid.1.gz -> /usr/share/man/man1/rmid-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  93. lrwxrwxrwx.   1 root root   37 Dec  2 00:46 rmiregistry -> /usr/java/jdk1.8.0_66/bin/rmiregistry  
  94. lrwxrwxrwx.   1 root root   44 Dec  2 00:46 rmiregistry.1 -> /usr/java/jdk1.8.0_66/man/man1/rmiregistry.1  
  95. lrwxrwxrwx.   1 root root   85 Dec  2 00:46 rmiregistry.1.gz -> /usr/share/man/man1/rmiregistry-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  96. lrwxrwxrwx.   1 root root   35 Dec  2 00:46 schemagen -> /usr/java/jdk1.8.0_66/bin/schemagen  
  97. lrwxrwxrwx.   1 root root   42 Dec  2 00:46 schemagen.1 -> /usr/java/jdk1.8.0_66/man/man1/schemagen.1  
  98. lrwxrwxrwx.   1 root root   35 Dec  2 00:46 serialver -> /usr/java/jdk1.8.0_66/bin/serialver  
  99. lrwxrwxrwx.   1 root root   42 Dec  2 00:46 serialver.1 -> /usr/java/jdk1.8.0_66/man/man1/serialver.1  
  100. lrwxrwxrwx.   1 root root   36 Dec  2 00:46 servertool -> /usr/java/jdk1.8.0_66/bin/servertool  
  101. lrwxrwxrwx.   1 root root   43 Dec  2 00:46 servertool.1 -> /usr/java/jdk1.8.0_66/man/man1/servertool.1  
  102. lrwxrwxrwx.   1 root root   84 Dec  2 00:46 servertool.1.gz -> /usr/share/man/man1/servertool-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  103. lrwxrwxrwx.   1 root root   35 Dec  2 00:46 tnameserv -> /usr/java/jdk1.8.0_66/bin/tnameserv  
  104. lrwxrwxrwx.   1 root root   42 Dec  2 00:46 tnameserv.1 -> /usr/java/jdk1.8.0_66/man/man1/tnameserv.1  
  105. lrwxrwxrwx.   1 root root   83 Dec  2 00:46 tnameserv.1.gz -> /usr/share/man/man1/tnameserv-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  106. lrwxrwxrwx.   1 root root   35 Dec  2 00:46 unpack200 -> /usr/java/jdk1.8.0_66/bin/unpack200  
  107. lrwxrwxrwx.   1 root root   42 Dec  2 00:46 unpack200.1 -> /usr/java/jdk1.8.0_66/man/man1/unpack200.1  
  108. lrwxrwxrwx.   1 root root   83 Dec  2 00:46 unpack200.1.gz -> /usr/share/man/man1/unpack200-java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64.1.gz  
  109. lrwxrwxrwx.   1 root root   31 Dec  2 00:46 wsgen -> /usr/java/jdk1.8.0_66/bin/wsgen  
  110. lrwxrwxrwx.   1 root root   38 Dec  2 00:46 wsgen.1 -> /usr/java/jdk1.8.0_66/man/man1/wsgen.1  
  111. lrwxrwxrwx.   1 root root   34 Dec  2 00:46 wsimport -> /usr/java/jdk1.8.0_66/bin/wsimport  
  112. lrwxrwxrwx.   1 root root   41 Dec  2 00:46 wsimport.1 -> /usr/java/jdk1.8.0_66/man/man1/wsimport.1  
  113. lrwxrwxrwx.   1 root root   29 Dec  2 00:46 xjc -> /usr/java/jdk1.8.0_66/bin/xjc  
  114. lrwxrwxrwx.   1 root root   36 Dec  2 00:46 xjc.1 -> /usr/java/jdk1.8.0_66/man/man1/xjc.1  
发现了1.8的身影,具体点看下java的链接

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # alternatives --config java  
  2.   
  3. There are 2 programs which provide 'java'.  
  4.   
  5.   Selection    Command  
  6. -----------------------------------------------  
  7. *+ 1           /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/java  
  8.    2           /usr/java/jdk1.8.0_66/jre/bin/java  
  9.   
  10. Enter to keep the current selection[+], or type selection number:   
哦哦,这里可以设置更改为第二个,也就是1.8版本的。

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # java -version  
  2. java version "1.8.0_66"  
  3. Java(TM) SE Runtime Environment (build 1.8.0_66-b17)  
  4. Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)  
再来核实下一开始就发现的两个链接,发现的确只是更改了alternative中的链接目的地

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # ll /usr/bin/java  
  2. lrwxrwxrwx. 1 root root 22 Dec  2 05:41 /usr/bin/java -> /etc/alternatives/java  
  3. # ll /etc/alternatives/java  
  4. lrwxrwxrwx. 1 root root 34 Dec  2 05:41 /etc/alternatives/java -> /usr/java/jdk1.8.0_66/jre/bin/java  
那么其他的地方会自动的跟随上面的切换而自动切换么?核实下

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # ll /etc/alternatives/jar  
  2. lrwxrwxrwx. 1 root root 29 Dec  2 00:46 /etc/alternatives/jar -> /usr/java/jdk1.8.0_66/bin/jar  
  3. # ll /etc/alternatives/javac  
  4. lrwxrwxrwx. 1 root root 31 Dec  2 00:46 /etc/alternatives/javac -> /usr/java/jdk1.8.0_66/bin/javac  
  5. # ll /etc/alternatives/jconsole  
  6. lrwxrwxrwx. 1 root root 34 Dec  2 00:46 /etc/alternatives/jconsole -> /usr/java/jdk1.8.0_66/bin/jconsole  
  7. # ll /etc/alternatives/jcmd  
  8. lrwxrwxrwx. 1 root root 30 Dec  2 00:46 /etc/alternatives/jcmd -> /usr/java/jdk1.8.0_66/bin/jcmd  
jar和javac都自动跟随切换了,所以到此我可以认为,一切都就绪不需要额外的人工设置了。 所以整个从1.7到1.8的升级过程为下面简单两步:

1. 下载1.8的rpm包并yum安装

2. # alternatives --config java来切换为新版本


另外,alternatives还有个操作是--install,在手工安装例如tar.gz包的时候,就可以去手动添加并全局切换/etc/alternatives/java链接。类似地,可以用alternatives来混搭升级安装的Phthon3(CentOS7默认的还是2.7),见下面的脚本,默认就启用了Python3:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. if [ $(ls /usr/bin/python* | grep -c python2) -ge 1 ]; then  
  2.     python_old_version=$(ls -l /usr/bin/python* | grep '/usr/bin/python2 -> ' | awk '{print $11}' | awk -F python '{print $2}')  
  3.     alternatives --install /usr/bin/python python /usr/bin/python${python_old_version} 1  
  4.     alternatives --install /usr/bin/python python /usr/local/bin/python3.5 2      
  5.     # Keep python2 for /usr/bin/yum and /usr/libexec/urlgrabber-ext-down (firewalld not compatible with python3)  
  6.     sed -i "s@^#\!/usr/bin/python@#\!/usr/bin/python${python_old_version}@" /usr/bin/yum  
  7.     sed -i "s@^#\! /usr/bin/python@#\! /usr/bin/python${python_old_version}@" /usr/libexec/urlgrabber-ext-down   
  8. fi  

而如果是去直接更改/usr/bin/java的链接,那就搞麻烦了,如此就会忽略掉alternative的用处不太好去统一管理。至于诸如下面这种修改/etc/profile的方法,不推荐使用 - 麻烦!

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # vim /etc/profile  
  2. export JAVA_HOME=/path/to/java_version_dir  
  3. export JRE_HOME=$JAVA_HOME/jre  
  4. export CLASSPATH=.:$JRE_HOME/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar  
  5. export PATH=$JAVA_HOME/bin:$PATH   

原文来自:http://blog.youkuaiyun.com/evandeng2009/article/details/50145701


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值