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

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

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

  1. в чем разница между версией Oracle и OpenJDK. За / Против?

  2. когда я пытаюсь получить 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. Спасибо.

изменить:

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

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

3 ответов


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


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

добавить webupd8 repo в вашем система:

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. Затем вы можете использовать команду обновление-java-альтернативы для переключения между установленной версии:

# 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

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

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

  • add-apt-repository <PPA_id>: Ubuntu (как и все производные Debian и, вообще говоря, каждый дистрибутив Linux) имеет главный репозиторий пакетов, которые обрабатывают такие вещи, как зависимости пакетов и обновление. В Ubuntu можно расширить основной репозиторий, используя PPA (Личный архив пакетов), который обычно содержит пакеты, недоступные в системе (так же, как 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 apt-get install oracle-java8-installer

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

    ls -l /etc/alternatives/java*

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

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

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

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

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


как вы можете видеть, у меня установлен только 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

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

  • выполните команду 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.


Я получаю 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