Не похоже, что сопровождающий openjdk-r / ppa будет обновлять пакет openjdk-7 после версии 7u95-2.6.4-3. Описание этого пакета «Скопировано из debian экспериментальный в Первичном архиве для Debian GNU / Linux» дает нам подсказку о том, как справиться с этим самостоятельно.
Загрузите пакеты, предназначенные для вашей архитектуры:
(для большинства пользователей это означает amd64, если установлена 64-битная версия, или i386, если установлена 32-битная версия Ubuntu)
(Попытка) установить пакеты, используя 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):
При обработке возникли ошибки:
OpenJDK-7-JRE: amd64
OpenJDK-7-JRE-обезглавленное: 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-версия "1.7.0_161"
Среда выполнения OpenJDK (IcedTea 2.6.12) (7u161-2.6.12-1)
64-битная серверная виртуальная машина OpenJDK (сборка 24.161-b01, смешанный режим)
Создайте файл закрепления, который скажет, что 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: 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
должно совпадать с пабами, которые вы видите в предупреждающем сообщении.
Добавьте необходимые репозитории:
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) репозитории более снисходительны с зависимостями версий.
Обновите 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-версия "1.7.0_161"
Среда выполнения OpenJDK (IcedTea 2.6.12) (7u161-2.6.12-1)
64-битная серверная виртуальная машина OpenJDK (сборка 24.161-b01, смешанный режим)