Come installo openjdk 7 su Ubuntu 16.04 o successivo?

111

Vorrei aggiornare il mio sistema principale alla 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?

    
posta onairda 23.04.2016 - 12:18

8 risposte

142
% Bl0ck_qu0te%

AGGIORNAMENTO: ANCHE QUESTA È LA RISPOSTA PIÙ VOTATA È PROBABILMENTE NON QUELLA CHE VUOI USARE NEL 2018 A CAUSA DI MANCANZA AGGIORNAMENTI DI SICUREZZA DI QUESTO PAD.

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 "PPA per OpenJDK uploads (restricted)" come repository aggiuntivo di un pacchetto, aggiorna le tue informazioni e installa il pacchetto con le sue dipendenze (da quel repository).

    
risposta data onairda 24.04.2016 - 00:34
48

Non sembra che il maintainer 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 in Primary Archive per Debian GNU / Linux" ci dà un indizio su come gestirlo da soli, però.

Opzione 1: installazione manuale

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

  2. (Tentativo di) installare i pacchetti usando 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. Controlla l'output da dpkg . Se ci sono stati problemi di dipendenza - che è probabile - vedrai quanto segue (con la tua architettura sostituita per amd64):

    Errors were encountered while processing:
    openjdk-7-jre:amd64
    openjdk-7-jre-headless:amd64
    openjdk-7-jdk:amd64

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

    sudo apt install -f
    

    Si noti che non è necessario rieseguire dpkg dopo aver lasciato che apt risolva le dipendenze. Completerà automaticamente l'installazione dei pacchetti openjdk.

  4. Aggiorna le alternative java. Puoi 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
    

    Potresti notare un errore sul plug-in IcedTeaPlugin.so non disponibile. 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:

    java version "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (build 24.161-b01, mixed mode)

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

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 a apt di considerare solo i pacchetti che ci interessano (di certo non vogliamo che la nostra intera distribuzione di Ubuntu sia "aggiornata" con i pacchetti sperimentali di Debian).

    Crea file /etc/apt/preferences.d/debian con i seguenti contenuti. Avrai bisogno dei privilegi di superutente, quindi usa uno di sudo vim , sudo nano , gksudo gedit , ecc.

    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 le seguenti (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: mentre questo è il metodo più semplice per aggiungere il portachiavi di Debian, potrebbe non essere aggiornato. Verifica l'output come segue quando esegui apt update nel passaggio 4:

    W: GPG error: http://cdn-fastly.deb.debian.org/debian experimental InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: The repository 'http://httpredir.debian.org/debian experimental InRelease' is not signed.

    Se vedi questo errore, aggiungi 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 8B48AD6246925553 e 7638D0442B90D010 devono corrispondere ai pubkey visualizzati 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? Esegui delle 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 apt cache (aspettati che ci voglia un po 'di tempo da quando gli elenchi di pacchetti di Debian sono grandi):

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

    sudo apt install openjdk-7-jdk
    
  6. Aggiorna le alternative java. Puoi 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
    

    Potresti notare un errore sul plug-in IcedTeaPlugin.so non disponibile. 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:

    java version "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (build 24.161-b01, mixed mode)

note fontconfig

libfontconfig1 e fontconfig-config devono essere aggiornati a 2.12 o versioni successive 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; per esempio. Charles Web Debugging Proxy. A seconda dei programmi che utilizzi, potresti essere interessato o meno a questo problema.

    
risposta data MDMower 27.07.2016 - 16:51
6

È possibile scaricare OpenJDK 7 di Azul, che può soddisfare le tue esigenze. Entrambi hanno un DEB (per il sistema di pacchetti) e una distribuzione ZIP. Ho lavorato solo con la distribuzione ZIP.

link

    
risposta data Thorbjørn Ravn Andersen 23.10.2016 - 21:10
0

Installa Java 7 su Ubuntu 16.04, Ubuntu 17.04

Si consiglia di installare Oracle Java , perché ha un vantaggio sul rendimento rispetto a 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 apt cache e installa oracle-java7 :

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

    Durante il processo di installazione dovrai accettare l'accordo Licenza Oracle . Una volta installato, è necessario impostare variabili di ambiente Java come JAVA_HOME

  3. Correggere le variabili di ambiente Java.

    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)
    
risposta data Teocci 26.06.2017 - 19:17
0

Alternativa JDK Oracle:

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

Quindi devi impostare $JAVA_HOME nell'ambiente in modo che vari script prendano il JDK corretto (ad es. Maven, JBoss ecc.).

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

    
risposta data Ondra Žižka 19.11.2017 - 17:58
0

Usa contenitori

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

Ad esempio, usa Docker e una vecchia immagine base di Ubuntu in cui il software che stai cercando è ancora disponibile / mantenuto.

Funziona anche il contrario; prova il software su una nuova o anche altra distribuzione Linux sulla tua Ubuntu attualmente in esecuzione.

Esempio per Java 7 con Ubuntu 14.04

  1. Installa Docker - La versione gratuita di Docker CE va bene. Vedi ad esempio link o usa il pacchetto docker.io nelle recenti versioni di Ubuntu spedite.

  2. In una cartella vuota, crea 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 altri pacchetti in quel comando se ti serve.

  3. In questa cartella, esegui:

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

    es. % Co_de%:

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

    Output:

    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 java -version con 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}" \
        [email protected]
      

      Questo renderà la directory di lavoro corrente disponibile all'interno del contenitore, non il tuo intero filesystem, e impersonerà il tuo account utente locale nello spazio dei nomi del contenitore.

    • Contrassegnalo 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
    
risposta data gertvdijk 27.07.2018 - 00:21
0

Un'aggiunta alla risposta di MDMower di cui sopra sull'installazione manuale o automatica. (*)

Su Ubuntu 16.04.5 LTS con kernel hwe-16.04-edge e Cinnamon come DE, ho riscontrato un comportamento imprevisto dei font all'installazione / aggiornamento di libfontconfig1 e alla sua dipendenza fontconfig-config. All'improvviso, ho avuto caratteri strani e sottili e poco leggibili mono-spazio e altri caratteri "brutti" nelle barre dei menu di molte applicazioni, così come nelle finestre del terminale e in molti altri posti in tutte le mie applicazioni.

Nel caso in cui si verifichi questo problema: Sembra che non ci sia alcuna correzione funzionante in fase di esecuzione per questo. Non perdere tempo a cercare un'impostazione da correggere in qualsiasi delle preferenze di Cinnamon o Gnome o FontConfig o del terminale (ad esempio gconf-editor / gconftool, gnome-tweak-tool, fc- *). Ciò non avrà alcun effetto sui caratteri "interrotti". Sembra che l'aggiornamento di Fontconfig-Config reimposti in qualche modo i riferimenti noti / memorizzati nella cache a determinati tipi di carattere, e alcuni font di fallback vengono invece sottoposti a rendering, pur continuando a fare riferimento ai caratteri con il loro nome originale.

Riavvia semplicemente il sistema e tutto torna alla normalità. Anche solo il logout e il ritorno potrebbero essere sufficienti.

(*) Questo dovrebbe essere un'aggiunta o un commento alla risposta sopra di @MDMower, ma la "reputazione" insufficiente di StackExchange mi impedisce di postarla come un commento. La mia modifica è stata rifiutata (in parte anche correttamente), quindi questa "risposta" di spam è stata sostituita. Scusate. Sarei felice se qualcuno con abbastanza "potere" potesse spostare questa "risposta" per essere un commento, a cui appartiene. Grazie!

    
risposta data R. Cocinero 27.07.2018 - 12:55
-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 installa. Probabilmente dovrai eseguire il downgrade del pacchetto tzdata .

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

Un problema è che devi tenere quei pacchetti in modo che non vengano rimossi quando aggiorni il tuo sistema (specialmente il pacchetto tzdata ).

NOTA : utilizza questo metodo come ultima risorsa, preferisci qualsiasi altro che ti consenta di aggiornare senza problemi.

    
risposta data lepe 05.12.2016 - 10:29

Leggi altre domande sui tag