cs:tech:idp:java:upgrade

Java pro Shibboleth IdP - aktualizace

Vzhledem ke změně licencování Oracle JDK jsme se ve sdružení CESNET rozhodli přejít na OpenJDK a tento přechod doporučujeme i našim členům.

Na této stránce najdete návod, jak aktualizovat Javu, nebo spíše jak přejít z Oracle JDK 8u201 na OpenJDK.

Oracle JDK 8u201 -> OpenJDK z Debian 9

Používáte-li jinou verzi než 8u201, musíte odpovídajícím způsobem upravit některé příkazy níže, které tuto verzi přímo specifikují.

Přechod je velice triviální a následné aktualizace také, protože jsou řešeny správci balíčků v distribuci Debian. Aktualizaci Javy tedy v budoucnu provedete (spolu s aktualizací ostatních distribučních balíčků) triviální kombinací apt update && apt upgrade.

Oficiálně je podporováno jen JDK (Java Development Kit), nikoliv JRE (Java Runtime Environment), nicméně s použitím JRE, které má výrazně menší množství závislostí, jsme nenarazili na jediný problém a jde tedy (minimálně v Debianu) bez problémů použít.

Nyní stačí nainstalovat OpenJDK:

# Instalace OpenJDK
apt install openjdk-8-jre-headless

Odstranit starou javu:

# Odstranění staré Javy ze systému
update-alternatives --remove javac /opt/jdk1.8.0_201/bin/javac
update-alternatives --remove java /opt/jdk1.8.0_201/bin/java
 
# Smazání Oracle JDK
rm -rf /opt/jdk1.8.0_201/

Změnit proměnnou prostředí JAVA_HOME v konfiguračním souboru ~/.bashrc uživatele root:

# Změna proměnné prostředí JAVA_HOME
sed -i.bak 's%export JAVA_HOME=/opt/jdk1.8.0_201% export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")%' ~/.bashrc

Znovu načíst konfigurační soubor ~/.bashrc:

# Znovunačtení konfigurace pro BASH
source ~/.bashrc

A přesvědčit se, že v proměnné prostředí JAVA_HOME je nová cesta a že nová Java funguje:

# Vypsání proměnné JAVA_HOME a otestování Javy
echo $JAVA_HOME && java -version
# Výsledek předchozího příkazu
/usr/lib/jvm/java-8-openjdk-amd64/jre/
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

Nyní je už jen potřeba restartovat Jetty, aby Shibboleth IdP běžel pod novou Javou:

# Restartování Jetty
systemctl restart jetty

Shibboleth IdP nyní běží nad OpenJDK namísto Oracle JDK. To je možné ověřit v logu /opt/shibboleth-idp/logs/idp-process.log anebo pomocí skriptu /opt/shibboleth-idp/bin/status.sh.

Poslední úprava:: 2019/02/22 12:30