Как мне установить openjdk 7 на Ubuntu 16.04 или выше?

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

По-видимому, это не доступно из тривиального apt-get install openjdk-7-jdk. Только версии 8 и 9 перечислены в хранилище.

Может кто-нибудь указать мне, как его установить?

120
задан 19 November 2016 в 09:40

8 ответов

Редактирование 22 июля 2019: Этот ответ в настоящее время не работает. Ниже пакетов JDK, на которые ссылаются, больше не доступны на Экспериментальном Debian. В любом случае они отстали от пакетов Надежного человека Ubuntu, которые содержали более свежие обновления системы защиты. См. другие ответы, пока это не может быть разрешено (извините, никакой ETA).


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

Опция 1: ручная установка

  1. Загрузите пакеты, предназначенные для Вашей архитектуры:
    (для большинства пользователей это означает amd64, если 64 бита, или i386, если Ubuntu на 32 бита установлена),

  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):

    Errors were encountered while processing:
    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 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)

Опция 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 брелока для ключей, это не может быть актуально. Проверьте на вывод как следующее при выполнении apt update на шаге 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.

    Если Вы видите эту ошибку, то вручную добавляют необходимые ключи с:

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

    где 8B48AD6246925553 и 7638D0442B90D010 должен соответствовать pubkeys, который Вы видите в предупреждающем сообщении.

  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-турбо, libfontconfig1, и fontconfig-конфигурация) репозитории более снисходительны с версиями зависимости.

  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 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

libfontconfig1 и fontconfig-config должен быть обновлен до 2,12 или позже Ubuntu 17.10 и ранее. Пакеты обновления от Debian не содержат настройки Ubuntu, таким образом, некоторые приложения отображают ужасные шрифты с этими установленными пакетами; например, Charles Web Debugging Proxy. В зависимости от программ Вы используете, Вы можете или не можете быть затронуты этой проблемой.

65
ответ дан 19 November 2016 в 19:40
  • 1
    @Ilyasse файл должны принадлежать корню и не иметь любые полномочия записи вообще. – muru 15 September 2017 в 04:29

Предупреждение системы безопасности

Пакеты в PPA, упомянутом ниже, не обновляются с патчами безопасности к Java. Не используйте в производстве; см. альтернативные ответы вместо этого.

Во время записи, последнее обновление для OpenJDK 7 было сделано '2016-04-22' с версией 7u95 и все еще доступное как 'последнее', где Ubuntu 14.04 была обновлена к 7u181 .

<час>

ОБНОВЛЕНИЕ: ХОТЯ ЭТО - НАИБОЛЕЕ ПРОГОЛОСОВАВШИЙ ОТВЕТ, ВЕРОЯТНО, НЕ ТОТ, ВЫ ХОТИТЕ ИСПОЛЬЗОВАТЬ В 2018 ИЗ-ЗА ОТСУТСТВИЯ ОБНОВЛЕНИЙ СИСТЕМЫ ЗАЩИТЫ ЭТИМ PPA.

я нашел следующие инструкции, которые работали на меня:

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

Это определяет “PPA для загрузок OpenJDK (ограничил) ” как дополнительный репозиторий пакета, обновляет Вашу информацию и устанавливает пакет с его зависимостями (из того репозитория).

146
ответ дан 19 November 2016 в 19:40
  • 1
    с %dev ВСЕ = (корень)/usr/local/bin/check могут я добавлять аргумент, чтобы заставить его только выполниться, файл (предотвратите запись), таким образом, он can' t быть в состоянии изменить сценарий – ILY 15 September 2017 в 04:28

Можно загрузить OpenJDK 7 от Azul, который может соответствовать потребностям. У них обоих есть DEB (для системы пакета) и распределение ZIP. Я только работал с распределением ZIP.

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

11
ответ дан 19 November 2016 в 19:40
  • 1
    +1 главным образом, потому что it' s изящно записанный все же сжатый и частично потому что я don' t должны записать ответ, таким образом, я могу сфокусироваться на своем делающем покупки проекте бота: D – WinEunuuchs2Unix 15 September 2017 в 12:01

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

Добавьте эти строки к: /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

Затем обновите склонный и установка. Необходимо будет, вероятно, понизить tzdata пакет.

После этого я рекомендовал бы прокомментировать те строки и способное обновление снова для предотвращения установки или обновления пакетов из того репозитория (который мог привести к неожиданному поведению).

Одна проблема состоит в том, что необходимо держать те пакеты, таким образом, они не становятся удаленными, когда Вы обновляете свою систему (особенно tzdata пакет).

Примечание: Используйте этот метод в качестве последнего средства, предпочтите любого другого, который позволит Вам обновлять без проблем.

-2
ответ дан 19 November 2016 в 19:40
  • 1
    there' s редактирование в моем сообщении, на самом деле я don' t хотят, чтобы он выполнил все команды, я просто хочу, чтобы у него было полномочие на показанном и chmod – ILY 14 September 2017 в 03:38

Java 7 установки на Ubuntu 16.04, Ubuntu 17.04

Рекомендуется установить Java Oracle, потому что это имеет край производительности по OpenJDK. По этой причине я хочу отправить альтернативу. Если Вы хотите установить Java Oracle, выполняет следующие команды в терминале для установки его от PPA.

  1. Добавьте необходимые репозитории:

    sudo add-apt-repository ppa:webupd8team/java
    
  2. Обновление apt кэш и оракул-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)
    
0
ответ дан 19 November 2016 в 19:40
  • 1
    Какой I' m удивление , чего пользователь пытается достигнуть. Если it' s машина разработки, почему имеет значение, если у разработчиков есть корень? И почему бы не использовать некоторую систему управления исходным кодом? Или захват файла? Мне это походит на X-Y-problem... – vidarlo 14 September 2017 в 07:17

Следующее работало на меня на Ubuntu 18.04

apt-get update && apt-get install default-jdk
-1
ответ дан 22 November 2019 в 22:56

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

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

Затем необходимо установить $JAVA_HOME в среде так, чтобы различные сценарии взяли правильный JDK (например, Знаток, JBoss и т.д.).

Для полноты версия 7 JDK была EOL'ed, даже общественная поддержка JDK 8 завершается с сентября 2017 и не получит общедоступных обновлений после сентября 2018.

0
ответ дан 22 November 2019 в 22:56

Используйте контейнеры

Это - универсально действительный ответ о том, как работать <outdated> удаленное программное обеспечение на <current> Ubuntu: контейнеризируйте свое приложение.

Например, используйте Докера и более старое базовое изображение Ubuntu, в котором программное обеспечение Вы ищете, все еще доступный/поддерживает.

Это также работает наоборот; испытайте программное обеспечение на более новом или даже другом дистрибутиве Linux на Вашей в настоящее время под управлением стабильной Ubuntu.

Пример для Java 7 с помощью Ubuntu 14.04

  1. Докер установки - Докер бесплатная версия 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}" \
        $@
      

      Это сделает текущий рабочий каталог доступным в контейнере - не Ваша целая файловая система, и это явится олицетворением Вашей учетной записи локального пользователя в контейнерном пространстве имен.

    • Mark это как исполняемый файл:

      sudo chmod +x /usr/local/bin/java7-in-docker
      
  6. Выполните свой Java 7 прозрачно, как это:

    java7-in-docker -jar relative/path/to/some.jar
    
0
ответ дан 22 November 2019 в 22:56

Другие вопросы по тегам:

Похожие вопросы: