Ubuntu: OpenJDK 8 - Невозможно найти пакет

50

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

В любом случае, я загрузил Java 8 JDK непосредственно из Oracle, но я также понимаю, что OpenJDK для Java 8 тоже. У меня два вопроса.

  • В чем разница между версией Oracle и OpenJDK. Плюсы/минусы?

  • Когда я пытаюсь получить OpenJDK 8, я не могу. Я вставляю команду терминала и сообщение об ошибке, которое я получаю здесь, надеясь получить совет. Опять же, очень новый для Linux, был на моем первом дистрибутиве Linux когда-либо менее чем через час здесь на этом этапе.

    user@computer:~/Java$ sudo apt-get install openjdk-8-jdk
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package openjdk-8-jdk
    

Любая помощь будет оценена по достоинству. Пока что я просто использую пакет Oracle. Спасибо.

Edit:

Итак, теперь у меня новая проблема. Я установил OpenJDK 7, он пришел с Maven и только что установил, прежде чем я понял, что получаю сделку "два к одному". Теперь у меня JDK 7, Eclipse и Maven, и они все работают, но я застрял на JDK 7, а не на 8.

Я видел, что есть ссылка ниже, я собираюсь проверить это утром, это 2 утра, и я устал прямо сейчас. Любые другие советы для этой новой проблемы будут оценены, в противном случае я обязательно буду проверять эту связь первым делом с утра.

  • 1
    packages.ubuntu.com/search?keywords=openjdk-8-jdk
  • 0
    Какую версию Ubuntu вы используете? Последние пару версий были доступны в качестве опции установки.
Показать ещё 3 комментария
Теги:

3 ответа

81
Лучший ответ

UPDATE: установка без прав root ниже


Я советую вам не устанавливать пакеты вручную в систему ubuntu, если уже есть (полуофициальный) репозиторий, способный решить вашу проблему. Кроме того, используйте Oracle JDK для разработки, чтобы избежать (очень спорадических) проблем совместимости (я пробовал много лет назад, это, безусловно, лучше сейчас).

Добавьте репозиторий webupd8 в вашу систему:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

Установите предпочтительную версию jdk (версии от java-6 до java-9 доступны):

sudo apt-get install oracle-java8-installer

Вы также можете установить несколько версий jdk, смешать версии openjdk и oracle. Затем вы можете использовать команду update-java-alternatives для переключения между установленной версией:

# list available jdk
update-java-alternatives --list

# use jdk7
sudo update-java-alternatives --set java-7-oracle

# use jdk8
sudo update-java-alternatives --set java-8-oracle

Требования

Если вы получаете add-apt-repository: command not found, обязательно установите software-properties-common:

sudo apt-get install software-properties-common

Если вы используете более старую версию Ubuntu:

sudo apt-get install python-software-properties

Установка JDK без привилегий root

Если у вас нет прав администратора на вашей целевой машине, попробуйте использовать sdkman для установки сертифицированного zulu openjdk:

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java

ПРИМЕЧАНИЕ. sdkman позволяет установить также официальный Oracle JDK, хотя это не опция по умолчанию. Просмотреть доступные версии с помощью:

sdk ls java

Установите выбранную версию с помощью

sdk install java <version>

Например:

sdk install java 9.0.1-oracle

Глоссарий команд

  • sudo <command> [command_arguments]: выполните команду с привилегией суперпользователя.

  • add-apt-repository <PPA_id>: Ubuntu (как и все производные Debian и, вообще говоря, каждый дистрибутив Linux) имеет основной репозиторий пакетов, которые обрабатывают такие вещи, как зависимости пакетов и обновления, В Ubuntu можно расширить основной репозиторий с помощью PPA (Personal Package Archive), который обычно содержит пакеты, недоступные в системе (например, oracle jdk) или обновленные версии доступных (например: LibreOffice 5 в LTS доступен только через это PPA).

  • apt-get [install|update|upgrade|purge|...]: он "обработчик пакета командной строки, используемый для управления состоянием каждого репозитория в системе (установка/обновление/обновление может быть просмотрена как изменение текущего состояния хранилища).

В нашем случае: с помощью команды sudo add-apt-repository ppa:webupd8team/java мы сообщаем системе, что следующее обновление репозитория должно получать информацию о пакетах также из репозитория webupd8.

С sudo apt-get update мы фактически обновляем системный репозиторий (для всех этих операций требуются привилегии суперпользователя, поэтому мы добавляем sudo к командам).

sudo apt-get install oracle-java8-installer

  • update-java-alternatives (определенная версия java альтернативных обновлений): в Ubuntu несколько пакетов предоставляют ту же функциональность (просматривают Интернет, компилируют почты, редактировать текстовый файл или предоставляет исполняемые файлы java/javac...). Чтобы система могла выбрать инструмент пользовательских избранных с учетом конкретной задачи, используется механизм с использованием символических ссылок в /etc/alternatives/. Попробуйте обновить jdk, как указано выше (переключение между java 7 и java 8) и посмотреть, как изменить вывод этой команды:

    ls -l /etc/alternatives/java*

В нашем случае: sudo update-java-alternatives --set java-8-oracle обновить символические ссылки под /etc/alternatives, чтобы указать на исполняемые файлы java-8-oracle.

Дополнительно:

  • man <command>: начните использовать человека, чтобы прочитать очень хорошо написанную и подробную помощь (почти) каждой команды оболочки и ее параметров (каждая команда, упомянутая в этом маленьком ответе, man page, попробуйте man update-java-alternatives).

  • apt-cache search <search_key>: запросить кеш APT для поиска пакета, связанного с предоставленным поисковым ключом (может быть именем пакета или некоторым словом в описании пакета).

  • apt-cache show <package>: предоставляет информацию APT для определенного пакета (версия пакета, установленная или нет, описание).

  • 0
    Проблема в том, что я получаю сообщение «Невозможно найти пакет oracle-java8-installer». То же самое происходит, когда я пытаюсь получить openjdk 8 с помощью команды sudo apt-get.
  • 0
    И не обращайте внимания на последний комментарий, забыл сделать обновление репо, которое вы там поместили. На данный момент, похоже, загружается обновление. На полусвязанной ноте, не могли бы вы включить информацию о командах linux, которые вы здесь поместили, как я уже говорил, я только начал использовать linux и хочу узнать как можно больше. Я также упомяну больше о том, работает ли это после завершения загрузки.
Показать ещё 9 комментариев
56

Как вы можете видеть, я установил только java 1.7 (на машине Ubuntu 14.04).

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64

Чтобы установить Java 8, я сделал,

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

Впоследствии, теперь у меня есть java 7 и 8,

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

BONUS ADDED (как переключаться между разными версиями)

  • запустите команду follwing из терминала:

sudo update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

Press enter to keep the current choice[*], or type selection number:

Как вы можете видеть, я запускаю открытый jdk 8. Чтобы перейти на jdk 7, нажмите 1 и нажмите клавишу Enter. Сделайте то же самое для javac, используя sudo update-alternatives --config javac.

Проверьте версии, чтобы подтвердить изменение: java -version и javac -version.

  • 1
    Очень полезно, потому что я не знал, какое хранилище требуется для установки OpenJDK! Большое спасибо.
  • 0
    @ cram2208 рад, что помог тебе. Спасибо за комментарий.
Показать ещё 1 комментарий
11

Я получаю OpenJDK 8 из официальных репозиториев Debian, а не какой-то случайный PPA или несвободный двоичный код Oracle. Вот как я это сделал:

sudo apt-get install debian-keyring debian-archive-keyring

Сделайте /etc/apt/sources.list.d/debian-jessie-backports.list:

deb http://httpredir.debian.org/debian/ jessie-backports main

Сделайте /etc/apt/preferences.d/debian-jessie-backports:

Package: *
Pin: release o=Debian,a=jessie-backports
Pin-Priority: -200

Затем, наконец, выполните установку:

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk
  • 1
    И, наконец, окончательное update-alternatives --config java ;-)
  • 0
    Большое спасибо! Это единственное решение, которое сработало для меня (Deb 8)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню