Jak zainstalować openjdk 7 na Ubuntu 16.04 lub nowszym?

120

Chciałbym zaktualizować mój główny system do 16.04, ale pracuję nad projektami, które wymagają OpenJDK 7.

Najwyraźniej nie jest dostępny z trywialnego apt-get install openjdk-7-jdk. W repozytorium wymieniono tylko wersje 8 i 9.

Czy ktoś może wskazać mi instrukcje dotyczące jego instalacji?

onairda
źródło
W przypadku, gdy ktoś zastanawia się, dlaczego nadal chciałbyś mieć JDK 7, jestem w tej samej sytuacji, ponieważ myślę, że neo4j 2.1.6 nie gra dobrze z Ubuntu 16.04, a jedyne, co mogę zobaczyć, może być złe, to JDK.
Sridhar Sarnobat
Czy jawnie potrzebujesz openjdk 7 jako systemowej maszyny JVM, czy potrzebujesz tylko środowiska wykonawczego Java 7. Możesz pobrać ten ostatni z archiwów Oracle.
Thorbjørn Ravn Andersen

Odpowiedzi:

146

Ostrzeżenie bezpieczeństwa

Pakiety w wymienionym poniżej PPA nie są aktualizowane przy pomocy łatek bezpieczeństwa do Javy. Nie stosować w produkcji; zamiast tego zobacz alternatywne odpowiedzi.

W chwili pisania tego tekstu, ostatnie przesyłanie dla OpenJDK 7 zostało wykonane „2016-04-22” w wersji 7u95 i nadal dostępne jako „najnowsze”, gdzie Ubuntu 14.04 zostało zaktualizowane do 7u181 .


AKTUALIZACJA: RÓWNIEŻ TO JEST NAJBARDZIEJ GŁOSOWANA ODPOWIEDŹ JEST PRAWDOPODOBNIE NIE TYLKO, KTÓRĄ CHCESZ UŻYWAĆ W 2018 R. ZE WZGLĘDU NA BRAK AKTUALIZACJI BEZPIECZEŃSTWA NINIEJSZYCH PPA.

Znalazłem następujące instrukcje, które działały dla mnie:

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

Definiuje to „PPA dla przesyłania OpenJDK (ograniczone)” jako dodatkowe repozytorium pakietu, aktualizuje informacje i instaluje pakiet z jego zależnościami (z tego repozytorium).

onairda
źródło
13
Jeśli najpierw przez pomyłkę zainstalowałeś openjdk-8 (tak jak ja), po wykonaniu tej odpowiedzi musisz zrobić sudo update-java-alternatives, aby ustawić domyślnie openjdk-7.
Rian Sanderson
4
FYI: To obecnie nie działa dla 16.10
opticyclic
19
-1, ponieważ ta PPA jest całkowicie nieaktualna i ignoruje wiele ważnych poprawek bezpieczeństwa. Całkowicie niedopuszczalne jest, aby mieć to zainstalowane, imo.
gertvdijk
3
Nie działa również w przypadku 17.04.
Colin Harrington,
2
-1 również, jak sugeruje PPA, jest Ograniczone i nie jest aktualizowane.
separator
65

Edytuj 22-lip-2019 : Ta odpowiedź obecnie nie działa. Poniższe pakiety JDK nie są już dostępne w Debian Experimental. W każdym razie pozostawali w tyle za pakietami Ubuntu Trusty, które zawierały nowsze aktualizacje zabezpieczeń. Proszę odnieść się do innych odpowiedzi, dopóki nie da się tego rozwiązać (przepraszam, brak ETA).


Nie wygląda na to, że opiekun openjdk-r / ppa będzie aktualizował pakiet openjdk-7 poza wersją 7u95-2.6.4-3. Opis tego pakietu „Skopiowany z eksperymentu debian w Primary Archive for Debian GNU / Linux” daje nam jednak wskazówkę, jak sobie z tym poradzić.

Opcja 1: instalacja ręczna

  1. Pobierz pakiety przeznaczone dla Twojej architektury:
    (dla większości użytkowników oznacza to amd64, jeśli 64-bitowy lub i386, jeśli zainstalowany jest 32-bitowy Ubuntu)

  2. (Próbuj) zainstalować pakiety za pomocą dpkg:

    Ubuntu 17.10 i wcześniejsze:

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

    Ubuntu 18.04 i nowsze wersje:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. Sprawdź wyjście z dpkg. Jeśli wystąpiły problemy z zależnością - co jest prawdopodobne - zobaczysz następujące (z architekturą zastąpioną amd64):

    Napotkano błędy podczas przetwarzania:
    openjdk-7-jre: amd64
    openjdk-7-jre-headless: amd64
    openjdk-7-jdk: amd64

    Jeśli nie było problemów z zależnością, świetnie, gotowe, przejdź do # 4. W przeciwnym razie, jeśli chcesz rozwiązać niektóre problemy z zależnościami, jest to obsługiwane przez:

    sudo apt install -f

    Zauważ, że nie ma potrzeby ponownego uruchamiania dpkgpo pozwoleniu na aptrozwiązanie zależności. Automatycznie zakończy instalację pakietów openjdk.

  4. Zaktualizuj alternatywy Java. Możesz wyświetlić wszystkie zainstalowane wersje Java za pomocą update-java-alternatives --list. Aby aktywować OpenJDK Java 1.7, uruchom:

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

    Możesz zauważyć błąd związany z IcedTeaPlugin.soniedostępnością wtyczki. To nie jest prawdziwa troska dla programistów pracujących z JDK.

  5. Sprawdź, czy Java działa:

    java -version

    co powinno wypisać coś podobnego do:

    wersja java „1.7.0_161”
    Środowisko wykonawcze OpenJDK (IcedTea 2.6.12) (7u161-2.6.12-1)
    64-bitowa maszyna wirtualna serwera OpenJDK (kompilacja 24.161-b01, tryb mieszany)

Opcja 2: Automatyczna instalacja (w tym aktualizacje z apt)

Pinning może być wykorzystany do instalacji i aktualizacji openjdk-7-jdk i jego zależności od repozytoriów Debiana.

  1. Utwórz plik przypinający, który mówi, aptaby rozważać tylko pakiety, które nas interesują (z pewnością nie chcemy, aby cała nasza dystrybucja Ubuntu była „uaktualniana” za pomocą eksperymentalnych pakietów Debiana).

    Utwórz plik /etc/apt/preferences.d/debianz poniższą zawartością. Musisz uprawnieniami administratora, więc użyć jednego z sudo vim, sudo nano, gksudo gedit, itd.

    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
    

    W przypadku Ubuntu 17.10 i wcześniejszych dołącz także następujące (i patrz uwaga na dole):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  2. Zainstaluj brelok Debian:

    sudo apt install debian-archive-keyring

    Uwaga: chociaż jest to najprostsza metoda dodania breloka do debiana, może nie być aktualna. Sprawdź, czy dane wyjściowe są następujące, jak apt updatew kroku 4:

    W: Błąd GPG: http://cdn-fastly.deb.debian.org/debian experimental InRelease: Następujących podpisów nie można zweryfikować, ponieważ klucz publiczny jest niedostępny: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: Repozytorium „http://httpredir.debian.org/debian experimental InRelease” nie jest podpisane.

    Jeśli zobaczysz ten błąd, dodaj ręcznie niezbędne klucze za pomocą:

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

    gdzie 8B48AD6246925553i 7638D0442B90D010powinny pasować do kluczy widocznych w komunikacie ostrzegawczym.

  3. Dodaj potrzebne repozytoria:

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

    Dlaczego nie użyć stabilnego repozytorium Debiana? W stabilnej wersji Debiana napotkasz niezadowalające zależności. Eksperymentalne (dla openjdk-7) i sid (dla libjpeg62-turbo, libfontconfig1 i fontconfig-config) są bardziej łagodne w wersjach zależnych.

  4. Zaktualizuj aptpamięć podręczną (spodziewaj się, że zajmie to trochę czasu, ponieważ listy pakietów Debiana są duże):

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

    sudo apt install openjdk-7-jdk
  6. Zaktualizuj alternatywy Java. Możesz wyświetlić wszystkie zainstalowane wersje Java za pomocą update-java-alternatives --list. Aby aktywować OpenJDK Java 1.7, uruchom:

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

    Możesz zauważyć błąd związany z IcedTeaPlugin.soniedostępnością wtyczki. To nie jest prawdziwa troska dla programistów pracujących z JDK.

  7. Sprawdź, czy Java działa:

    java -version

    co powinno wypisać coś podobnego do:

    wersja java „1.7.0_161”
    Środowisko wykonawcze OpenJDK (IcedTea 2.6.12) (7u161-2.6.12-1)
    64-bitowa maszyna wirtualna serwera OpenJDK (kompilacja 24.161-b01, tryb mieszany)

notatki fontconfig

libfontconfig1i fontconfig-configmusi zostać zaktualizowany do wersji 2.12 lub nowszej w systemie Ubuntu 17.10 i wcześniejszych. Pakiety aktualizacji z Debiana nie zawierają dostosowań Ubuntu, więc niektóre aplikacje wyświetlają brzydkie czcionki po zainstalowaniu tych pakietów; np. serwer proxy debugowania sieci Web. W zależności od używanych programów problem może dotyczyć lub nie.

MDMower
źródło
Interesująca odpowiedź, zaktualizuj ją, jeśli znajdziesz sposób na automatyczną aktualizację tego pakietu.
J.Serra
Właśnie próbowałem zainstalować jdk 7 na Ubuntu 16.04 i tylko w ten sposób udało mi się go uruchomić. Dziękuję Ci!
link
2
@ J.Serra Odpowiedź poprawiona metodą automatycznej aktualizacji.
MDMower
perfekcyjnie odpowiedział, szczególnie metoda automatyczna jest bardzo ceniona! dzięki za poświęcenie czasu na wymyślenie i spisanie!
steadfasterX
1
Metoda automatyczna przeważnie działała dla mnie, ale nie jest też całkowicie trwała. Musiałem dodać jeszcze dwa pakiety do /etc/apt/preferences.d/debian (oprócz libjpeg62-turbo): libfontconfig1 i fontconfig-config
comodoro
11

Możesz pobrać OpenJDK 7 z Azul, który może pasować do twoich potrzeb. Oba mają DEB (dla systemu pakietów) i dystrybucję ZIP. Pracowałem tylko z dystrybucją ZIP.

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

Thorbjørn Ravn Andersen
źródło
To działało dla mnie w najnowszej wersji Ubuntu.
razvanone
0

Zainstaluj Javę 7 na Ubuntu 16.04, Ubuntu 17.04

Zaleca się zainstalowanie Oracle Java , ponieważ ma przewagę wydajności nad OpenJDK . Z tego powodu chcę opublikować alternatywę. Jeśli chcesz zainstalować Oracle Java, uruchom następujące polecenia w terminalu, aby zainstalować ją z PPA.

  1. Dodaj potrzebne repozytoria:

    sudo add-apt-repository ppa:webupd8team/java
  2. Zaktualizuj aptpamięć podręczną i zainstaluj oracle-java7 :

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

    Podczas procesu instalacji musisz zaakceptować umowę licencyjną Oracle . Po zainstalowaniu musimy ustawić zmienne środowiskowe Java, takie jak JAVA_HOME

  3. Prawidłowe zmienne środowiskowe Java.

    sudo apt install oracle-java7-set-default
    source /etc/profile
    
  4. Sprawdź, czy Java działa:

    java -version

    co powinno wypisać coś podobnego do:

    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
źródło
3
Instalator Oracle nie działa już Podłączanie do download.oracle.com (download.oracle.com) | 184.51.150.144 |: 80 ... podłączony. Wysłano żądanie HTTP, oczekując na odpowiedź ... 404 Nie znaleziono
autonomia
W przypadku Oracle JDK firma nie oferuje publicznego wsparcia dla JDK 7 (oferują płatne wsparcie). Myślę, że apt-getpróbuje uzyskać instalator z nieistniejącej strony. - Jeśli potrzebujesz JDK 7, możesz pobrać instalatory ze strony Archiwum: oracle.com/technetwork/java/javase/downloads/…
Jaime
0

Alternatywa Oracle JDK:

Chciałem uniknąć wysiłku związanego z repozytoriami, ponieważ przełączam się między 7, 8 i 9, więc skończyłem z Oracle JDK zamiast OpenJDK. Pobrano z oficjalnej strony . Nie jestem pewien, czy najnowsza kompilacja 80 zawiera te same poprawki, co kompilacja OpenJDK 161. Ale mam ją do opracowania, więc to i tak niewiele dla mnie znaczy.

Następnie musisz ustawić $JAVA_HOMEw środowisku, aby różne skrypty wybrały odpowiedni JDK (np. Maven, JBoss itp.).

Dla kompletności, wersja 7 JDK została wycofana, nawet publiczne wsparcie dla JDK 8 zostało zakończone od września 2017 r. I nie otrzyma żadnych publicznych aktualizacji po wrześniu 2018 r.

Ondra Žižka
źródło
0

Użyj pojemników

To jest powszechnie ważna odpowiedź na temat uruchamiania <outdated>usuniętego oprogramowania w <current>systemie Ubuntu: przechowywanie aplikacji w kontener .

Na przykład użyj Dockera i starszego obrazu podstawowego Ubuntu, w którym oprogramowanie, którego szukasz, jest nadal dostępne / obsługiwane.

Działa to również na odwrót; wypróbuj oprogramowanie na nowszej lub nawet innej dystrybucji Linuksa na aktualnie działającym stabilnym Ubuntu.

Przykład dla Java 7 przy użyciu Ubuntu 14.04

  1. Zainstaluj Docker - darmowa wersja Docker CE jest w porządku. Zobacz na przykład https://docs.docker.com/install/linux/docker-ce/ubuntu/ lub użyj docker.iopakietu w najnowszych dostarczonych wersjach Ubuntu.

  2. W pustym folderze utwórz plik 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"]
    

    Dodaj więcej pakietów w tym poleceniu, jeśli tego potrzebujesz.

  3. W tym folderze uruchom:

    docker build -t gertvdijk/java7 .
  4. Uruchom komendę w kontenerze jednorazowego użytku, używając tego obrazu Java 7:

    Np . java -version:

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

    Wynik:

    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. Opcjonalnie utwórz opakowanie dla wygody.

    • Utwórz plik /usr/local/bin/java7-in-dockerz zawartością:

      #!/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}" \
        $@
      

      Dzięki temu bieżący katalog roboczy będzie dostępny w kontenerze - nie w całym systemie plików, i podszy się pod twoje lokalne konto użytkownika w przestrzeni nazw kontenera.

    • Oznacz to jako plik wykonywalny:

      sudo chmod +x /usr/local/bin/java7-in-docker
  6. Uruchom swoją Javę 7 w sposób transparentny:

    java7-in-docker -jar relative/path/to/some.jar
gertvdijk
źródło
14.04 nie jest już utrzymywany, chyba że zapłacisz za przedłużone utrzymanie (do 2022 r.).
Thorbjørn Ravn Andersen
-2

Prostym sposobem jest:

Dodaj te linie do /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

Następnie zaktualizuj apt i zainstaluj. Prawdopodobnie będziesz musiał obniżyć tzdatapakiet.

Następnie zaleciłbym skomentowanie tych wierszy i apt update ponownie, aby zapobiec instalacji lub aktualizacji pakietów z tego repozytorium (co może prowadzić do nieoczekiwanego zachowania).

Jednym z problemów jest to, że musisz przechowywać te pakiety, aby nie zostały usunięte podczas aktualizacji systemu (szczególnie tzdatapakietu).

UWAGA : Użyj tej metody jako ostateczności, wolą inne, które pozwolą na aktualizację bez problemów.

lepe
źródło