#!/bin/bash # Installs an installation of Sun's JDK into the alternatives system # of Fedora Linux. # It does not work with JRE installations. # # For more information and new versions please see # http://nerdicism.com/2010/02/fedora-sun-jdk-alternatives # # I created it for Sun Java 1.6.0_18 on Fedora Core 12 # It should also work on other current redhat derivates like CentOS 5. # The script is released AS IS. # I take no responsibilty for any problems you step into by using this # script. # # Usage: setjava.sh [JDK_HOME] [VENDOR] [VERSION] [PRIORITY] # JDK_HOME is the path of the jdk installation. Defaults to /usr/java/latest # VENDOR is something like "sun", defaults to "sun" # VERSION is the version of the JDK. Is guessed automatically if left empty # PRIORITY is the priority of the entry in alternatives system function fail() { echo Error: $1 >&2 exit 1 } JDK_HOME=${1:-/usr/java/latest} VENDOR=${2:-sun} VERSION=${3:-$($JDK_HOME/bin/java -version 2>&1 \ | grep "java version" \ | sed -re 's/java version "(.*)"/\1/')} PRIORITY=${4:-100000} test -z "$JDK_HOME" -o ! -d "$JDK_HOME" && fail "Java-Home $JDK_HOME is invalid" test -z "$VENDOR" && fail "Vendor must not be empty" test -z "$VERSION" && fail "Version of JDK could not be examined" echo "Adding $JDK_HOME to alternatives system" JVMSTRING="java-$VENDOR-$VERSION" EXPORTSDIR="/usr/lib/jvm-exports/$JVMSTRING" PRIVATEDIR="/usr/lib/jvm-private/$JVMSTRING" MANDIR=/usr/share/man/man1 JMANDIR=$PRIVATEDIR/man/man1 mkdir -p "$EXPORTSDIR" mkdir -p "$PRIVATEDIR" mkdir -p "$JMANDIR" # Handle man pages for file in $JDK_HOME/man/man1/* do TARGET=$JMANDIR/$(basename $file) if [ ! -e $TARGET -a ! -e $TARGET.gz ] then cp $file $TARGET gzip $TARGET fi done # java alternatives --install /usr/bin/java java $JDK_HOME/bin/java "$PRIORITY" \ --slave /usr/bin/javaws javaws $JDK_HOME/bin/javaws \ --slave /usr/bin/keytool keytool $JDK_HOME/bin/keytool \ --slave /usr/bin/orbd orbd $JDK_HOME/bin/orbd \ --slave /usr/bin/pack200 pack200 $JDK_HOME/bin/pack200 \ --slave /usr/bin/rmid rmid $JDK_HOME/bin/rmid \ --slave /usr/bin/rmiregistry rmiregistry $JDK_HOME/bin/rmiregistry \ --slave /usr/bin/servertool servertool $JDK_HOME/bin/servertool \ --slave /usr/bin/tnameserv tnameserv $JDK_HOME/bin/tnameserv \ --slave /usr/bin/unpack200 unpack200 $JDK_HOME/bin/unpack200 \ --slave /usr/bin/unpack200 unpack200 $JDK_HOME/bin/unpack200 \ --slave /usr/lib/jvm-exports/jre jre_exports $EXPORTSDIR \ --slave /usr/lib/jvm/jre jre $JDK_HOME/jre \ --slave "$MANDIR/java.1.gz" java.1.gz $JMANDIR/java.1.gz \ --slave "$MANDIR/keytool.1.gz" keytool.1.gz $JMANDIR/keytool.1.gz \ --slave "$MANDIR/orbd.1.gz" orbd.1.gz $JMANDIR/orbd.1.gz \ --slave "$MANDIR/pack200.1.gz" pack200.1.gz $JMANDIR/pack200.1.gz \ --slave "$MANDIR/rmid.1.gz" rmid.1.gz $JMANDIR/rmid.1.gz \ --slave "$MANDIR/rmiregistry.1.gz" rmiregistry.1.gz $JMANDIR/rmiregistry.1.gz \ --slave "$MANDIR/servertool.1.gz" servertool.1.gz $JMANDIR/servertool.1.gz \ --slave "$MANDIR/tnameserv.1.gz" tnameserver.1.gz $JMANDIR/tnameserv.1.gz \ --slave "$MANDIR/unpack200.1.gz" unpack200.1.gz $JMANDIR/unpack200.1.gz alternatives --auto java # javac alternatives --install /usr/bin/javac javac $JDK_HOME/bin/javac "$PRIORITY" \ --slave /usr/bin/appletviewer appletviewer $JDK_HOME/bin/appletviewer \ --slave /usr/bin/apt apt $JDK_HOME/bin/apt \ --slave /usr/bin/extcheck extcheck $JDK_HOME/bin/extcheck \ --slave /usr/bin/jar jar $JDK_HOME/bin/jar \ --slave /usr/bin/jarsigner jarsigner $JDK_HOME/bin/jarsigner \ --slave /usr/bin/javadoc javadoc $JDK_HOME/bin/javadoc \ --slave /usr/bin/javah javah $JDK_HOME/bin/javah \ --slave /usr/bin/javap javap $JDK_HOME/bin/javap \ --slave /usr/bin/jconsole jconsole $JDK_HOME/bin/jconsole \ --slave /usr/bin/jdb jdb $JDK_HOME/bin/jdb \ --slave /usr/bin/jhat jhat $JDK_HOME/bin/jhat \ --slave /usr/bin/jinfo jinfo $JDK_HOME/bin/jinfo \ --slave /usr/bin/jmap jmap $JDK_HOME/bin/jmap \ --slave /usr/bin/jps jps $JDK_HOME/bin/jps \ --slave /usr/bin/jrunscript jrunscript $JDK_HOME/bin/jrunscript \ --slave /usr/bin/jsadebugd jsadebugd $JDK_HOME/bin/jsadebugd \ --slave /usr/bin/jstack jstack $JDK_HOME/bin/jstack \ --slave /usr/bin/jstat jstat $JDK_HOME/bin/jstat \ --slave /usr/bin/jstatd jstatd $JDK_HOME/bin/jstatd \ --slave /usr/bin/jvisualvm jvisualvm $JDK_HOME/bin/jvisualvm \ --slave /usr/bin/native2ascii native2ascii $JDK_HOME/bin/native2ascii \ --slave /usr/bin/policytool policytool $JDK_HOME/bin/policytool \ --slave /usr/bin/rmic rmic $JDK_HOME/bin/rmic \ --slave /usr/bin/schemagen schemagen $JDK_HOME/bin/schemagen \ --slave /usr/bin/serialver serialver $JDK_HOME/bin/serialver \ --slave /usr/bin/wsgen wsgen $JDK_HOME/bin/wsgen \ --slave /usr/bin/wsimport wsimport $JDK_HOME/bin/wsimport \ --slave /usr/bin/xjc xjc $JDK_HOME/bin/xjc \ --slave /usr/lib/jvm-exports/java java_sdk_exports $EXPORTSDIR \ --slave /usr/lib/jvm/java java_sdk $JDK_HOME \ --slave "$MANDIR/appletviewer.1.gz" appletviewer.1.gz $JMANDIR/appletviewer.1.gz \ --slave "$MANDIR/apt.1.gz" apt.1.gz $JMANDIR/apt.1.gz \ --slave "$MANDIR/extcheck.1.gz" extcheck.1.gz $JMANDIR/extcheck.1.gz \ --slave "$MANDIR/jar.1.gz" jar.1.gz $JMANDIR/jar.1.gz \ --slave "$MANDIR/jarsigner.1.gz" jarsigner.1.gz $JMANDIR/jarsigner.1.gz \ --slave "$MANDIR/javac.1.gz" javac.1.gz $JMANDIR/javac.1.gz \ --slave "$MANDIR/javadoc.1.gz" javadoc.1.gz $JMANDIR/javadoc.1.gz \ --slave "$MANDIR/javah.1.gz" javah.1.gz $JMANDIR/javah.1.gz \ --slave "$MANDIR/javap.1.gz" javap.1.gz $JMANDIR/javap.1.gz \ --slave "$MANDIR/jconsole.1.gz" jconsole.1.gz $JMANDIR/jconsole.1.gz \ --slave "$MANDIR/jdb.1.gz" jdb.1.gz $JMANDIR/jdb.1.gz \ --slave "$MANDIR/jhat.1.gz" jhat.1.gz $JMANDIR/jhat.1.gz \ --slave "$MANDIR/jinfo.1.gz" jinfo.1.gz $JMANDIR/jinfo.1.gz \ --slave "$MANDIR/jmap.1.gz" jmap.1.gz $JMANDIR/jmap.1.gz \ --slave "$MANDIR/jps.1.gz" jps.1.gz $JMANDIR/jps.1.gz \ --slave "$MANDIR/jrunscript.1.gz" jrunscript.1.gz $JMANDIR/jrunscript.1.gz \ --slave "$MANDIR/jsadebugd.1.gz" jsadebugd.1.gz $JMANDIR/jsadebugd.1.gz \ --slave "$MANDIR/jstack.1.gz" jstack.1.gz $JMANDIR/jstack.1.gz \ --slave "$MANDIR/jstat.1.gz" jstat.1.gz $JMANDIR/jstat.1.gz \ --slave "$MANDIR/native2ascii.1.gz" native2ascii.1.gz $JMANDIR/native2ascii.1.gz \ --slave "$MANDIR/policytool.1.gz" policytool.1.gz $JMANDIR/policytool.1.gz \ --slave "$MANDIR/rmic.1.gz" rmic.1.gz $JMANDIR/rmic.1.gz \ --slave "$MANDIR/schemagen.1.gz" schemagen.1.gz $JMANDIR/schemagen.1.gz \ --slave "$MANDIR/serialver.1.gz" serialver.1.gz $JMANDIR/serialver.1.gz \ --slave "$MANDIR/wsgen.1.gz" wsgen.1.gz $JMANDIR/wsgen.1.gz \ --slave "$MANDIR/xjc.1.gz" xjc.1.gz $JMANDIR/xjc.1.gz alternatives --auto javac # jre_1.6.0 alternatives --install /usr/lib/jvm/jre-1.6.0 jre_1.6.0 $JDK_HOME "$PRIORITY" \ --slave /usr/lib/jvm-exports/jre-1.6.0 jre_1.6.0_exports $EXPORTSDIR alternatives --auto jre_1.6.0 # java_sdk_1.6.0 alternatives --install /usr/lib/jvm/java-1.6.0 java_sdk_1.6.0 $JDK_HOME "$PRIORITY" \ --slave /usr/lib/jvm-exports/java-1.6.0 java_sdk_1.6.0_exports $EXPORTSDIR alternatives --auto java_sdk_1.6.0