Я хотел бы обновить свою основную систему до 16.04, но я работаю над проектами, которые требуют OpenJDK 7.
По-видимому, это не доступно из тривиального apt-get install openjdk-7-jdk
. Только версии 8 и 9 перечислены в хранилище.
Может кто-нибудь указать мне, как его установить?
Редактирование 22 июля 2019: Этот ответ в настоящее время не работает. Ниже пакетов JDK, на которые ссылаются, больше не доступны на Экспериментальном Debian. В любом случае они отстали от пакетов Надежного человека Ubuntu, которые содержали более свежие обновления системы защиты. См. другие ответы, пока это не может быть разрешено (извините, никакой ETA).
Не похоже, что специалист по обслуживанию openjdk-r/ppa будет обновлять openjdk-7 пакет вне версии 7u95-2.6.4-3. Описание того пакета, "Скопированное с debian, экспериментального в Основном Архиве для GNU/Linux Debian", дает нам ключ к разгадке то, как обработать это самим, все же.
Опция 1: ручная установка
Загрузите пакеты, предназначенные для Вашей архитектуры:
(для большинства пользователей это означает amd64, если 64 бита, или i386, если Ubuntu на 32 бита установлена),
(Попытайтесь к), установите использование пакетов dpkg
:
Ubuntu 17.10 и ранее:
sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
Ubuntu 18.04 и позже:
sudo dpkg -i openjdk-7-* libjpeg62-turbo*
Проверьте вывод от 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 пакетов.
Обновите альтернативы Java. Можно просмотреть, все установили версии Java с update-java-alternatives --list
. Для активации OpenJDK Java 1.7 работайте:
sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
Можно заметить ошибку о IcedTeaPlugin.so
причем плагин недоступен. Это не реальное беспокойство о разработчиках, работающих с JDK.
Проверьте, что 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.
Создайте файл прикрепления, который говорит 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
Установите брелок для ключей 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, который Вы видите в предупреждающем сообщении.
Добавьте необходимые репозитории:
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-конфигурация) репозитории более снисходительны с версиями зависимости.
Обновление apt
кэш (ожидают, что это будет требовать времени начиная со списков пакета Debian, является большим):
sudo apt update
Установка openjdk-7-jdk:
sudo apt install openjdk-7-jdk
Обновите альтернативы Java. Можно просмотреть, все установили версии Java с update-java-alternatives --list
. Для активации OpenJDK Java 1.7 работайте:
sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
Можно заметить ошибку о IcedTeaPlugin.so
причем плагин недоступен. Это не реальное беспокойство о разработчиках, работающих с JDK.
Проверьте, что 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. В зависимости от программ Вы используете, Вы можете или не можете быть затронуты этой проблемой.
<час>Предупреждение системы безопасности
Пакеты в 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 (ограничил) ” как дополнительный репозиторий пакета, обновляет Вашу информацию и устанавливает пакет с его зависимостями (из того репозитория).
Можно загрузить OpenJDK 7 от Azul, который может соответствовать потребностям. У них обоих есть DEB (для системы пакета) и распределение ZIP. Я только работал с распределением ZIP.
Простой способ:
Добавьте эти строки к: /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
пакет).
Примечание: Используйте этот метод в качестве последнего средства, предпочтите любого другого, который позволит Вам обновлять без проблем.
Java 7 установки на Ubuntu 16.04, Ubuntu 17.04
Рекомендуется установить Java Oracle, потому что это имеет край производительности по OpenJDK. По этой причине я хочу отправить альтернативу. Если Вы хотите установить Java Oracle, выполняет следующие команды в терминале для установки его от PPA.
Добавьте необходимые репозитории:
sudo add-apt-repository ppa:webupd8team/java
Обновление apt
кэш и оракул-java7 установки:
sudo apt update
sudo apt install java-common oracle-java7-installer
Во время процесса установки необходимо будет принять Лицензионное соглашение Oracle. После того, как установленный мы должны установить переменные среды Java, такие как JAVA_HOME
Корректные переменные среды Java.
sudo apt install oracle-java7-set-default
source /etc/profile
Проверьте, что 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)
Следующее работало на меня на Ubuntu 18.04
apt-get update && apt-get install default-jdk
Oracle альтернатива JDK:
Я хотел избежать усилия с репозиториями, потому что я переключаюсь между 7, 8, и 9, таким образом, я закончил с Oracle JDK, а не OpenJDK. Загруженный с официального сайта. Я не уверен в том, содержит ли последняя сборка 80 то же, фиксирует как сборка OpenJDK 161. Но у меня есть он для разработки так, чтобы не значил много так или иначе для меня.
Затем необходимо установить $JAVA_HOME
в среде так, чтобы различные сценарии взяли правильный JDK (например, Знаток, JBoss и т.д.).
Для полноты версия 7 JDK была EOL'ed, даже общественная поддержка JDK 8 завершается с сентября 2017 и не получит общедоступных обновлений после сентября 2018.
Это - универсально действительный ответ о том, как работать <outdated>
удаленное программное обеспечение на <current>
Ubuntu: контейнеризируйте свое приложение.
Например, используйте Докера и более старое базовое изображение Ubuntu, в котором программное обеспечение Вы ищете, все еще доступный/поддерживает.
Это также работает наоборот; испытайте программное обеспечение на более новом или даже другом дистрибутиве Linux на Вашей в настоящее время под управлением стабильной Ubuntu.
Докер установки - Докер бесплатная версия CE в порядке. Посмотрите, например, https://docs.docker.com/install/linux/docker-ce/ubuntu/или используйте docker.io
пакет в недавних поставленных версиях Ubuntu.
В пустой папке создайте файл 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"]
Добавьте больше пакетов в той команде при необходимости в этом.
В той папке, выполненной:
docker build -t gertvdijk/java7 .
Выполните команду в единственном контейнере использования с помощью того изображения 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)
Дополнительно, создайте обертку для удобства.
Создайте файл /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
Выполните свой Java 7 прозрачно, как это:
java7-in-docker -jar relative/path/to/some.jar