Installare Oracle Java JDK su GNU/Linux

(Debian/Ubuntu)
1 Novembre 2013

  1. Se vogliamo rimuovere completamente il pacchetto OpenJDK dal nostro sistema prima di installare Oracle JDK allora seguiamo la guida sotto.
  2. Scarichiamo l'archivio .tar dal sito ufficiale.
  3. Estraiamo il contenuto dell'archivio:
    sudo cd ~/Scaricati
    tar -xvf jdk-*-linux-i586.tar.gz (32bit)
    tar -xvf jdk-*-linux-x64.tar.gz (64bit)
  4. Spostiamo la directory estratta in /usr/lib:
    sudo mkdir -p /usr/lib/jvm
    sudo mv ./jdk1.8.0_* /usr/lib/jvm/jdk1.8.0
  5. Ora lanciamo i seguenti comandi:
    sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0/bin/java" 1
    sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0/bin/javac" 1
    sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.8.0/bin/javaws" 1
  6. Correggiamo i privileggi dei file e i permessi degli eseguibili:
    sudo chmod a+x /usr/bin/java
    sudo chmod a+x /usr/bin/javac
    sudo chmod a+x /usr/bin/javaws
    sudo chown -R root:root /usr/lib/jvm/jdk1.8.0
  7. Aggiorniamo le alternative di sistema:
    sudo update-alternatives --config java
    Questo darà in output qualcosa del genere:

    There are 3 choices for the alternative java (providing /usr/bin/java).

    Selection Path Priority Status
    ————————————————————
    * 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode
    1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode
    2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode
    3 /usr/lib/jvm/jdk1.8.0/jre/bin/java 3 manual mode

    Press enter to keep the current choice[*], or type selection number:

  8. Digitiamo ora il numero relativo a jdk1.8.0 ovvero, nell'esempio precedente, il numero 3, otterremo così in output il messagio di avvenuta modifica:

    update-alternatives: using /usr/lib/jvm/jdk1.8.0/jre/bin/java to provide /usr/bin/java (java) in manual mode.

  9. Verifichiamo infine la versione installata:
    java -version
  10. Ripetiamo i passaggi precedenti per gli altri due eseguibili java:
    sudo update-alternatives --config javac
    sudo update-alternatives --config javaws
  11. Abilitiamo il plugin in Firefox/Chrome (Se la directory plugins non esiste, creiamola in principio):
    mkdir ~/.mozilla/plugins
    sudo ln -s /usr/lib/jvm/jdk1.8.0/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/ (32 bit)
    sudo ln -s /usr/lib/jvm/jdk1.8.0/jre/lib/amd64/libnpjp2.so ~/.mozilla/plugins/ (64 bit)
  12. A seconda della nostra configurazione, potremmo avere il bisgno di aggiornare il profilo di apparmor per Firefox (o altri Browsers) in /etc/apparmor.d/abstractions/ubuntu-browsers.d/java:
    sudo gedit /etc/apparmor.d/abstractions/ubuntu-browsers.d/java
    ed andiamo a sostituire le due righe:

    /usr/lib/jvm/java-*-sun-1.*/jre/bin/java{,_vm} cx -> browser_java,
    /usr/lib/jvm/java-*-sun-1.*/jre/lib/*/libnp*.so cx -> browser_java,

    con queste:

    /usr/lib/jvm/jdk*/jre/bin/java{,_vm} cx -> browser_java,
    /usr/lib/jvm/jdk*/jre/lib/*/libnp*.so cx -> browser_java,

    Quindi riavviamo apparmor:
    sudo /etc/init.d/apparmor restart
  13. Verifichiamo che il JRE (Java Runtime Environment) sia stato installato con successo tramite la seguente pagina.
  14. Aggiungiamo gli eseguibili contenuti in /usr/lib/jvm/jdk1.8.0/bin alle nostre PATH environmental variables:
    sudo gedit ~/.bashrc
    Incolliamo il testo seguente alla fine del file:

    JAVA_HOME=/usr/lib/jvm/jdk1.8.0
    export JAVA_HOME
    export PATH=$PATH:$JAVA_HOME/bin

    Salviamo e chiudiamo gedit.



Rimuovere completamente OpenJDK

Eseguiamo il seguente comando:
sudo apt-get purge openjdk*
Se ciò richiederà di installare nuovi pacchetti, rifiutiamo di procedere e seguiamo invece i seguenti passaggi.

  1. Rimuoviamo tutti i pacchetti Java (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ).
    sudo apt-get update
    apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove
    sudo apt-get -y autoremove
  2. Ripuliamo i file di configurazione:
    dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge
  3. Rimuoviamo le directory di configurazione e quelle di cache:
    sudo bash -c 'ls -d ~/*/.java' | xargs sudo rm -rf
  4. Rimuoviamo manualmente le JVMs (Java Virtual Machines) installate:
    sudo rm -rf /usr/lib/jvm/*
  5. Rimuoviamo le voci Java, se ci sono ancora, dalle alternative di sistema:
    for g in ControlPanel java java_vm javaws jcontrol jexec keytool mozilla-javaplugin.so orbd pack200 policytool rmid rmiregistry servertool tnameserv unpack200 appletviewer apt extcheck HtmlConverter idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc xulrunner-1.9-javaplugin.so; do sudo update-alternatives --remove-all $g; done
  6. Cerchiamo eventuali directory Java rimanenti:
    sudo updatedb
    sudo locate -b '\pack200'
    Se il precedente comando produce un output simile a questo /path/to/jre1.6.0_34/bin/pack200, rimuoviamo la directory padre della bin:
    sudo rm -rf /path/to/jre1.6.0_34