Skip to content

Instantly share code, notes, and snippets.

@nocnokneo
Last active December 11, 2020 03:34
Show Gist options
  • Save nocnokneo/fae7b70af4a7b2623b8c to your computer and use it in GitHub Desktop.
Save nocnokneo/fae7b70af4a7b2623b8c to your computer and use it in GitHub Desktop.
update-oracle-java-alternative.sh
#!/bin/bash
set -e
script_name=$(basename "$0")
print_usage()
{
cat <<EOF
Usage: ${script_name} install ORACLE_JAVA_INSTALL_DIR [PRIORITY]
${script_name} remove ORACLE_JAVA_INSTALL_DIR
This script manages an Oracle JRE installation using the standard
'alternatives' tool to set the Oracle JRE (java) and browser plugin
(libnpjp2.so) as the system default. This allows OpenJDK to be installed
concurrently in order to satisfy the package dependency of other yum-installed
applications (e.g. LibreOffice).
This script has been tested on CentOS 7 and:
- Oracle Java 1.8.0_11 (installed via jre-8u11-linux-x64.rpm)
- Oracle Java 1.8.0_25 (installed via jre-8u25-linux-x64.rpm)
EOF
}
install_alternative()
{
JAVA_HOME=$(readlink -e $1)
PRIORITY=${2:-1000000}
sudo update-alternatives \
--install /usr/bin/java java ${JAVA_HOME}/bin/java ${PRIORITY} \
--slave /usr/bin/keytool keytool ${JAVA_HOME}/bin/keytool \
--slave /usr/bin/orbd orbd ${JAVA_HOME}/bin/orbd \
--slave /usr/bin/pack200 pack200 ${JAVA_HOME}/bin/pack200 \
--slave /usr/bin/rmid rmid ${JAVA_HOME}/bin/rmid \
--slave /usr/bin/rmiregistry rmiregistry ${JAVA_HOME}/bin/rmiregistry \
--slave /usr/bin/servertool servertool ${JAVA_HOME}/bin/servertool \
--slave /usr/bin/tnameserv tnameserv ${JAVA_HOME}/bin/tnameserv \
--slave /usr/bin/unpack200 unpack200 ${JAVA_HOME}/bin/unpack200 \
--slave /usr/lib/jvm/jre jre ${JAVA_HOME} \
--slave /usr/lib/jvm-exports/jre jre_exports ${JAVA_HOME}/lib
sudo update-alternatives --auto java
if [[ ${JAVA_HOME} =~ "1.7.0" ]]; then
sudo update-alternatives \
--install /usr/lib/jvm/jre-1.7.0 jre_1.7.0 ${JAVA_HOME} ${PRIORITY} \
--slave /usr/lib/jvm-exports/jre-1.7.0 jre_1.7.0_exports ${JAVA_HOME}/lib
sudo update-alternatives --auto jre_1.7.0
fi
sudo update-alternatives \
--install /usr/lib64/mozilla/plugins/libjavaplugin.so libjavaplugin.so.x86_64 ${JAVA_HOME}/lib/amd64/libnpjp2.so ${PRIORITY} \
--slave /usr/bin/javaws javaws ${JAVA_HOME}/bin/javaws
sudo update-alternatives --auto libjavaplugin.so.x86_64
}
remove_alternative()
{
JAVA_HOME=$(readlink -m $1)
sudo update-alternatives --remove java ${JAVA_HOME}/bin/java 2>/dev/null || \
echo "${JAVA_HOME}/bin/java already removed"
if [[ ${JAVA_HOME} =~ "1.7.0" ]]; then
sudo update-alternatives --remove jre_1.7.0 ${JAVA_HOME} 2>/dev/null || \
echo "${JAVA_HOME} already removed"
fi
sudo update-alternatives --remove libjavaplugin.so.x86_64 ${JAVA_HOME}/lib/amd64/libnpjp2.so 2>/dev/null || \
echo "${JAVA_HOME}/lib/amd64/libnpjp2.so already removed"
}
case "$1" in
install)
install_alternative $2 $3
;;
remove)
remove_alternative $2
;;
*)
print_usage 1>&2
exit 1
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment