←Configure alternatives system for Oracle JDK of Fedora
In Fedora linux and AFAIK in some others (like Debian) there is cool
system called alternatives
which helps to install several versions
of software in the system and easily switch between them. As one
example for that might be installing different versions of
JDKs. Unfortunately Oracle JDK packages does not install alternatives
in its post-install hooks. This post mainly for future me to quickly
configure alternatives system correctly on Fedora.
Here I assume that Oracle RPMs downloaded and installed from http://www.oracle.com/technetwork/java/javase/downloads/index.html
Now install javac
links:
alternatives \
--install /usr/bin/javac javac /usr/java/latest/bin/javac 777 \
--slave /usr/bin/java java /usr/java/latest/bin/java \
--slave /usr/lib/jvm/java java_sdk /usr/java/latest \
--slave /usr/bin/appletviewer appletviewer /usr/java/latest/bin/appletviewer \
--slave /usr/bin/extcheck extcheck /usr/java/latest/bin/extcheck \
--slave /usr/bin/idlj idlj /usr/java/latest/bin/idlj \
--slave /usr/bin/jar jar /usr/java/latest/bin/jar \
--slave /usr/bin/jarsigner jarsigner /usr/java/latest/bin/jarsigner \
--slave /usr/bin/javadoc javadoc /usr/java/latest/bin/javadoc \
--slave /usr/bin/javah javah /usr/java/latest/bin/javah \
--slave /usr/bin/javap javap /usr/java/latest/bin/javap \
--slave /usr/bin/jcmd jcmd /usr/java/latest/bin/jcmd \
--slave /usr/bin/jconsole jconsole /usr/java/latest/bin/jconsole \
--slave /usr/bin/jdb jdb /usr/java/latest/bin/jdb \
--slave /usr/bin/jdeps jdeps /usr/java/latest/bin/jdeps \
--slave /usr/bin/jhat jhat /usr/java/latest/bin/jhat \
--slave /usr/bin/jinfo jinfo /usr/java/latest/bin/jinfo \
--slave /usr/bin/jmap jmap /usr/java/latest/bin/jmap \
--slave /usr/bin/jps jps /usr/java/latest/bin/jps \
--slave /usr/bin/jrunscript jrunscript /usr/java/latest/bin/jrunscript \
--slave /usr/bin/jsadebugd jsadebugd /usr/java/latest/bin/jsadebugd \
--slave /usr/bin/jstack jstack /usr/java/latest/bin/jstack \
--slave /usr/bin/jstat jstat /usr/java/latest/bin/jstat \
--slave /usr/bin/jstatd jstatd /usr/java/latest/bin/jstatd \
--slave /usr/bin/native2ascii native2ascii /usr/java/latest/bin/native2ascii \
--slave /usr/bin/rmic rmic /usr/java/latest/bin/rmic \
--slave /usr/bin/schemagen schemagen /usr/java/latest/bin/schemagen \
--slave /usr/bin/serialver serialver /usr/java/latest/bin/serialver \
--slave /usr/bin/wsgen wsgen /usr/java/latest/bin/wsgen \
--slave /usr/bin/wsimport wsimport /usr/java/latest/bin/wsimport \
--slave /usr/bin/xjc xjc /usr/java/latest/bin/xjc \
--slave /usr/share/man/man1/appletviewer.1.gz appletviewer.1.gz /usr/java/latest/man/man1/appletviewer.1.gz \
--slave /usr/share/man/man1/extcheck.1.gz extcheck.1.gz /usr/java/latest/man/man1/extcheck.1.gz \
--slave /usr/share/man/man1/idlj.1.gz idlj.1.gz /usr/java/latest/man/man1/idlj.1.gz \
--slave /usr/share/man/man1/jar.1.gz jar.1.gz /usr/java/latest/man/man1/jar.1.gz \
--slave /usr/share/man/man1/jarsigner.1.gz jarsigner.1.gz /usr/java/latest/man/man1/jarsigner.1.gz \
--slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/java/latest/man/man1/javac.1.gz \
--slave /usr/share/man/man1/javadoc.1.gz javadoc.1.gz /usr/java/latest/man/man1/javadoc.1.gz \
--slave /usr/share/man/man1/javah.1.gz javah.1.gz /usr/java/latest/man/man1/javah.1.gz \
--slave /usr/share/man/man1/javap.1.gz javap.1.gz /usr/java/latest/man/man1/javap.1.gz \
--slave /usr/share/man/man1/jcmd.1.gz jcmd.1.gz /usr/java/latest/man/man1/jcmd.1.gz \
--slave /usr/share/man/man1/jconsole.1.gz jconsole.1.gz /usr/java/latest/man/man1/jconsole.1.gz \
--slave /usr/share/man/man1/jdb.1.gz jdb.1.gz /usr/java/latest/man/man1/jdb.1.gz \
--slave /usr/share/man/man1/jdeps.1.gz jdeps.1.gz /usr/java/latest/man/man1/jdeps.1.gz \
--slave /usr/share/man/man1/jhat.1.gz jhat.1.gz /usr/java/latest/man/man1/jhat.1.gz \
--slave /usr/share/man/man1/jinfo.1.gz jinfo.1.gz /usr/java/latest/man/man1/jinfo.1.gz \
--slave /usr/share/man/man1/jmap.1.gz jmap.1.gz /usr/java/latest/man/man1/jmap.1.gz \
--slave /usr/share/man/man1/jps.1.gz jps.1.gz /usr/java/latest/man/man1/jps.1.gz \
--slave /usr/share/man/man1/jrunscript.1.gz jrunscript.1.gz /usr/java/latest/man/man1/jrunscript.1.gz \
--slave /usr/share/man/man1/jsadebugd.1.gz jsadebugd.1.gz /usr/java/latest/man/man1/jsadebugd.1.gz \
--slave /usr/share/man/man1/jstack.1.gz jstack.1.gz /usr/java/latest/man/man1/jstack.1.gz \
--slave /usr/share/man/man1/jstat.1.gz jstat.1.gz /usr/java/latest/man/man1/jstat.1.gz \
--slave /usr/share/man/man1/jstatd.1.gz jstatd.1.gz /usr/java/latest/man/man1/jstatd.1.gz \
--slave /usr/share/man/man1/native2ascii.1.gz native2ascii.1.gz /usr/java/latest/man/man1/native2ascii.1.gz \
--slave /usr/share/man/man1/policytool.1.gz policytool.1.gz /usr/java/latest/man/man1/policytool.1.gz \
--slave /usr/share/man/man1/rmic.1.gz rmic.1.gz /usr/java/latest/man/man1/rmic.1.gz \
--slave /usr/share/man/man1/schemagen.1.gz schemagen.1.gz /usr/java/latest/man/man1/schemagen.1.gz \
--slave /usr/share/man/man1/serialver.1.gz serialver.1.gz /usr/java/latest/man/man1/serialver.1.gz \
--slave /usr/share/man/man1/wsgen.1.gz wsgen.1.gz /usr/java/latest/man/man1/wsgen.1.gz \
--slave /usr/share/man/man1/wsimport.1.gz wsimport.1.gz /usr/java/latest/man/man1/wsimport.1.gz \
--slave /usr/share/man/man1/xjc.1.gz xjc.1.gz /usr/java/latest/man/man1/xjc.1.gz
Now alternatives --config javac
should output something like this:
# alternatives --config javac
There are 3 programs which provide 'javac'.
Selection Command
-----------------------------------------------
1 /usr/lib/jvm/java-1.8.0-openjdk.x86_64/bin/javac
*+ 2 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.40-12.b02.fc22.x86_64/bin/javac
3 /usr/java/latest/bin/javac
Enter to keep the current selection[+], or type selection number:
And by selecting 3
Oracle JDK will become default in the system.