CentOS 7默认的jdk 1.7升级方法(到1.8) - alternatives的功能
2015-12-02 11:16
716 查看
要搞整最新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
二、下载安装设置jdk1.8。
首先Java官方下载jdk的rpm包,这个东西方便,如果对默认安装目录不那么在乎的话;另外一个就是.tar.gz包了。
1. 下载1.8的rpm包并yum安装
2. # alternatives --config java来切换为新版本
另外,alternatives还有个操作是--install,在手工安装例如tar.gz包的时候,就可以去手动添加并全局切换/etc/alternatives/java链接。类似地,可以用alternatives来混搭升级安装的Phthon3(CentOS7默认的还是2.7),见下面的脚本,默认就启用了Python3:
而如果是去直接更改/usr/bin/java的链接,那就搞麻烦了,如此就会忽略掉alternative的用处不太好去统一管理。至于诸如下面这种修改/etc/profile的方法,不推荐使用 - 麻烦!
首先看图一目了解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
# java -version java version "1.7.0_91" OpenJDK Runtime Environment (rhel-2.6.2.1.el7_1-x86_64 u91-b00) OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)
# which java /usr/bin/java
# ll /usr/bin/java lrwxrwxrwx. 1 root root 22 Dec 2 00:46 /usr/bin/java -> /etc/alternatives/java
# ll /etc/alternatives/java 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
]# rpm -qa | grep java java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64 javapackages-tools-3.4.1-6.el7_0.noarch python-javapackages-3.4.1-6.el7_0.noarch tzdata-java-2015g-1.el7.noarch java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.1.el7_1.x86_64
# rpm -qa | grep jdk java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64 java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.1.el7_1.x86_64
# ll /usr/share/ ...... drwxr-xr-x. 2 root root 94 Sep 20 21:37 java drwxr-xr-x. 2 root root 6 Aug 14 2014 java-1.5.0 drwxr-xr-x. 2 root root 6 Aug 14 2014 java-1.6.0 drwxr-xr-x. 2 root root 6 Aug 14 2014 java-1.7.0 drwxr-xr-x. 2 root root 6 Aug 14 2014 java-1.8.0 drwxr-xr-x. 2 root root 6 Aug 14 2014 javadoc drwxr-xr-x. 2 root root 6 Aug 14 2014 java-ext drwxr-xr-x. 2 root root 4096 Sep 20 21:33 java-utils drwxr-xr-x. 13 root root 4096 Oct 10 05:56 javazi drwxr-xr-x. 2 root root 21 Oct 10 05:56 javazi-1.8 drwxr-xr-x. 2 root root 6 Aug 14 2014 jvm drwxr-xr-x. 2 root root 6 Aug 14 2014 jvm-commmon ......上面的几个版本从1.5到1.8的文件夹都是空的。
# ll /usr/lib/ ...... drwxr-xr-x. 2 root root 6 Aug 14 2014 java drwxr-xr-x. 2 root root 6 Aug 14 2014 java-1.5.0 drwxr-xr-x. 2 root root 6 Aug 14 2014 java-1.6.0 drwxr-xr-x. 2 root root 6 Aug 14 2014 java-1.7.0 drwxr-xr-x. 2 root root 6 Aug 14 2014 java-1.8.0 drwxr-xr-x. 2 root root 6 Aug 14 2014 java-ext drwxr-xr-x. 3 root root 4096 Dec 2 00:46 jvm drwxr-xr-x. 2 root root 6 Aug 14 2014 jvm-commmon drwxr-xr-x. 3 root root 4096 Dec 2 00:46 jvm-exports drwxr-xr-x. 3 root root 61 Nov 21 18:47 jvm-private ......而这几个文件夹从java到java-1.8.0到java-ext都是空的;jre文件全都在/usr/lib/jvm文件夹中
# ll /usr/lib/jvm total 8 drwxr-xr-x. 3 root root 4096 Dec 2 00:46 . dr-xr-xr-x. 42 root root 4096 Nov 25 17:22 .. 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 lrwxrwxrwx. 1 root root 21 Dec 2 00:46 jre -> /etc/alternatives/jre lrwxrwxrwx. 1 root root 27 Nov 21 18:47 jre-1.7.0 -> /etc/alternatives/jre_1.7.0 lrwxrwxrwx. 1 root root 35 Nov 21 18:47 jre-1.7.0-openjdk -> /etc/alternatives/jre_1.7.0_openjdk 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 lrwxrwxrwx. 1 root root 29 Nov 21 18:47 jre-openjdk -> /etc/alternatives/jre_openjdk这里看到很多东西链接到了/etc/alternatives,这个alternatives感觉像是个跳板或者统一接口API之类的一样的性质
$ ll /etc/alternatives/ | grep -E "java|jre" 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 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 lrwxrwxrwx. 1 root root 21 Sep 20 09:41 javaws -> /usr/bin/javaws.itweb lrwxrwxrwx. 1 root root 37 Sep 20 09:41 javaws.1.gz -> /usr/share/man/man1/javaws-itweb.1.gz 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 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 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 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 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 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 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 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 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 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 lrwxrwxrwx. 1 root root 27 Sep 20 09:41 libjavaplugin.so.x86_64 -> /usr/lib64/IcedTeaPlugin.so 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 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 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 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 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 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 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 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 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 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 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 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 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 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看下手册,的确是一个接口性质的东西
NAME alternatives - maintain symbolic links determining default commands SYNOPSIS alternatives [options] --install link name path priority [--slave link name path]... [--initscript service] alternatives [options] --remove name path alternatives [options] --set name path alternatives [options] --auto name alternatives [options] --display name alternatives [options] --config name alternatives [options] --list nameok,看下java相关的
# alternatives --display java java - status is auto. 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 /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 slave ControlPanel: (null) ...... 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包了。
# yum localinstall jdk-8u66-linux-x64.rpm -y /*yum安装,方便*/看默认安装的目录和其中的文件
# ll /usr/java/ total 8 drwxr-xr-x. 3 root root 51 Dec 2 00:46 . drwxr-xr-x. 14 root root 4096 Oct 7 08:42 .. lrwxrwxrwx. 1 root root 16 Dec 2 00:46 default -> /usr/java/latest drwxr-xr-x. 9 root root 4096 Dec 2 00:46 jdk1.8.0_66 lrwxrwxrwx. 1 root root 21 Dec 2 00:46 latest -> /usr/java/jdk1.8.0_66如果这个时候来查看java的版本,依然是1.7。也就是说,这个新版本安装并不会去自动更新那个/usr/bin/java或者说是那个alternative的链接目的地;发现没有,这个alternative的作用,应该就是为了版本控制,使得某个软件的多个版本并存并且自定义的切换启用
]# ll /etc/alternatives/ | grep -E "java|jre" lrwxrwxrwx. 1 root root 38 Dec 2 00:46 appletviewer -> /usr/java/jdk1.8.0_66/bin/appletviewer lrwxrwxrwx. 1 root root 45 Dec 2 00:46 appletviewer.1 -> /usr/java/jdk1.8.0_66/man/man1/appletviewer.1 lrwxrwxrwx. 1 root root 38 Dec 2 00:46 ControlPanel -> /usr/java/jdk1.8.0_66/bin/ControlPanel lrwxrwxrwx. 1 root root 34 Dec 2 00:46 extcheck -> /usr/java/jdk1.8.0_66/bin/extcheck lrwxrwxrwx. 1 root root 41 Dec 2 00:46 extcheck.1 -> /usr/java/jdk1.8.0_66/man/man1/extcheck.1 lrwxrwxrwx. 1 root root 30 Dec 2 00:46 idlj -> /usr/java/jdk1.8.0_66/bin/idlj lrwxrwxrwx. 1 root root 37 Dec 2 00:46 idlj.1 -> /usr/java/jdk1.8.0_66/man/man1/idlj.1 lrwxrwxrwx. 1 root root 29 Dec 2 00:46 jar -> /usr/java/jdk1.8.0_66/bin/jar lrwxrwxrwx. 1 root root 36 Dec 2 00:46 jar.1 -> /usr/java/jdk1.8.0_66/man/man1/jar.1 lrwxrwxrwx. 1 root root 35 Dec 2 00:46 jarsigner -> /usr/java/jdk1.8.0_66/bin/jarsigner lrwxrwxrwx. 1 root root 42 Dec 2 00:46 jarsigner.1 -> /usr/java/jdk1.8.0_66/man/man1/jarsigner.1 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 lrwxrwxrwx. 1 root root 37 Dec 2 00:46 java.1 -> /usr/java/jdk1.8.0_66/man/man1/java.1 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 lrwxrwxrwx. 1 root root 31 Dec 2 00:46 javac -> /usr/java/jdk1.8.0_66/bin/javac lrwxrwxrwx. 1 root root 38 Dec 2 00:46 javac.1 -> /usr/java/jdk1.8.0_66/man/man1/javac.1 lrwxrwxrwx. 1 root root 33 Dec 2 00:46 javadoc -> /usr/java/jdk1.8.0_66/bin/javadoc lrwxrwxrwx. 1 root root 40 Dec 2 00:46 javadoc.1 -> /usr/java/jdk1.8.0_66/man/man1/javadoc.1 lrwxrwxrwx. 1 root root 40 Dec 2 00:46 javafxpackager -> /usr/java/jdk1.8.0_66/bin/javafxpackager lrwxrwxrwx. 1 root root 47 Dec 2 00:46 javafxpackager.1 -> /usr/java/jdk1.8.0_66/man/man1/javafxpackager.1 lrwxrwxrwx. 1 root root 31 Dec 2 00:46 javah -> /usr/java/jdk1.8.0_66/bin/javah lrwxrwxrwx. 1 root root 38 Dec 2 00:46 javah.1 -> /usr/java/jdk1.8.0_66/man/man1/javah.1 lrwxrwxrwx. 1 root root 31 Dec 2 00:46 javap -> /usr/java/jdk1.8.0_66/bin/javap lrwxrwxrwx. 1 root root 38 Dec 2 00:46 javap.1 -> /usr/java/jdk1.8.0_66/man/man1/javap.1 lrwxrwxrwx. 1 root root 38 Dec 2 00:46 javapackager -> /usr/java/jdk1.8.0_66/bin/javapackager lrwxrwxrwx. 1 root root 45 Dec 2 00:46 javapackager.1 -> /usr/java/jdk1.8.0_66/man/man1/javapackager.1 lrwxrwxrwx. 1 root root 38 Dec 2 00:46 java-rmi.cgi -> /usr/java/jdk1.8.0_66/bin/java-rmi.cgi lrwxrwxrwx. 1 root root 32 Dec 2 00:46 javaws -> /usr/java/jdk1.8.0_66/bin/javaws lrwxrwxrwx. 1 root root 39 Dec 2 00:46 javaws.1 -> /usr/java/jdk1.8.0_66/man/man1/javaws.1 lrwxrwxrwx. 1 root root 37 Sep 20 09:41 javaws.1.gz -> /usr/share/man/man1/javaws-itweb.1.gz lrwxrwxrwx. 1 root root 30 Dec 2 00:46 jcmd -> /usr/java/jdk1.8.0_66/bin/jcmd lrwxrwxrwx. 1 root root 37 Dec 2 00:46 jcmd.1 -> /usr/java/jdk1.8.0_66/man/man1/jcmd.1 lrwxrwxrwx. 1 root root 34 Dec 2 00:46 jconsole -> /usr/java/jdk1.8.0_66/bin/jconsole lrwxrwxrwx. 1 root root 41 Dec 2 00:46 jconsole.1 -> /usr/java/jdk1.8.0_66/man/man1/jconsole.1 lrwxrwxrwx. 1 root root 34 Dec 2 00:46 jcontrol -> /usr/java/jdk1.8.0_66/bin/jcontrol lrwxrwxrwx. 1 root root 29 Dec 2 00:46 jdb -> /usr/java/jdk1.8.0_66/bin/jdb lrwxrwxrwx. 1 root root 36 Dec 2 00:46 jdb.1 -> /usr/java/jdk1.8.0_66/man/man1/jdb.1 lrwxrwxrwx. 1 root root 31 Dec 2 00:46 jdeps -> /usr/java/jdk1.8.0_66/bin/jdeps lrwxrwxrwx. 1 root root 38 Dec 2 00:46 jdeps.1 -> /usr/java/jdk1.8.0_66/man/man1/jdeps.1 lrwxrwxrwx. 1 root root 30 Dec 2 00:46 jhat -> /usr/java/jdk1.8.0_66/bin/jhat lrwxrwxrwx. 1 root root 37 Dec 2 00:46 jhat.1 -> /usr/java/jdk1.8.0_66/man/man1/jhat.1 lrwxrwxrwx. 1 root root 31 Dec 2 00:46 jinfo -> /usr/java/jdk1.8.0_66/bin/jinfo lrwxrwxrwx. 1 root root 38 Dec 2 00:46 jinfo.1 -> /usr/java/jdk1.8.0_66/man/man1/jinfo.1 lrwxrwxrwx. 1 root root 29 Dec 2 00:46 jjs -> /usr/java/jdk1.8.0_66/bin/jjs lrwxrwxrwx. 1 root root 36 Dec 2 00:46 jjs.1 -> /usr/java/jdk1.8.0_66/man/man1/jjs.1 lrwxrwxrwx. 1 root root 30 Dec 2 00:46 jmap -> /usr/java/jdk1.8.0_66/bin/jmap lrwxrwxrwx. 1 root root 37 Dec 2 00:46 jmap.1 -> /usr/java/jdk1.8.0_66/man/man1/jmap.1 lrwxrwxrwx. 1 root root 29 Dec 2 00:46 jmc -> /usr/java/jdk1.8.0_66/bin/jmc lrwxrwxrwx. 1 root root 36 Dec 2 00:46 jmc.1 -> /usr/java/jdk1.8.0_66/man/man1/jmc.1 lrwxrwxrwx. 1 root root 33 Dec 2 00:46 jmc.ini -> /usr/java/jdk1.8.0_66/bin/jmc.ini lrwxrwxrwx. 1 root root 29 Dec 2 00:46 jps -> /usr/java/jdk1.8.0_66/bin/jps lrwxrwxrwx. 1 root root 36 Dec 2 00:46 jps.1 -> /usr/java/jdk1.8.0_66/man/man1/jps.1 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 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 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 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 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 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 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 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 lrwxrwxrwx. 1 root root 36 Dec 2 00:46 jrunscript -> /usr/java/jdk1.8.0_66/bin/jrunscript lrwxrwxrwx. 1 root root 43 Dec 2 00:46 jrunscript.1 -> /usr/java/jdk1.8.0_66/man/man1/jrunscript.1 lrwxrwxrwx. 1 root root 35 Dec 2 00:46 jsadebugd -> /usr/java/jdk1.8.0_66/bin/jsadebugd lrwxrwxrwx. 1 root root 42 Dec 2 00:46 jsadebugd.1 -> /usr/java/jdk1.8.0_66/man/man1/jsadebugd.1 lrwxrwxrwx. 1 root root 32 Dec 2 00:46 jstack -> /usr/java/jdk1.8.0_66/bin/jstack lrwxrwxrwx. 1 root root 39 Dec 2 00:46 jstack.1 -> /usr/java/jdk1.8.0_66/man/man1/jstack.1 lrwxrwxrwx. 1 root root 31 Dec 2 00:46 jstat -> /usr/java/jdk1.8.0_66/bin/jstat lrwxrwxrwx. 1 root root 38 Dec 2 00:46 jstat.1 -> /usr/java/jdk1.8.0_66/man/man1/jstat.1 lrwxrwxrwx. 1 root root 32 Dec 2 00:46 jstatd -> /usr/java/jdk1.8.0_66/bin/jstatd lrwxrwxrwx. 1 root root 39 Dec 2 00:46 jstatd.1 -> /usr/java/jdk1.8.0_66/man/man1/jstatd.1 lrwxrwxrwx. 1 root root 35 Dec 2 00:46 jvisualvm -> /usr/java/jdk1.8.0_66/bin/jvisualvm lrwxrwxrwx. 1 root root 42 Dec 2 00:46 jvisualvm.1 -> /usr/java/jdk1.8.0_66/man/man1/jvisualvm.1 lrwxrwxrwx. 1 root root 33 Dec 2 00:46 keytool -> /usr/java/jdk1.8.0_66/bin/keytool lrwxrwxrwx. 1 root root 40 Dec 2 00:46 keytool.1 -> /usr/java/jdk1.8.0_66/man/man1/keytool.1 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 lrwxrwxrwx. 1 root root 27 Sep 20 09:41 libjavaplugin.so.x86_64 -> /usr/lib64/IcedTeaPlugin.so lrwxrwxrwx. 1 root root 38 Dec 2 00:46 native2ascii -> /usr/java/jdk1.8.0_66/bin/native2ascii lrwxrwxrwx. 1 root root 45 Dec 2 00:46 native2ascii.1 -> /usr/java/jdk1.8.0_66/man/man1/native2ascii.1 lrwxrwxrwx. 1 root root 30 Dec 2 00:46 orbd -> /usr/java/jdk1.8.0_66/bin/orbd lrwxrwxrwx. 1 root root 37 Dec 2 00:46 orbd.1 -> /usr/java/jdk1.8.0_66/man/man1/orbd.1 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 lrwxrwxrwx. 1 root root 33 Dec 2 00:46 pack200 -> /usr/java/jdk1.8.0_66/bin/pack200 lrwxrwxrwx. 1 root root 40 Dec 2 00:46 pack200.1 -> /usr/java/jdk1.8.0_66/man/man1/pack200.1 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 lrwxrwxrwx. 1 root root 36 Dec 2 00:46 policytool -> /usr/java/jdk1.8.0_66/bin/policytool lrwxrwxrwx. 1 root root 43 Dec 2 00:46 policytool.1 -> /usr/java/jdk1.8.0_66/man/man1/policytool.1 lrwxrwxrwx. 1 root root 30 Dec 2 00:46 rmic -> /usr/java/jdk1.8.0_66/bin/rmic lrwxrwxrwx. 1 root root 37 Dec 2 00:46 rmic.1 -> /usr/java/jdk1.8.0_66/man/man1/rmic.1 lrwxrwxrwx. 1 root root 30 Dec 2 00:46 rmid -> /usr/java/jdk1.8.0_66/bin/rmid lrwxrwxrwx. 1 root root 37 Dec 2 00:46 rmid.1 -> /usr/java/jdk1.8.0_66/man/man1/rmid.1 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 lrwxrwxrwx. 1 root root 37 Dec 2 00:46 rmiregistry -> /usr/java/jdk1.8.0_66/bin/rmiregistry lrwxrwxrwx. 1 root root 44 Dec 2 00:46 rmiregistry.1 -> /usr/java/jdk1.8.0_66/man/man1/rmiregistry.1 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 lrwxrwxrwx. 1 root root 35 Dec 2 00:46 schemagen -> /usr/java/jdk1.8.0_66/bin/schemagen lrwxrwxrwx. 1 root root 42 Dec 2 00:46 schemagen.1 -> /usr/java/jdk1.8.0_66/man/man1/schemagen.1 lrwxrwxrwx. 1 root root 35 Dec 2 00:46 serialver -> /usr/java/jdk1.8.0_66/bin/serialver lrwxrwxrwx. 1 root root 42 Dec 2 00:46 serialver.1 -> /usr/java/jdk1.8.0_66/man/man1/serialver.1 lrwxrwxrwx. 1 root root 36 Dec 2 00:46 servertool -> /usr/java/jdk1.8.0_66/bin/servertool lrwxrwxrwx. 1 root root 43 Dec 2 00:46 servertool.1 -> /usr/java/jdk1.8.0_66/man/man1/servertool.1 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 lrwxrwxrwx. 1 root root 35 Dec 2 00:46 tnameserv -> /usr/java/jdk1.8.0_66/bin/tnameserv lrwxrwxrwx. 1 root root 42 Dec 2 00:46 tnameserv.1 -> /usr/java/jdk1.8.0_66/man/man1/tnameserv.1 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 lrwxrwxrwx. 1 root root 35 Dec 2 00:46 unpack200 -> /usr/java/jdk1.8.0_66/bin/unpack200 lrwxrwxrwx. 1 root root 42 Dec 2 00:46 unpack200.1 -> /usr/java/jdk1.8.0_66/man/man1/unpack200.1 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 lrwxrwxrwx. 1 root root 31 Dec 2 00:46 wsgen -> /usr/java/jdk1.8.0_66/bin/wsgen lrwxrwxrwx. 1 root root 38 Dec 2 00:46 wsgen.1 -> /usr/java/jdk1.8.0_66/man/man1/wsgen.1 lrwxrwxrwx. 1 root root 34 Dec 2 00:46 wsimport -> /usr/java/jdk1.8.0_66/bin/wsimport lrwxrwxrwx. 1 root root 41 Dec 2 00:46 wsimport.1 -> /usr/java/jdk1.8.0_66/man/man1/wsimport.1 lrwxrwxrwx. 1 root root 29 Dec 2 00:46 xjc -> /usr/java/jdk1.8.0_66/bin/xjc lrwxrwxrwx. 1 root root 36 Dec 2 00:46 xjc.1 -> /usr/java/jdk1.8.0_66/man/man1/xjc.1发现了1.8的身影,具体点看下java的链接
# alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- *+ 1 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.1.el7_1.x86_64/jre/bin/java 2 /usr/java/jdk1.8.0_66/jre/bin/java Enter to keep the current selection[+], or type selection number:哦哦,这里可以设置更改为第二个,也就是1.8版本的。
# java -version java version "1.8.0_66" Java(TM) SE Runtime Environment (build 1.8.0_66-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)再来核实下一开始就发现的两个链接,发现的确只是更改了alternative中的链接目的地
# ll /usr/bin/java lrwxrwxrwx. 1 root root 22 Dec 2 05:41 /usr/bin/java -> /etc/alternatives/java # ll /etc/alternatives/java lrwxrwxrwx. 1 root root 34 Dec 2 05:41 /etc/alternatives/java -> /usr/java/jdk1.8.0_66/jre/bin/java那么其他的地方会自动的跟随上面的切换而自动切换么?核实下
# ll /etc/alternatives/jar lrwxrwxrwx. 1 root root 29 Dec 2 00:46 /etc/alternatives/jar -> /usr/java/jdk1.8.0_66/bin/jar # ll /etc/alternatives/javac lrwxrwxrwx. 1 root root 31 Dec 2 00:46 /etc/alternatives/javac -> /usr/java/jdk1.8.0_66/bin/javac # ll /etc/alternatives/jconsole lrwxrwxrwx. 1 root root 34 Dec 2 00:46 /etc/alternatives/jconsole -> /usr/java/jdk1.8.0_66/bin/jconsole # ll /etc/alternatives/jcmd lrwxrwxrwx. 1 root root 30 Dec 2 00:46 /etc/alternatives/jcmd -> /usr/java/jdk1.8.0_66/bin/jcmdjar和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:
if [ $(ls /usr/bin/python* | grep -c python2) -ge 1 ]; then python_old_version=$(ls -l /usr/bin/python* | grep '/usr/bin/python2 -> ' | awk '{print $11}' | awk -F python '{print $2}') alternatives --install /usr/bin/python python /usr/bin/python${python_old_version} 1 alternatives --install /usr/bin/python python /usr/local/bin/python3.5 2 # Keep python2 for /usr/bin/yum and /usr/libexec/urlgrabber-ext-down (firewalld not compatible with python3) sed -i "s@^#\!/usr/bin/python@#\!/usr/bin/python${python_old_version}@" /usr/bin/yum sed -i "s@^#\! /usr/bin/python@#\! /usr/bin/python${python_old_version}@" /usr/libexec/urlgrabber-ext-down fi
而如果是去直接更改/usr/bin/java的链接,那就搞麻烦了,如此就会忽略掉alternative的用处不太好去统一管理。至于诸如下面这种修改/etc/profile的方法,不推荐使用 - 麻烦!
# vim /etc/profile export JAVA_HOME=/path/to/java_version_dir export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JRE_HOME/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
相关文章推荐
- 无乱码解决Linux下sendEmail发送邮件
- centos 安装 mongo3.0
- Centos 7.1 快速搭建postfix邮件系统
- Kali Linux 2.0配置并安装常用的工具
- Linux 中卸载旧版本的JDK安装新版本JDK
- Linux awk
- linux管道pipe
- linux快速修改文件夹及文件下所有文件与文件夹权限
- Linux:file命令显示自定义文件类型
- centos7.x/RedHat7.x重命名网卡名称
- ARM+linux系统移植3G拨号上网收发短信(三)
- ARM+llinux系统移植3G拨号上网收发短信(二)
- ARM+llinux系统移植3G拨号上网收发短信(一)
- Linux下查看和添加PATH环境变量
- linux 新建一个交换空间(Swap)
- Linux系统启动流程详解
- linux查看硬件信息命令和教程详解
- [Linux] Chang DNS Setting on Linux
- ethtool 在 Linux 中的实现框架和应用
- Linux命令-cut、sort、uniq、wc、tee