Come installo openjdk 7 su Ubuntu 16.04 o successivo?


120

Vorrei aggiornare il mio sistema principale a 16.04, ma lavoro su progetti che richiedono OpenJDK 7.

Apparentemente non è disponibile da un banale apt-get install openjdk-7-jdk. Solo le versioni 8 e 9 sono elencate nel repository.

Qualcuno può indicarmi le istruzioni su come installarlo?


Nel caso qualcuno si stia chiedendo perché vorresti ancora JDK 7, sono nella stessa situazione perché penso che neo4j 2.1.6 non stia giocando bene con Ubuntu 16.04 e l'unica cosa che posso vedere che potrebbe essere sbagliata è il JDK.
Sridhar Sarnobat,

Hai esplicitamente bisogno di openjdk 7 come JVM di sistema o hai solo bisogno di un runtime Java 7. Puoi scaricare quest'ultimo dagli archivi Oracle.
Thorbjørn Ravn Andersen,

Risposte:


146

Avviso di sicurezza

I pacchetti nel PPA menzionati di seguito non vengono aggiornati con patch di sicurezza a Java. Non utilizzare in produzione; vedi invece risposte alternative.

Al momento della stesura, l'ultimo upload per OpenJDK 7 è stato eseguito '22-04-2016' con la versione 7u95 ed è ancora disponibile come 'ultimo', dove Ubuntu 14.04 è stato aggiornato a 7u181 .


AGGIORNAMENTO: ANCHE QUESTO È IL PIÙ VOTATO RISPONDE PROBABILMENTE NON QUELLO CHE VUOI UTILIZZARE NEL 2018 A CAUSA DELLA MANCANZA DI AGGIORNAMENTI DI SICUREZZA DI QUESTO PPA.

Ho trovato le seguenti istruzioni che hanno funzionato per me:

sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update   
sudo apt-get install openjdk-7-jdk  

Questo definisce il "PPA per upload OpenJDK (limitato)" come un repository di pacchetti aggiuntivo, aggiorna le tue informazioni e installa il pacchetto con le sue dipendenze (da quel repository).


13
Se prima hai installato erroneamente openjdk-8 (come ho fatto io), dopo aver seguito questa risposta dovrai fare un sudo update-java-alternativesmodo per rendere openjdk-7 predefinito.
Rian Sanderson,

4
FYI: Questo al momento non funziona per il 16.10
ottico

19
-1 perché questo PPA è completamente obsoleto e ignora molte importanti patch di sicurezza. Totalmente inaccettabile avere questo installato, imo.
gertvdijk,

3
Inoltre, non funziona per 17.04.
Colin Harrington,

2
-1 anche come suggerito dal PPA è limitato e non è aggiornato.
delimitatore,

65

Modifica 22-lug-2019 : questa risposta al momento non funziona. I seguenti pacchetti JDK non sono più disponibili su Debian Experimental. In ogni caso, sono rimasti indietro rispetto ai pacchetti di Ubuntu Trusty che contenevano gli aggiornamenti di sicurezza più recenti. Si prega di fare riferimento alle altre risposte fino a quando ciò non può essere risolto (scusate, no ETA).


Non sembra che il manutentore di openjdk-r / ppa aggiornerà il pacchetto openjdk-7 oltre la versione 7u95-2.6.4-3. La descrizione di quel pacchetto "Copiato da debian sperimentale nell'archivio primario per Debian GNU / Linux" ci dà però un indizio su come gestirlo da soli.

Opzione 1: installazione manuale

  1. Scarica i pacchetti previsti per la tua architettura:
    (per la maggior parte degli utenti, questo significa amd64 se 64 bit o i386 se è installato Ubuntu 32 bit)

  2. (Tentativo di) installare i pacchetti utilizzando dpkg:

    Ubuntu 17.10 e precedenti:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*

    Ubuntu 18.04 e versioni successive:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. Controllare l'uscita da dpkg. Se ci fossero problemi di dipendenza - che è probabile - vedrai quanto segue (con la tua architettura sostituita da amd64):

    Si sono verificati errori durante l'elaborazione:
    OpenJDK-7-jre: amd64
    OpenJDK-7-jre-headless: amd64
    OpenJDK-7-JDK: amd64

    Se non ci sono stati problemi di dipendenza, ottimo, hai finito, vai al numero 4. Altrimenti, se è necessario risolvere alcuni problemi di dipendenza, questo viene gestito con:

    sudo apt install -f

    Si noti che non è necessario rieseguire dpkgdopo aver lasciato aptrisolvere le dipendenze. Completerà automaticamente l'installazione dei pacchetti openjdk.

  4. Aggiorna alternative java. È possibile visualizzare tutte le versioni Java installate con update-java-alternatives --list. Per attivare OpenJDK Java 1.7, eseguire:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

    È possibile notare un errore relativo alla IcedTeaPlugin.sonon disponibilità del plug-in. Questa non è una vera preoccupazione per gli sviluppatori che lavorano con JDK.

  5. Verifica che java funzioni:

    java -version

    che dovrebbe produrre qualcosa di simile a:

    versione java "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    VM del server OpenJDK a 64 bit (build 24.161-b01, modalità mista)

Opzione 2: installazione automatica (compresi gli aggiornamenti con apt)

Il pinning può essere utilizzato per installare e aggiornare openjdk-7-jdk e le sue dipendenze dai repository Debian.

  1. Crea un file pinning che dice aptdi considerare solo i pacchetti che ci interessano (di certo non vogliamo che la nostra intera distribuzione Ubuntu sia "aggiornata" con i pacchetti sperimentali Debian).

    Crea un file /etc/apt/preferences.d/debiancon i seguenti contenuti. Avrete bisogno di privilegi di superutente, in modo da utilizzare uno dei sudo vim, sudo nano, gksudo gedit, etc.

    Package: *
    Pin: release o=Debian,n=experimental
    Pin-Priority: -1
    
    Package: *
    Pin: release o=Debian,n=sid
    Pin-Priority: -1
    
    Package: openjdk-7-jdk
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre-headless
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: libjpeg62-turbo
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    

    Per Ubuntu 17.10 e precedenti, aggiungi anche quanto segue (e vedi la nota in fondo):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  2. Installa il portachiavi Debian:

    sudo apt install debian-archive-keyring

    Nota: sebbene questo sia il metodo più semplice per aggiungere il keyring debian, potrebbe non essere aggiornato. Verificare l'output come il seguente durante l'esecuzione apt updatenel passaggio 4:

    W: Errore GPG: http://cdn-fastly.deb.debian.org/debian InRelease sperimentale: le seguenti firme non possono essere verificate perché la chiave pubblica non è disponibile: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: Il repository "http://httpredir.debian.org/debian sperimentale InRelease" non è firmato.

    Se viene visualizzato questo errore, quindi aggiungere manualmente le chiavi necessarie con:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
    

    dove 8B48AD6246925553e 7638D0442B90D010dovrebbe corrispondere ai pubkeys che vedi nel messaggio di avviso.

  3. Aggiungi i repository necessari:

    sudo add-apt-repository 'deb http://httpredir.debian.org/debian experimental main'
    sudo add-apt-repository 'deb http://httpredir.debian.org/debian sid main'
    

    Perché non usare un repository Debian stabile? Incontrerai dipendenze insoddisfacenti con Debian stable. I repository sperimentali (per openjdk-7) e sid (per libjpeg62-turbo, libfontconfig1 e fontconfig-config) sono più indulgenti con le versioni di dipendenza.

  4. Aggiorna aptcache (aspettati che questo richieda un po 'di tempo poiché gli elenchi dei pacchetti di Debian sono grandi):

    sudo apt update
  5. Installa openjdk-7-jdk:

    sudo apt install openjdk-7-jdk
  6. Aggiorna alternative java. È possibile visualizzare tutte le versioni Java installate con update-java-alternatives --list. Per attivare OpenJDK Java 1.7, eseguire:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

    È possibile notare un errore relativo alla IcedTeaPlugin.sonon disponibilità del plug-in. Questa non è una vera preoccupazione per gli sviluppatori che lavorano con JDK.

  7. Verifica che java funzioni:

    java -version

    che dovrebbe produrre qualcosa di simile a:

    versione java "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    VM del server OpenJDK a 64 bit (build 24.161-b01, modalità mista)

note fontconfig

libfontconfig1e fontconfig-configdeve essere aggiornato alla versione 2.12 o successiva su Ubuntu 17.10 e precedenti. I pacchetti di aggiornamento di Debian non contengono le personalizzazioni di Ubuntu, quindi alcune applicazioni visualizzano brutti caratteri con questi pacchetti installati; ad es. Charles Web Debugging Proxy. A seconda dei programmi utilizzati, è possibile che il problema sia interessato o meno.


Risposta interessante, aggiornala se trovi un modo per mantenere questo pacchetto aggiornato automaticamente.
J.Serra,

Ho appena provato a installare jdk 7 su Ubuntu 16.04 e questo è l'unico modo in cui sono riuscito a farlo funzionare. Grazie!
link

2
@ J.Serra Risposta modificata con il metodo di aggiornamento automatico.
MDMower,

risposta perfetta soprattutto il metodo automatico è molto apprezzato! grazie per il tempo dedicato a capire e scrivere!
steadfasterX

1
Il metodo automatico ha funzionato principalmente per me, ma non è nemmeno del tutto permanente. Ho dovuto aggiungere altri due pacchetti a /etc/apt/preferences.d/debian (oltre a libjpeg62-turbo): libfontconfig1 e fontconfig-config
comodoro


0

Installa Java 7 su Ubuntu 16.04, Ubuntu 17.04

Si consiglia di installare Oracle Java , perché ha un vantaggio prestazionale su OpenJDK . Per questo motivo voglio pubblicare un'alternativa. Se si desidera installare Oracle Java, eseguire i seguenti comandi nel terminale per installarlo da PPA.

  1. Aggiungi i repository necessari:

    sudo add-apt-repository ppa:webupd8team/java
  2. Aggiorna aptcache e installa oracle-java7 :

    sudo apt update
    sudo apt install java-common oracle-java7-installer
    

    Durante il processo di installazione dovrai accettare il contratto di licenza Oracle . Una volta installato, dobbiamo impostare le variabili di ambiente Java come JAVA_HOME

  3. Variabili di ambiente Java corrette.

    sudo apt install oracle-java7-set-default
    source /etc/profile
    
  4. Verifica che java funzioni:

    java -version

    che dovrebbe produrre qualcosa di simile a:

    java version "1.7.0_80"
    Java(TM) SE Runtime Environment (build 1.7.0_80-u80)
    Java HotSpot(TM) 64-Bit Server VM (build 25.131-u80, mixed mode)
    

3
Il programma di installazione di Oracle non funziona più Connessione a download.oracle.com (download.oracle.com) | 184.51.150.144 |: 80 ... connesso. Richiesta HTTP inviata, in attesa di risposta ... 404 Not Found
autonomia

Per Oracle JDK, la società non offre supporto pubblico per JDK 7 (offrono supporto a pagamento). Penso che apt-getstia cercando di ottenere il programma di installazione da una pagina inesistente. - Se hai bisogno di JDK 7, puoi scaricare i programmi di installazione dal sito Web di Archive: oracle.com/technetwork/java/javase/downloads/…
Jaime

0

Alternativa Oracle JDK:

Volevo evitare lo sforzo con i repository perché cambio tra 7, 8 e 9, quindi ho finito con Oracle JDK piuttosto che OpenJDK. Scaricato dal sito ufficiale . Non sono sicuro che l'ultima build 80 contenga le stesse correzioni della build 161 di OpenJDK. Ma l'ho per lo sviluppo, quindi per me non significa molto.

Quindi è necessario impostare $JAVA_HOMEl'ambiente in modo che vari script raccolgano il JDK giusto (ad esempio Maven, JBoss ecc.).

Per completezza, la versione 7 di JDK è stata EOL, anche il supporto pubblico JDK 8 è terminato da settembre 2017 e non riceverà aggiornamenti pubblici dopo settembre 2018.


0

Usa i contenitori

Questa è una risposta universalmente valida su come eseguire il <outdated>software rimosso su <current>Ubuntu: containerizzare la tua applicazione .

Ad esempio, utilizza Docker e un'immagine di base Ubuntu precedente in cui il software che stai cercando è ancora disponibile / gestito.

Funziona anche al contrario; prova il software su una nuova o addirittura altra distribuzione Linux sul tuo Ubuntu stabile attualmente in esecuzione.

Esempio per Java 7 usando Ubuntu 14.04

  1. Installa Docker - La versione gratuita di Docker CE va bene. Vedere ad esempio https://docs.docker.com/install/linux/docker-ce/ubuntu/ o utilizzare il docker.iopacchetto nelle versioni recenti di Ubuntu fornite.

  2. In una cartella vuota, creare un file Dockerfile:

    FROM ubuntu:trusty
    RUN apt-get update \
        && apt-get install -y \
            openjdk-7-jdk \
        && rm -rf /var/lib/apt/lists/*
    
    ENTRYPOINT ["/usr/bin/java"]
    

    Aggiungi più pacchetti in quel comando se ne hai bisogno.

  3. In quella cartella, esegui:

    docker build -t gertvdijk/java7 .
  4. Esegui un comando all'interno di un contenitore monouso utilizzando l'immagine Java 7:

    Ad esempio java -version:

    docker run --rm -it gertvdijk/java7 -version

    Produzione:

    java version "1.7.0_181"
    OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.1)
    OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)
    
  5. Facoltativamente, crea un wrapper per comodità.

    • Crea un file /usr/local/bin/java7-in-dockercon contenuti:

      #!/usr/bin/env sh -e
      
      DOCKER_IMAGE=gertvdijk/java7
      PWD="$(pwd)"
      
      exec docker run \
        --rm -it \
        -v ${PWD}:${PWD} \
        -v "/etc/passwd:/etc/passwd:ro" \
        -v "/etc/group:/etc/group:ro" \
        --user "$(id -u):$(id -g)" \
        --workdir "${PWD}" \
        "${DOCKER_IMAGE}" \
        $@
      

      Ciò renderà disponibile la directory di lavoro corrente all'interno del contenitore, non l'intero file system, e rappresenterà il tuo account utente locale nello spazio dei nomi del contenitore.

    • Segna come eseguibile:

      sudo chmod +x /usr/local/bin/java7-in-docker
  6. Esegui Java 7 in modo trasparente, in questo modo:

    java7-in-docker -jar relative/path/to/some.jar

14.04 non viene più mantenuto se non si paga per la manutenzione estesa (fino al 2022).
Thorbjørn Ravn Andersen,

-2

Un modo semplice è:

Aggiungi queste righe a /etc/apt/sources.list::

deb http://security.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

Quindi aggiorna apt e install. Probabilmente dovrai effettuare il downgrade del tzdatapacchetto.

Dopodiché, consiglierei di commentare quelle righe e apt aggiorna nuovamente per impedire l'installazione o l'aggiornamento dei pacchetti da quel repository (che potrebbe portare a comportamenti imprevisti).

Un problema è che devi conservare quei pacchetti in modo che non vengano rimossi quando aggiorni il tuo sistema (specialmente i tzdatapacchetti).

NOTA : utilizzare questo metodo come ultima risorsa, preferire qualsiasi altro che consentirà l'aggiornamento senza problemi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.