Ricevo OpenJDK 8 dai repository Debian ufficiali, piuttosto che da un PPA casuale o da un binario Oracle non libero. Ecco come l'ho fatto:
sudo apt-get install debian-keyring debian-archive-keyring
Rendi /etc/apt/sources.list.d/debian-jessie-backports.list
:
deb http://httpredir.debian.org/debian/ jessie-backports main
Crea /etc/apt/preferences.d/debian-jessie-backports
:
Package: *
Pin: release o=Debian,a=jessie-backports
Pin-Priority: -200
Poi finalmente esegui l'installazione:
sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk
sudo apt-get update
sudo apt-get install openjdk-8-jdk
questo dovrebbe funzionare
Come puoi vedere, ho solo java 1.7 installato (su una macchina Ubuntu 14.04).
update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
Per installare Java 8, l'ho fatto,
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
Successivamente, ora ho java 7 e 8,
update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64
BONUS AGGIUNTO (come passare da una versione all'altra)
- esegui il seguente comando dal terminale:
sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 auto mode 1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode * 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1069 manual mode Press enter to keep the current choice[*], or type selection number:
Come puoi vedere sto eseguendo open jdk 8. Per passare a jdk 7, premi 1
e premi Invio chiave. Fai lo stesso per javac
anche con sudo update-alternatives --config javac
.
Controlla le versioni per confermare la modifica:java -version
e javac -version
.
AGGIORNA :installazione senza privilegi di root di seguito
Ti consiglio di non installare i pacchetti manualmente sul sistema ubuntu se esiste già un repository (semi-ufficiale) in grado di risolvere il tuo problema. Inoltre, usa Oracle JDK per lo sviluppo, solo per evitare problemi di compatibilità (molto sporadici) (ho provato molti anni fa, ora è sicuramente meglio).
Aggiungi webupd8 repository sul tuo sistema:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
Installa la tua versione preferita di jdk (sono disponibili versioni da java-6 a java-9):
sudo apt-get install oracle-java8-installer
Puoi anche installare più versioni di jdk, mescolando le versioni openjdk e oracle. Quindi puoi usare il comando update-java-alternatives per passare da una versione installata all'altra:
# list available jdk
update-java-alternatives --list
# use jdk7
sudo update-java-alternatives --set java-7-oracle
# use jdk8
sudo update-java-alternatives --set java-8-oracle
Requisiti
Se ottieni add-apt-repository: command not found
assicurati di avere software-properties-common
installato:
sudo apt-get install software-properties-common
Se stai usando una versione precedente di Ubuntu:
sudo apt-get install python-software-properties
Installazione JDK senza privilegi di root
Se non hai i diritti di amministratore sulla tua macchina target, la soluzione più semplice è usare sdkman
per installare openjdk certificato zulu:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java
NOTA :sdkman consente di installare anche Oracle JDK ufficiale, sebbene non sia un'opzione predefinita. Visualizza le versioni disponibili con:
sdk ls java
Installa la versione scelta con:
sdk install java <version>
Ad esempio:
sdk install java 9.0.1-oracle
Glossario dei comandi
-
sudo
<command> [command_arguments]
:esegue un comando con privilegi di superutente. -
add-apt-repository
<PPA_id>
:Ubuntu (proprio come ogni derivato Debian e in generale ogni distribuzione Linux) ha un repository principale di pacchetti che gestiscono cose come le dipendenze dei pacchetti e l'aggiornamento. In Ubuntu è possibile estendere il repository principale utilizzando un PPA (Personal Package Archive) che di solito contiene pacchetti non disponibili nel sistema (proprio come oracle jdk) o versioni aggiornate di quelli disponibili (esempio:LibreOffice 5 in LTS è disponibile solo tramite questo PPA). -
apt-get
[install|update|upgrade|purge|...]
:è "il" gestore di pacchetti della riga di comando utilizzato per manipolare lo stato di ogni repository sul sistema (installazione/aggiornamento/aggiornamento possono essere visti come un'alterazione dello stato corrente del repository).
Nel nostro caso :con il comando sudo add-apt-repository ppa:webupd8team/java
informiamo il sistema che il prossimo aggiornamento del repository deve recuperare le informazioni sui pacchetti anche dal repository webupd8.
Con sudo apt-get update
in realtà aggiorniamo il repository di sistema (tutte queste operazioni richiedono privilegi di superutente, quindi anteponiamo sudo ai comandi).
sudo apt-get install oracle-java8-installer
-
alternative-di-aggiornamento-java (una versione java specifica di update-alternatives ):in Ubuntu diversi pacchetti forniscono le stesse funzionalità (navigare in internet, compilare mail, modificare un file di testo o fornire eseguibili java/javac...). Per consentire al sistema di scegliere lo strumento preferito dall'utente dato un compito specifico un meccanismo che utilizza collegamenti simbolici sotto
/etc/alternatives/
viene usato. Prova ad aggiornare il jdk come indicato sopra (passa da java 7 a java 8) e guarda come cambia l'output di questo comando:ls -l /etc/alternatives/java*
Nel nostro caso :sudo update-java-alternatives --set java-8-oracle
aggiorna i collegamenti simbolici in /etc/alternatives in modo che puntino agli eseguibili java-8-oracle.
Extra:
-
uomo
<command>
:inizia a usare man per leggere un aiuto davvero ben scritto e dettagliato su (quasi) tutti i comandi della shell e le sue opzioni (ogni comando che menziono in questa piccola risposta ha una pagina man, provaman update-java-alternatives
). -
apt-cache
search <search_key>
:interroga la cache APT per cercare un pacchetto correlato alla search_key fornita (può essere il nome del pacchetto o qualche parola nella descrizione del pacchetto). -
apt-cache
show <package>
:fornisce informazioni APT per un pacchetto specifico (versione del pacchetto, installata o meno, descrizione).