Як встановити openjdk 7 на Ubuntu 16.04 або новішої версії?


120

Я хотів би оновити свою основну систему до 16.04, але я працюю над проектами, для яких потрібен OpenJDK 7.

Мабуть, це недоступно з тривіального apt-get install openjdk-7-jdk. У сховищі перелічені лише версії 8 та 9.

Хтось може вказати мені на інструкції, як його встановити?


Якщо когось цікавить, чому ви все-таки хочете JDK 7, я опинився в тій же ситуації, тому що я думаю, що neo4j 2.1.6 не грає добре з Ubuntu 16.04, і єдине, що я можу побачити, що може бути не так - JDK.
Шрідхар Сарнобат

Чи явно вам потрібен openjdk 7 як ваш системний JVM або вам просто потрібен час виконання Java 7. Ви можете завантажити останнє з архівів Oracle.
Thorbjørn Ravn Andersen

Відповіді:


146

Попередження про безпеку

Пакети в ЗОЗ, зазначені нижче, не оновлюються виправленнями безпеки на Java. Не використовувати у виробництві; див. замість них альтернативні відповіді.

На момент написання останнього завантаження для OpenJDK 7 було виконано "2016-04-22" з версією 7u95 і все ще доступно як "остання", де Ubuntu 14.04 було оновлено до 7u181 .


ОНОВЛЕННЯ: ВЖЕ ЦЕ ГОЛОВНЕ ГОЛОСУВАННЯ ВІДПОВІДНО НЕ ТИ, ЯКІ ВИ ХОТЛИ ВИКОРИСТУВАТИ В 2018 році, Внаслідок відсутності оновлень БЕЗПЕЧНОСТІ ЦИМ ППА.

Я знайшов наступні інструкції, які працювали для мене:

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

Це визначає "PPA для завантаження OpenJDK (обмежено)" як додатковий репозиторій пакету, оновлює вашу інформацію та встановлює пакет залежно від цього сховища (з цього сховища).


13
Якщо ви помилково спочатку встановили openjdk-8 (як я), після виконання цієї відповіді вам потрібно зробити це, sudo update-java-alternativesщоб ви могли зробити openjdk-7 за замовчуванням.
Ріан Сандерсон

4
FYI: Наразі це не працює до 16.10
оптициклічний

19
-1 тому, що цей договір про PPA повністю застарів і ігнорує багато важливих патчів безпеки. Зовсім неприйнятно встановлювати це, imo.
gertvdijk

3
Також не працює за 17.04.
Колін Харрінгтон

2
-1 також, як запропоновано Угодою про PPA, обмежено і не оновлюється.
роздільник

65

Редагувати 22 липня 2019 : Ця відповідь наразі не працює. Наведені нижче пакети JDK більше не доступні в Debian Experimental. У будь-якому випадку вони відставали від пакетів Ubuntu Trusty, які містили новіші оновлення безпеки. Будь ласка, зверніться до інших відповідей, поки це не вдасться вирішити (вибачте, ETA немає).


Схоже, що підтримувач openjdk-r / ppa буде оновлювати пакет openjdk-7 після версії 7u95-2.6.4-3. Опис цього пакету "Скопійовано з експериментальної програми debian у Первинному архіві для Debian GNU / Linux" дає нам поняття, як самостійно впоратися з цим.

Варіант 1: Установка вручну

  1. Завантажте пакунки, призначені для вашої архітектури:
    (для більшості користувачів це означає amd64, якщо 64-бітний, або i386, якщо встановлено 32-бітний Ubuntu)

  2. (Спроба) встановити пакунки, використовуючи dpkg:

    Ubuntu 17.10 і новіші версії:

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

    Ubuntu 18.04 та новіших версій:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. Перевірте вихід з dpkg. Якщо виникли проблеми залежностей - що, швидше за все, - ви побачите наступне (із заміненою на amd64 вашою архітектурою):

    Помилки під час обробки:
    openjdk-7-jre: amd64
    openjdk-7-jre-headless: amd64
    openjdk-7-jdk: amd64

    Якщо проблем із залежністю не було, здорово, перейдіть до №4. В іншому випадку, якщо вам потрібно вирішити деякі проблеми залежності, це вирішується за допомогою:

    sudo apt install -f

    Зауважте, не потрібно повторно запускатись dpkgпісля того, як ви вирішите aptзалежність. Він автоматично закінчить установку пакетів openjdk.

  4. Оновіть альтернативи Java. Ви можете переглянути всі встановлені версії Java за допомогою update-java-alternatives --list. Щоб активувати OpenJDK Java 1.7, запустіть:

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

    Ви можете помітити помилку в тому, що IcedTeaPlugin.soплагін недоступний. Це не викликає побоювань для розробників, що працюють з JDK.

  5. Перевірте, чи працює java:

    java -version

    який повинен вивести щось подібне до:

    версія java "1.7.0_161"
    OpenJDK середовище виконання (IcedTea 2.6.12) (7u161-2.6.12-1)
    64-бітний VM сервера OpenJDK (збірка 24.161-b01, змішаний режим)

Варіант 2: Автоматична установка (включаючи оновлення з apt)

Закріплення можна використовувати для встановлення та оновлення openjdk-7-jdk та його залежностей від сховищ Debian.

  1. Створіть файл закріплення, який повідомляє aptрозглянути лише пакунки, які нас цікавлять (ми, звичайно, не хочемо, щоб весь наш дистрибутив Ubuntu був "оновлений" експериментальними пакетами Debian).

    Створіть файл /etc/apt/preferences.d/debianіз наведеним нижче вмістом. Вам потрібні повноваження супер, тому використовуйте один з sudo vim, sudo nano, gksudo geditі т.д.

    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
    

    Для Ubuntu 17.10 і новіших версій також додайте наступне (і див. Примітку внизу):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  2. Встановіть брелок Debian:

    sudo apt install debian-archive-keyring

    Примітка. Хоча це найпростіший метод додавання debian keyring, він може не бути оновленим. Під час запуску apt updateна кроці 4 перевірте наявність такого типу :

    W: помилка GPG: http://cdn-fastly.deb.debian.org/debian експериментальна InRelease: Наступні підписи неможливо перевірити, оскільки відкритий ключ недоступний: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: Репозиторій "http://httpredir.debian.org/debian експериментальний InRelease" не підписаний.

    Якщо ви бачите цю помилку, вручну додайте необхідні клавіші за допомогою:

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

    де 8B48AD6246925553і 7638D0442B90D010мають відповідати лопатки, які ви бачите в попереджувальному повідомленні.

  3. Додайте необхідні сховища:

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

    Чому б не використовувати стабільний сховище Debian? Ви зіткнетеся з незадовільними залежностями зі стабільністю Debian. Експериментальні сховища (для openjdk-7) та sid (для libjpeg62-turbo, libfontconfig1 та fontconfig-config) схожіші на версії залежностей.

  4. Оновіть aptкеш (очікуйте, що це займе деякий час, оскільки списки пакунків Debian є великими):

    sudo apt update
  5. Встановіть openjdk-7-jdk:

    sudo apt install openjdk-7-jdk
  6. Оновіть альтернативи Java. Ви можете переглянути всі встановлені версії Java за допомогою update-java-alternatives --list. Щоб активувати OpenJDK Java 1.7, запустіть:

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

    Ви можете помітити помилку в тому, що IcedTeaPlugin.soплагін недоступний. Це не викликає побоювань для розробників, що працюють з JDK.

  7. Перевірте, чи працює java:

    java -version

    який повинен вивести щось подібне до:

    версія java "1.7.0_161"
    OpenJDK середовище виконання (IcedTea 2.6.12) (7u161-2.6.12-1)
    64-бітний VM сервера OpenJDK (збірка 24.161-b01, змішаний режим)

примітки fontconfig

libfontconfig1і fontconfig-configмає бути оновлено до 2.12 або пізнішої версії на Ubuntu 17.10 і новіших версій. Пакети оновлень від Debian не містять налаштувань Ubuntu, тому деякі програми відображають некрасиві шрифти з встановленими цими пакетами; наприклад, проксі-сервер налагодження Чарльза. Залежно від програм, якими ви користуєтесь, ця проблема може бути або не вплинути на вас.


Цікава відповідь, будь ласка, оновіть її, якщо ви знайдете спосіб оновлювати цей пакет автоматично.
J.Serra

Я просто спробував встановити jdk 7 на ubuntu 16.04, і це єдиний спосіб, коли мені вдалося змусити його працювати. Дякую!
посилання

2
@ J.Serra Відповідь переглянуто методом автоматичного оновлення.
MDMower

ідеально відповів, особливо автоматичний метод високо цінується! дякую, що знайшли час розібратися і записати!
steadfasterX

1
Автоматичний метод в основному працював для мене, але теж не зовсім постійний. Мені довелося додати ще два пакети до /etc/apt/preferences.d/debian (крім libjpeg62-turbo): libfontconfig1 та fontconfig-config
comodoro

11

Ви можете завантажити OpenJDK 7 з Azul, який може відповідати вашим потребам. Вони обидва мають DEB (для пакетної системи) та ZIP-розподіл. Я працював лише з дистрибуцією ZIP.

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


Це те, що працювало для мене з останньою версією Ubuntu.
разваноне

0

Встановіть Java 7 на Ubuntu 16.04, Ubuntu 17.04

Рекомендується встановлювати Oracle Java , оскільки він має перевагу продуктивності над OpenJDK . З цієї причини я хочу розмістити альтернативу. Якщо ви хочете встановити Oracle Java, запустіть у терміналі наступні команди, щоб встановити її з PPA.

  1. Додайте необхідні сховища:

    sudo add-apt-repository ppa:webupd8team/java
  2. Оновіть aptкеш і встановіть oracle-java7 :

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

    Під час встановлення вам потрібно буде прийняти ліцензійну угоду Oracle . Після встановлення нам потрібно встановити змінні середовища Java, такі як JAVA_HOME

  3. Правильні змінні середовища Java.

    sudo apt install oracle-java7-set-default
    source /etc/profile
    
  4. Перевірте, чи працює java:

    java -version

    який повинен вивести щось подібне до:

    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
Інсталятор oracle більше не працює. Підключення до download.oracle.com (download.oracle.com) | 184.51.150.144 |: 80 ... підключено. HTTP-запит надісланий, очікуючи відповіді ... 404 Не знайдено
автономія

Для Oracle JDK компанія не пропонує публічну підтримку JDK 7 (вони пропонують платну підтримку). Я думаю, що apt-getнамагається отримати інсталятора з неіснуючої сторінки. - Якщо вам потрібен JDK 7, ви можете завантажити інсталяторів з веб-сайту Archive: oracle.com/technetwork/java/javase/downloads/…
Jaime

0

Альтернатива Oracle JDK:

Я хотів уникнути зусиль із сховищами, тому що я перемикаюся між 7, 8 та 9, тому я закінчився Oracle JDK, а не OpenJDK. Завантажено з офіційного сайту . Я не впевнений, чи містить остання збірка 80 ті ж виправлення, що і збірка OpenJDK 161. Але я маю це для розробки, так що для мене це все ще не означає.

Потім потрібно встановити $JAVA_HOMEв оточенні так, щоб різні сценарії підбирали потрібний JDK (наприклад, Maven, JBoss тощо).

Для повноти версія JDK 7 була EOL'ed, навіть підтримка публічної підтримки JDK 8 припиняється з вересня 2017 року і не отримуватиме публічних оновлень після вересня 2018 року.


0

Використовуйте контейнери

Це універсально відповідна відповідь про те, як запустити <outdated>видалене програмне забезпечення на <current>Ubuntu: контейнерувати свою програму .

Наприклад, використовуйте Docker і більш старий базовий образ Ubuntu, в якому програмне забезпечення, яке ви шукаєте, все ще доступне / підтримується.

Це також працює навпаки; спробуйте програмне забезпечення на більш новій або навіть іншій дистрибутиві Linux на вашому стабільному Ubuntu.

Приклад для Java 7 за допомогою Ubuntu 14.04

  1. Встановити Docker - безкоштовна версія Docker CE відмінно. Дивіться, наприклад, https://docs.docker.com/install/linux/docker-ce/ubuntu/ або використовуйте docker.ioпакет в останніх версіях Ubuntu, що постачаються.

  2. У порожній папці створіть файл 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"]
    

    Додайте більше пакетів до цієї команди, якщо вам це потрібно.

  3. У цій папці запустіть:

    docker build -t gertvdijk/java7 .
  4. Запустіть команду всередині одного контейнера, використовуючи зображення Java 7:

    Наприклад java -version:

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

    Вихід:

    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. За бажанням створіть обгортку для зручності.

    • Створіть файл /usr/local/bin/java7-in-dockerіз вмістом:

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

      Це зробить поточний робочий каталог доступним всередині контейнера - не всією вашою файловою системою, і він буде представляти собою ваш локальний обліковий запис користувача у просторі імен контейнера.

    • Позначте його як виконуваний:

      sudo chmod +x /usr/local/bin/java7-in-docker
  6. Запустіть Java 7 прозоро, як це:

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

14.04 більше не підтримується, якщо ви не заплатите за тривале обслуговування (до 2022 року).
Thorbjørn Ravn Andersen

-2

Простий спосіб:

Додайте ці рядки до /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

Потім оновіть apt та встановіть. Можливо, вам буде потрібно зменшити tzdataпакет.

Після цього я рекомендую прокоментувати ці рядки та вдале оновлення ще раз, щоб запобігти встановленню чи оновлення пакетів із цього сховища (що може призвести до несподіваної поведінки).

Одна з проблем полягає в тому, що вам потрібно тримати ці пакети, щоб вони не видалялися під час оновлення системи (спеціально tzdataпакета).

ПРИМІТКА . Використовуйте цей метод як крайній спосіб, віддайте перевагу будь-якому іншому, який дозволить вам оновити без проблем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.