Installation d'Oracle JDK 17 sur OpenCloudOS Server 9

Voici un script Bash automatisant l'installation d'Oracle JDK 17 sur un système OpenCloudOS Server 9. Il gère le téléchargement, la décompression et la configuration des variables d'environnement.

Script d'installation automatisé

#!/bin/bash
# Script d'automatisation pour l'installation de JDK Oracle 17
# Cible : OpenCloudOS Server 9

set -o errexit

# Paramètres de configuration
JAVA_VER="17"
JAVA_FULL_VER="17.0.12"
JAVA_PATCH="8"
DIST_NAME="jdk-${JAVA_FULL_VER}+${JAVA_PATCH}"
SOURCE_URL="https://download.oracle.com/java/${JAVA_VER}/latest/jdk-${JAVA_FULL_VER}_linux-x64_bin.tar.gz"
TARGET_DIR="/usr/local/java"
ENV_SCRIPT="/etc/profile.d/java_vars.sh"

# Palette de couleurs pour l'affichage
RED_CLR='\033[0;31m'
GREEN_CLR='\033[0;32m'
YELLOW_CLR='\033[1;33m'
NO_CLR='\033[0m'

info_msg() { echo -e "${GREEN_CLR}[INFO]${NO_CLR} $1"; }
warn_msg() { echo -e "${YELLOW_CLR}[ATTENTION]${NO_CLR} $1"; }
error_msg() { echo -e "${RED_CLR}[ERREUR]${NO_CLR} $1"; }

verify_privileges() {
    if [[ "${EUID}" -ne 0 ]]; then
        error_msg "Ce script doit être exécuté avec les privilèges root."
        exit 1
    fi
}

check_previous_install() {
    if command -v java &> /dev/null; then
        warn_msg "Une installation de Java a été détectée : $(java -version 2>&1 | head -1)"
        read -rp "Voulez-vous poursuivre l'installation ? (o/n) : " user_choice
        if [[ "${user_choice}" != "o" && "${user_choice}" != "O" ]]; then
            info_msg "Opération annulée par l'utilisateur."
            exit 0
        fi
    fi
}

prepare_directory() {
    info_msg "Préparation du répertoire cible : ${TARGET_DIR}"
    mkdir -p "${TARGET_DIR}"
}

fetch_package() {
    local archive_path="/tmp/${DIST_NAME}.tar.gz"

    if [[ -f "${TARGET_DIR}/${DIST_NAME}/bin/java" ]]; then
        info_msg "L'archive JDK est déjà extraite. Étape de téléchargement ignorée."
        return 0
    fi

    info_msg "Démarrage du téléchargement d'Oracle JDK ${JAVA_FULL_VER}..."
    info_msg "Source : ${SOURCE_URL}"

    if command -v wget &> /dev/null; then
        wget --no-check-certificate -O "${archive_path}" "${SOURCE_URL}" || {
            error_msg "Échec avec wget. Basculement vers curl..."
            curl -L -o "${archive_path}" "${SOURCE_URL}"
        }
    elif command -v curl &> /dev/null; then
        curl -L -o "${archive_path}" "${SOURCE_URL}"
    else
        error_msg "Outil de téléchargement (wget ou curl) non trouvé."
        exit 1
    fi

    info_msg "Extraction de l'archive dans ${TARGET_DIR}..."
    tar -xzf "${archive_path}" -C "${TARGET_DIR}"

    # Nettoyage
    rm -f "${archive_path}"
    info_msg "Extraction terminée avec succès."
}

set_environment() {
    info_msg "Écriture des variables d'environnement..."
    cat > "${ENV_SCRIPT}" << 'ENVVAR'
# Variables pour Oracle JDK
export JAVA_HOME=/usr/local/java/jdk-17.0.12+8
export JRE_HOME=${JAVA_HOME}/jre
export PATH=${JAVA_HOME}/bin:${PATH}
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
ENVVAR

    chmod +x "${ENV_SCRIPT}"
    # Chargement pour la session courante
    source "${ENV_SCRIPT}"
    info_msg "Variables d'environnement configurées."
}

validate_result() {
    info_msg "Validation de l'installation..."
    source "${ENV_SCRIPT}"

    echo ""
    echo "==== Informations sur l'installation ===="
    java -version
    echo ""
    echo "JAVA_HOME : ${JAVA_HOME}"
    echo "JRE_HOME  : ${JRE_HOME}"
    echo "Executable java : $(which java)"
    echo "Executable javac : $(which javac)"
    echo "========================================"

    info_msg "Validation complète !"
}

display_summary() {
    echo ""
    echo "============================================"
    echo "  Oracle JDK ${JAVA_FULL_VER} installé avec succès !"
    echo "============================================"
    echo ""
    echo "Fichier de configuration : ${ENV_SCRIPT}"
    echo "Les variables seront chargées automatiquement au prochain login."
    echo "Pour les activer immédiatement : source ${ENV_SCRIPT}"
    echo ""
    echo "Commandes utiles :"
    echo "  java -version  # Afficher la version de la JRE"
    echo "  javac -version # Afficher la version du compilateur"
    echo ""
    echo "Chemin d'installation : ${JAVA_HOME}"
    echo ""
}

# Séquence d'exécution principale
initiate_installation() {
    echo "============================================"
    echo "  Script d'installation Oracle JDK pour OpenCloudOS"
    echo "============================================"
    echo ""

    verify_privileges
    check_previous_install
    prepare_directory
    fetch_package
    set_environment
    validate_result
    display_summary
}

# Point d'entrée
initiate_installation

Procédure d'utilisation

Le script ci-dessus offre les fonctionnalités suivantes :

  • Vérification des prérequis : Contrôle automatique des privilèges root.
  • Gestion des installations existantes : Détection et confirmation avant remplacement.
  • Téléchargement intelligent : Utilisation de wget ou curl en fonciton de leur disponibilité.
  • Conception idempotente : Ne retélécharge pas si les fichiers sont déjà extraits.
  • Configuration persistante : Écriture des variables d'environnement dans un fichier de profil.

Pour lancer l'installation, transférez le script sur votre serveur et exécutez-le :

# Transfert vers le serveur
scp install-jdk-oracle.sh root@serveur-cible:/tmp/

# Connexion et exécution
ssh root@serveur-cible
chmod +x /tmp/install-jdk-oracle.sh
/tmp/install-jdk-oracle.sh

Alternative manuelle

Si le téléchargement automatique échoue, vous pouvez procéder manuellement :

  1. Téléchargez l'archive depuis le site officiel d'Oracle pour Linux x64.
  2. Transférez-la sur le serveur dans le dossier /tmp/.
  3. Exécutez les commandes suivantes :
# Extraire l'archive
tar -xzf /tmp/jdk-17.0.12_linux-x64_bin.tar.gz -C /usr/local/java

# Configurer les variables (adapter le chemin exact)
cat > /etc/profile.d/java_vars.sh << 'EOF'
export JAVA_HOME=/usr/local/java/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
EOF

# Recharger l'environnement
source /etc/profile.d/java_vars.sh
java -version

Étiquettes: OpenCloudOS Oracle JDK bash administration système Configuration d'Environnement

Publié le 22 juin à 18h58