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

105

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

Scheinbar ist es nicht von einem trivialen apt-get install openjdk-7-jdk verfügbar. Nur die Versionen 8 und 9 sind im Repository aufgelistet.

Kann mir jemand Anweisungen zur Installation geben?

    
onairda 23.04.2016, 12:18

8 Antworten

136
  

Sicherheitswarnung

     

Pakete in der unten genannten PPA werden nicht mit Sicherheit aktualisiert   Patches für Java. Nicht in der Produktion verwenden; Siehe alternative Antworten   stattdessen.

     

Zum Zeitpunkt des Schreibens war der letzte Upload für OpenJDK 7 abgeschlossen   '2016-04-22' mit Version 7u95 und immer noch als 'aktuell' verfügbar, wo   Ubuntu 14.04 wurde auf 7u181 .

UPDATE: OBWOHL DAS IST DIE MEIST GEWÄHLTE ANTWORT, SEINE MÖGLICHERWEISE NICHT DIE, DIE SIE IM JAHR 2018 VERWENDEN MÖCHTEN, WÄHREND DER SICHERHEITS UPDATES DURCH DIESE PPA.

Ich habe die folgenden Anweisungen gefunden, die für mich funktionierten:

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ätzliche Paketspeicherung, aktualisiert Ihre Informationen und installiert das Paket mit seinen Abhängigkeiten (von diesem Repository).

    
onairda 24.04.2016 00:34
46

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

Option 1: Manuelle Installation

  1. Laden Sie die für Ihre Architektur vorgesehenen Pakete herunter:
    (Für die meisten Benutzer bedeutet das amd64 wenn 64bit, oder i386 wenn 32bit Ubuntu installiert ist)

  2. (Versuch zu) Installieren Sie die Pakete mit dpkg :

    Ubuntu 17.10 und früher:

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

    Ubuntu 18.04 und später:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
    
  3. Überprüfen Sie die Ausgabe von dpkg . Wenn es Abhängigkeitsprobleme gab - was wahrscheinlich ist - werden Sie Folgendes sehen (mit Ihrer Architektur ersetzt amd64):

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

    Wenn es keine Abhängigkeitsprobleme gab, großartig, du bist fertig, gehe zu # 4. Andernfalls müssen Sie, falls Sie einige Abhängigkeitsprobleme lösen müssen, Folgendes tun:

    sudo apt install -f
    

    Beachten Sie, dass dpkg nicht erneut ausgeführt werden muss, nachdem apt Abhängigkeiten aufgelöst wurden. 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. Um OpenJDK Java 1.7 zu aktivieren, führen Sie:

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

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

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

    java -version
    

    sollte etwas ähnliches ausgeben wie:

    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)

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. Erstelle eine Pinning-Datei, die apt anweist, nur Pakete zu berücksichtigen, die uns interessieren (wir wollen natürlich nicht, dass unsere gesamte Ubuntu-Distribution mit Debian-Test-Paketen "aufgerüstet" wird).

    Erstellen Sie die Datei /etc/apt/preferences.d/debian mit den folgenden Inhalten. Sie benötigen Superuser-Privilegien, verwenden Sie also eines von 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
    

    Fügen Sie für Ubuntu 17.10 und früher auch Folgendes hinzu (und beachten Sie den 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üsselbund:

    sudo apt install debian-archive-keyring
    

    Hinweis: Dies ist zwar die einfachste Methode zum Hinzufügen des Debian-Schlüsselbunds, ist jedoch möglicherweise nicht aktuell. Überprüfen Sie die Ausgabe wie folgt, wenn Sie apt update in Schritt 4 ausführen:

    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.

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

    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 den Pubkeys entsprechen, die in der Warnmeldung angezeigt werden.

  3. Fügen Sie die benötigten Repositories 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 in unerfüllbare Abhängigkeiten von Debian stable geraten. Die experimentellen Repositorys (für openjdk-7) und sid (für libjpeg62-turbo, libfontconfig1 und fontconfig-config) sind mit Abhängigkeitsversionen milder.

  4. Aktualisieren Sie apt cache (erwarten Sie, dass dies eine Weile dauert, 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. Um OpenJDK Java 1.7 zu aktivieren, führen Sie:

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

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

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

    java -version
    

    sollte etwas ähnliches ausgeben wie:

    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)

fontconfig-Notizen

libfontconfig1 und fontconfig-config müssen unter Ubuntu 17.10 und früher auf 2.12 oder später aktualisiert werden. Die Update-Pakete von Debian enthalten keine Ubuntu-Anpassungen, daher zeigen einige Anwendungen hässliche Schriftarten mit diesen installierten Paketen an; z.B. Charles Web Debugging Proxy. Abhängig von den Programmen, die Sie verwenden, sind Sie möglicherweise von diesem Problem betroffen oder nicht.

    
MDMower 27.07.2016 16:51
5

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

Link

    
0

Installiere 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 veröffentlichen. Wenn Sie Oracle Java installieren möchten, führen Sie die folgenden Befehle im Terminal aus, um es von PPA zu installieren.

  1. Fügen Sie die benötigten Repositories hinzu:

    sudo add-apt-repository ppa:webupd8team/java
    
  2. Aktualisieren Sie apt cache und installieren Sie oracle-java7 :

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

    Während des Installationsprozesses müssen Sie die Oracle License Vereinbarung akzeptieren. Nach der Installation müssen wir Java-Umgebungsvariablen wie JAVA_HOME

    setzen
  3. Korrigiere Java-Umgebungsvariablen.

    sudo apt install oracle-java7-set-default
    source /etc/profile
    
  4. Überprüfen Sie, ob Java funktioniert:

    java -version
    

    sollte etwas ähnliches ausgeben wie:

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

Oracle JDK Alternative:

Ich wollte den Aufwand mit Repositories vermeiden, weil ich zwischen 7, 8 und 9 umschalte, also endete ich mit Oracle JDK anstatt mit OpenJDK. Heruntergeladen von der offiziellen Website . Ich bin mir nicht sicher, ob der neueste Build 80 die gleichen Fixes enthält wie der Build 161 von OpenJDK. Aber ich habe es für die Entwicklung, das bedeutet mir sowieso nicht viel.

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

Aus Gründen der Vollständigkeit wurde die JDK-Version 7 mit EOL-Unterstützung versehen, sogar die öffentliche Unterstützung von JDK 8 ist "Ja" wird seit September 2017 gekündigt und wird nach September 2018 keine öffentlichen Updates mehr erhalten.

    
Ondra Žižka 19.11.2017 17:58
0

Verwenden Sie Container

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

Verwenden Sie zum Beispiel Docker und ein älteres Ubuntu-Basis-Image, in dem die Software, nach der Sie suchen, noch verfügbar / gepflegt ist.

Es funktioniert auch umgekehrt; Probiere die Software auf einer neueren oder gar anderen Linux-Distribution auf deinem aktuell laufenden stabilen Ubuntu aus.

Beispiel für Java 7 mit Ubuntu 14.04

  1. Installieren Sie Docker - Docker CE kostenlose Version ist in Ordnung. Siehe zum Beispiel Link oder verwende das docker.io -Paket in neueren Ubuntu-Versionen, die geliefert wurden.

  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 weitere Pakete in diesem Befehl hinzu, wenn Sie das brauchen.

  3. In diesem Ordner:

    ausführen
    docker build -t gertvdijk/java7 .
    
  4. Führen Sie einen Befehl in einem Einweg-Container mit diesem Java 7-Image aus:

    z. 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 aus praktischen Gründen einen Wrapper erstellen.

    • Erstellen Sie eine Datei /usr/local/bin/java7-in-docker mit 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 innerhalb des Containers verfügbar gemacht - nicht Ihr gesamtes Dateisystem, und es nimmt die Identität Ihres lokalen Benutzerkontos im Container-Namespace an.

    • Als ausführbar markieren:

      sudo chmod +x /usr/local/bin/java7-in-docker
      
  6. Führen Sie Ihr Java 7 transparent wie folgt aus:

    java7-in-docker -jar relative/path/to/some.jar
    
gertvdijk 27.07.2018 00:21
0

Eine Ergänzung zu MDMowers Antwort oben zur manuellen oder automatischen Installation. (*)

Unter Ubuntu 16.04.5 LTS mit hwe-16.04-edge kernels und Cinnamon als DE habe ich bei der Installation / Aktualisierung von libfontconfig1 und seiner Abhängigkeit fontconfig-config ein unerwartetes Schriftverhalten festgestellt. Plötzlich hatte ich seltsame und dünne und kaum lesbare Monospace-Fonts und andere "hässliche" Fonts in vielen Anwendungsmenüleisten sowie in Terminalfenstern und an vielen anderen Stellen meiner Anwendungen.

Falls dieses Problem auftritt: Zur Laufzeit scheint es keine funktionierende Lösung zu geben. Kein Problem damit, Zeit damit zu verschwenden, nach einer Einstellung zu suchen, die die Voreinstellungen von Cinnamon oder Gnome oder FontConfig oder Ihres Terminals korrigiert (z. B. gconf-editor / gconftool, gnome-tweak-tool, fc *). Das hat keine Auswirkungen auf die "kaputten" Schriften. Es scheint, dass das Update von Fontconfig-Config irgendwie bekannte / zwischengespeicherte Verweise auf bestimmte Zeichensätze zurücksetzt und stattdessen einige Fallback-Zeichensätze gerendert werden, während sie immer noch auf die Zeichensätze mit ihrem ursprünglichen Namen verweisen.

Starten Sie einfach Ihr System neu und alles ist wieder normal. Es genügt sogar, sich einfach an- und abzumelden.

(*) Dies sollte eine Ergänzung oder ein Kommentar zur obigen Antwort von @MDMower sein, aber ungenügende StackExchange "Reputation" verbietet es mir, sie als Kommentar zu veröffentlichen. Meine Bearbeitung wurde abgelehnt (teilweise zu Recht), daher auch diese Spam-Antwort. Es tut uns leid. Ich würde mich freuen, wenn jemand mit genügend "Power" diese "Antwort" als Kommentar verschieben könnte, wo er hingehört. Danke!

    
R. Cocinero 27.07.2018 12:55
-2

Ein einfacher Weg ist:

Fügen Sie diese Zeilen zu: /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

Aktualisieren Sie dann apt und installieren Sie. Sie müssen wahrscheinlich tzdata package downgraden.

Danach würde ich empfehlen, diese Zeilen zu kommentieren und apt erneut zu aktualisieren, um die Installation oder Aktualisierung von Paketen aus diesem Repository zu verhindern (was zu unerwartetem Verhalten führen könnte).

Ein Problem besteht darin, dass Sie diese Pakete behalten müssen, damit sie nicht entfernt werden, wenn Sie Ihr System aktualisieren (speziell tzdata -Paket).

HINWEIS : Verwenden Sie diese Methode als letzten Ausweg, bevorzugen Sie einen anderen, der es Ihnen ermöglicht, ohne Probleme zu aktualisieren.

    
lepe 05.12.2016 10:29

Tags und Links