it-swarm.com.de

Wie installiere ich openjdk 7 unter Ubuntu 16.04 oder höher?

Ich möchte mein Hauptsystem auf 16.04 upgraden, arbeite aber an Projekten, die OpenJDK 7 erfordern.

Anscheinend ist es nicht von einem trivialen apt-get install openjdk-7-jdk verfügbar. Im Repository sind nur die Versionen 8 und 9 aufgeführt.

Kann mir jemand Anweisungen zur Installation geben?

120
onairda

Sicherheitswarnung

Pakete in der unten genannten PPA werden nicht mit Sicherheitspatches für Java aktualisiert. Nicht in der Produktion verwenden. sehen Sie stattdessen alternative Antworten.

Zum Zeitpunkt des Schreibens wurde der letzte Upload für OpenJDK 7 am 22.04.2016 mit der Version 7u95 durchgeführt und ist weiterhin als 'latest' verfügbar, wobei Ubuntu 14.04 aktualisiert auf 7u181 .


UPDATE: ALTHOUGH DIESES IS DIE AM MEISTEN ABGEGEBENE ANTWORT IST MÖGLICHERWEISE NICHT DIE, DIE SIE 2018 VERWENDEN MÖCHTEN, WEGEN SICHERHEITS-UPDATES DURCH DIESES PPA.

Ich fand die folgenden Anweisungen, die für mich arbeiteten:

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

Dies definiert die "PPA für OpenJDK-Uploads (eingeschränkt)" als zusätzliches Paket-Repository, aktualisiert Ihre Informationen und installiert das Paket mit seinen Abhängigkeiten (von diesem Repository).

146
onairda

Edit 22-Jul-2019 : Diese Antwort funktioniert derzeit nicht. Die unten genannten JDK-Pakete sind bei Debian Experimental nicht mehr verfügbar. In jedem Fall blieben sie hinter den Paketen von Ubuntu Trusty zurück, die neuere Sicherheitsupdates enthielten. Bitte lesen Sie die anderen Antworten, bis dies behoben werden kann (sorry, keine ETA).


Es sieht nicht so aus, als würde der Betreuer von openjdk-r/ppa das openjdk-7-Paket über die Version 7u95-2.6.4-3 hinaus aktualisieren. Die Beschreibung des Pakets "Aus debian experimental in Primary Archive für Debian GNU/Linux kopiert" gibt uns jedoch einen Hinweis darauf, wie wir damit umgehen sollen.

Option 1: Manuelle Installation

  1. Laden Sie die für Ihre Architektur bestimmten Pakete herunter:
    (für die meisten Benutzer bedeutet dies AMD64 bei 64-Bit- oder i386 bei 32-Bit-Ubuntu-Installation)

  2. (Versuch) die Pakete mit dpkg zu installieren:

    Ubuntu 17.10 und früher:

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

    Ubuntu 18.04 und höher:

    Sudo dpkg -i openjdk-7-* libjpeg62-turbo*
    
  3. Überprüfen Sie die Ausgabe von dpkg. Wenn Abhängigkeitsprobleme aufgetreten sind (was wahrscheinlich ist), wird Folgendes angezeigt (wobei Ihre Architektur AMD64 ersetzt):

    Bei der Verarbeitung sind Fehler aufgetreten: 
     Openjdk-7-jre: AMD64 
     Openjdk-7-jre-headless: AMD64 
     Openjdk-7-jdk: AMD64

    Wenn keine Abhängigkeitsprobleme aufgetreten sind, fahren Sie mit Schritt 4 fort. Andernfalls wird Folgendes ausgeführt, wenn Sie einige Abhängigkeitsprobleme lösen müssen:

    Sudo apt install -f
    

    Beachten Sie, dass Sie dpkg nicht erneut ausführen müssen, nachdem Sie apt Abhängigkeiten aufgelöst haben. Die Installation der openjdk-Pakete wird automatisch beendet.

  4. Aktualisieren Sie Java Alternativen. Sie können alle installierten Java Versionen mit update-Java-alternatives --list anzeigen. Führen Sie zum Aktivieren von OpenJDK Java 1.7 Folgendes aus:

    Sudo update-Java-alternatives -s Java-1.7.0-openjdk-AMD64
    

    Möglicherweise bemerken Sie einen Fehler, dass das IcedTeaPlugin.so -Plugin nicht verfügbar ist. Dies ist für Entwickler, die mit dem JDK arbeiten, kein wirkliches Problem.

  5. Überprüfen Sie, ob Java funktioniert:

    Java -version
    

    was sollte etwas ähnliches ausgeben:

    Java-Version "1.7.0_161" 
     OpenJDK-Laufzeitumgebung (IcedTea 2.6.12) (7u161-2.6.12-1) 
     OpenJDK 64-Bit-Server VM (Build 24.161 -b01, gemischter Modus)

Option 2: Automatische Installation (einschließlich Updates mit apt)

Pinning kann verwendet werden, um openjdk-7-jdk und seine Abhängigkeiten von Debian-Repositories zu installieren und zu aktualisieren.

  1. Erstellen Sie eine Pinning-Datei, die apt anweist, nur Pakete zu berücksichtigen, die uns interessieren (wir möchten mit Sicherheit nicht, dass unsere gesamte Ubuntu-Distribution mit experimentellen Debian-Paketen "aufgerüstet" wird).

    Erstellen Sie die Datei /etc/apt/preferences.d/debian mit dem folgenden Inhalt. Sie benötigen Superuser-Berechtigungen, verwenden Sie also einen der folgenden Befehle: Sudo vim, Sudo nano, gksudo gedit usw.

    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
    

    Fügen Sie für Ubuntu 17.10 und früher außerdem Folgendes hinzu (siehe Hinweis unten):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  2. Installieren Sie den Debian-Schlüsselring:

    Sudo apt install debian-archive-keyring
    

    Hinweis: Dies ist zwar die einfachste Methode, um den Debian-Schlüsselring hinzuzufügen, sie ist jedoch möglicherweise nicht auf dem neuesten Stand. Überprüfen Sie die Ausgabe wie folgt, wenn Sie in Schritt 4 apt update ausführen:

    W: GPG-Fehler: http://cdn-fastly.deb.debian.org/debian experimental InRelease: Die folgenden Signaturen konnten nicht überprüft werden, da der öffentliche Schlüssel nicht verfügbar ist: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010 
     E: Das Repository 'http://httpredir.debian.org/debian experimental InRelease' ist nicht signiert.

    Wenn Sie diesen Fehler sehen, fügen Sie die erforderlichen Schlüssel manuell hinzu mit:

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

    dabei sollten 8B48AD6246925553 und 7638D0442B90D010 mit den Pubkeys übereinstimmen, die Sie in der Warnmeldung sehen.

  3. Fügen Sie die erforderlichen Repositorys hinzu:

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

    Warum nicht ein stabiles Debian-Repository verwenden? Sie werden mit Debian stable auf unbefriedigende Abhängigkeiten stoßen. Die experimentellen Repositorys (für openjdk-7) und sid-Repositorys (für libjpeg62-turbo, libfontconfig1 und fontconfig-config) sind in Abhängigkeitsversionen weniger anfällig.

  4. Aktualisiere apt Cache (es wird eine Weile dauern, da Debians Paketlisten groß sind):

    Sudo apt update
    
  5. Installieren Sie openjdk-7-jdk:

    Sudo apt install openjdk-7-jdk
    
  6. Aktualisieren Sie Java Alternativen. Sie können alle installierten Java Versionen mit update-Java-alternatives --list anzeigen. Führen Sie zum Aktivieren von OpenJDK Java 1.7 Folgendes aus:

    Sudo update-Java-alternatives -s Java-1.7.0-openjdk-AMD64
    

    Möglicherweise bemerken Sie einen Fehler, dass das IcedTeaPlugin.so -Plugin nicht verfügbar ist. Dies ist für Entwickler, die mit dem JDK arbeiten, kein wirkliches Problem.

  7. Überprüfen Sie, ob Java funktioniert:

    Java -version
    

    was sollte etwas ähnliches ausgeben:

    Java-Version "1.7.0_161" 
     OpenJDK-Laufzeitumgebung (IcedTea 2.6.12) (7u161-2.6.12-1) 
     OpenJDK 64-Bit-Server VM (Build 24.161 -b01, gemischter Modus)

fontconfig notes

libfontconfig1 und fontconfig-config müssen unter Ubuntu 17.10 und früher auf 2.12 oder höher aktualisiert werden. Die Update-Pakete von Debian enthalten keine Ubuntu-Anpassungen, so dass einige Anwendungen hässliche Schriftarten anzeigen, wenn diese Pakete installiert sind. z.B. Charles Web Debugging Proxy. Abhängig von den von Ihnen verwendeten Programmen sind Sie möglicherweise von diesem Problem betroffen oder nicht.

65
MDMower

Sie können ein OpenJDK 7 von Azul herunterladen, das Ihren Anforderungen entspricht. Beide haben eine DEB (für das Paketsystem) und eine Zip-Distribution. Ich habe nur mit der Zip-Distribution gearbeitet.

http://www.azul.com/downloads/zulu/zulu-linux/

Behälter verwenden

Dies ist eine allgemein gültige Antwort auf die Frage, wie <outdated> entfernte Software auf <current> ausgeführt wird. Ubuntu: Containerisieren Sie Ihre Anwendung .

Verwenden Sie beispielsweise Docker und ein älteres Ubuntu-Basis-Image, in dem die gesuchte Software noch verfügbar ist.

Es funktioniert auch umgekehrt; Probieren Sie die Software auf einer neueren oder sogar einer anderen Linux-Distribution auf Ihrem derzeit stabilen Ubuntu aus.

Beispiel für Java 7 unter Ubuntu 14.04

  1. Docker installieren - Die kostenlose Docker CE-Version ist in Ordnung. Siehe zum Beispiel https://docs.docker.com/install/linux/docker-ce/ubuntu/ oder verwende das docker.io -Paket in den neuesten Ubuntu-Versionen.

  2. Erstellen Sie in einem leeren Ordner eine Datei 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"]
    

    Fügen Sie in diesem Befehl weitere Pakete hinzu, wenn Sie dies benötigen.

  3. Führen Sie in diesem Ordner Folgendes aus:

    docker build -t gertvdijk/Java7 .
    
  4. Führen Sie einen Befehl in einem Einwegcontainer mit dem folgenden Java 7-Image aus:

    Z.B. Java -version:

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

    Ausgabe:

    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. Optional können Sie einen Wrapper erstellen.

    • Erstellen Sie eine Datei /usr/local/bin/Java7-in-docker mit folgendem Inhalt:

      #!/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]
      

      Dadurch wird das aktuelle Arbeitsverzeichnis im Container verfügbar - nicht in Ihrem gesamten Dateisystem, und es wird die Identität Ihres lokalen Benutzerkontos im Containernamensraum angenommen.

    • Markiere es als ausführbar:

      Sudo chmod +x /usr/local/bin/Java7-in-docker
      
  6. Führen Sie Ihr Java 7 folgendermaßen transparent aus:

    Java7-in-docker -jar relative/path/to/some.jar
    
0
gertvdijk

Installieren Sie Java 7 unter Ubuntu 16.04, Ubuntu 17.04

Es wird empfohlen, Oracle Java zu installieren, da es einen Leistungsvorteil gegenüber OpenJDK aufweist. Aus diesem Grund möchte ich eine Alternative posten. Wenn Sie Oracle Java installieren möchten, führen Sie die folgenden Befehle im Terminal aus, um es von PPA aus zu installieren.

  1. Fügen Sie die erforderlichen Repositorys hinzu:

    Sudo add-apt-repository ppa:webupd8team/Java
    
  2. Aktualisiere apt Cache und installiere Oracle-Java7:

    Sudo apt update
    Sudo apt install Java-common Oracle-Java7-installer
    

    Während des Installationsvorgangs müssen Sie die Oracle License Vereinbarung akzeptieren. Einmal installiert, müssen wir Java Umgebungsvariablen wie Java_HOME setzen

  3. Korrigieren Sie Java Umgebungsvariablen.

    Sudo apt install Oracle-Java7-set-default
    source /etc/profile
    
  4. Überprüfen Sie, ob Java funktioniert:

    Java -version
    

    was sollte etwas ähnliches ausgeben:

    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)
    
0
Teocci

Eine Ergänzung zu der obigen Antwort von MDMower zur manuellen oder automatischen Installation. (*)

Unter Ubuntu 16.04.5 LTS mit hwe-16.04-Edge-Kerneln und Cinnamon als DE trat bei der Installation/dem Upgrade von libfontconfig1 und seiner Abhängigkeit fontconfig-config ein unerwartetes Schriftverhalten auf. Plötzlich hatte ich seltsame und dünne und kaum lesbare Mono-Space-Schriften und andere "hässliche" Schriften in den Menüleisten vieler Anwendungen sowie in Terminalfenstern und an vielen anderen Stellen in meinen Anwendungen.

Falls Sie auf dieses Problem stoßen: Es scheint zur Laufzeit keine funktionierende Lösung dafür zu geben. Es macht keinen Sinn, Ihre Zeit damit zu verschwenden, nach einer Einstellung zu suchen, die in den Einstellungen von Cinnamon, Gnome, FontConfig oder Ihrem Terminal korrigiert werden kann (z. B. gconf-editor/gconftool, gnome-Tweak-tool, fc- *). Das hat keinen Einfluss auf die "kaputten" Schriften. Es scheint, dass das Update von Fontconfig-Config bekannte/zwischengespeicherte Verweise auf bestimmte Schriftarten zurücksetzt, und stattdessen werden einige Ersatzschriftarten gerendert, während sie weiterhin mit ihrem ursprünglichen Namen auf die Schriftarten verweisen.

Starten Sie einfach Ihr System neu und alles ist wieder normal. Schon das An- und Abmelden kann ausreichen.


(*) Dies sollte eine Ergänzung oder ein Kommentar zu der obigen Antwort von @MDMower sein, aber ein unzureichender "Ruf" von StackExchange hindert mich daran, ihn als Kommentar zu veröffentlichen. Meine Bearbeitung wurde ebenfalls (teilweise zu Recht) abgelehnt, daher stattdessen diese spammy "Antwort". Es tut uns leid. Ich würde mich freuen, wenn jemand mit genügend "Power" diese "Antwort" als Kommentar verschieben könnte, wo sie hingehört. Vielen Dank!

0
R. Cocinero

Oracle JDK-Alternative:

Ich wollte den Aufwand mit Repositorys vermeiden, da ich zwischen 7, 8 und 9 wechsle, sodass ich Oracle JDK anstelle von OpenJDK verwendet habe. Heruntergeladen von der offiziellen Seite . Ich bin mir nicht sicher, ob der neueste Build 80 dieselben Fixes enthält wie OpenJDKs Build 161. Aber ich habe es für die Entwicklung, sodass mir das sowieso nicht viel bedeutet.

Dann müssen Sie $Java_HOME in der Umgebung einstellen, damit verschiedene Skripte das richtige JDK (z. B. Maven, JBoss usw.) aufnehmen.

Der Vollständigkeit halber wurde JDK Version 7 EOL'ed, auch wenn der öffentliche Support für JDK 8 seit September 2017 eingestellt ist und nach September 2018 keine öffentlichen Updates mehr erhalten.

0
Ondra Žižka