Ubuntu: OpenJDK 8 - Не вдається знайти пакет


103

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



Яку версію Ubuntu ви використовуєте? Останні кілька версій надали його як варіант встановлення.
Макото

Посилання Стівена вирішить вашу проблему :)
2015 року,

Дякую. Зараз 2 години ночі, тож я лягаю спати, але перевірю посилання вранці. Я додав редагування до свого запитання з додатковим випуском, якщо б ви могли переглянути його, це було б чудово. Якщо існуюче посилання / відповідь допоможе і в цьому, перепрошую, що я дуже втомився, щоб дивитись на нього зараз, я перевіряю це вранці.
user2223059

Я перебуваю на ubuntu 14.10, я вважаю. Яким би не був останній довгостроковий випуск.
user2223059

Відповіді:


126

ОНОВЛЕННЯ : встановлення без привілеїв root нижче


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

Додайте repo 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встановлення зулу, сертифікованого 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 apt-get install oracle-java8-installer

  • update-java-alternatives (конкретна java-версія update-alternative ): в 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 для читання дійсно добре написаної та детальної довідки щодо (майже) кожної команди оболонки та її параметрів (кожна команда, яку я згадав у цій маленькій відповіді, має сторінку man, спробуйте man update-java-alternatives).

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

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


1
Проблема полягає в тому, що я отримую повідомлення "Не вдається знайти пакет oracle-java8-installer". Те саме відбувається, коли я намагаюся отримати openjdk 8 за допомогою команди sudo apt-get.
user2223059

3
Примітно, що це (принаймні позначено як) комерційна версія Java Oracle, а не версія відкритого спільноти (openjre).
ThorSummoner

1
@basZero: здається , вам потрібно встановити властивість програмного забезпечення: apt-get install software-properties-common. Отже, я оновлю повідомлення, щоб включити цю вимогу. Дякую
Джузеппе Рікуперо

1
Ця відповідь недійсна - oracle забороняє прямі завантаження програми встановлення Java. sudo apt-get install oracle-java8-installer не вдалося
Alec

2
Я намагаюся вирішити це питання вже 4 години. Дякуємо за це чудове рішення!
ickyrr

116

Як бачите, у мене встановлений лише 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.


2
Дуже корисно, бо я не знав, яке репо потрібно для встановлення OpenJDK! Дуже дякую.
cram2208

@ cram2208 рада, що тобі допомогло. дякую за коментар.
самсамара,

Чи достатньо безпечний openjdk-r для сервера?
Ван

Дякую за детальну відповідь, це рішення для мене чудово працює.
Muddasir23,

14

Я отримую 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 ;-)
Джавалі

Дуже дякую! Це єдине рішення, яке спрацювало для мене (Deb 8)

3
sudo apt-get update
sudo apt-get  install openjdk-8-jdk

це має спрацювати


Будь ласка, додайте пояснення, що це додає до існуючих відповідей.
Герт Арнольд

Я використовував WSL2 з Windows, і я забув оновити пакети перед установкою OpenJDK і отримав ту ж помилку. @GertArnold, відповідь Зої допомогла мені в цьому сценарії.
pcdro

0

У мене була та сама проблема, і я спробував усі рішення на цій сторінці, але жодне з них не зробило трюку.

Нарешті вдалося додати universeрепо до мого списку репо. Для цього виконайте наступну команду

sudo add-apt-repository universe

Після запуску вищевказаної команди я зміг запустити

sudo apt install openjdk-8-jre

без проблем, і пакет був встановлений.

Сподіваюся, це комусь допомагає.


Не впевнений, чому мене підтримали за цю відповідь. Якщо є щось неправильне або потенційна проблема, залиште коментар, щоб допомогти іншим і я краще зрозуміти.
Даніель Блек

0

Після додавання JDKрепозиторію перед встановленням ви можете спочатку запустити оновлення, щоб репо можна було додати запустити apt update

а потім продовжте встановлення sudo apt install adoptopenjdk-8-hotspot

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.