Ubuntu: OpenJDK 8 - Nie można zlokalizować pakietu


103

Właśnie zainstalowałem Ubuntu i po raz pierwszy pracuję w środowisku Linux, więc wytrzymaj tutaj mój noobish.

W każdym razie pobrałem Java 8 JDK bezpośrednio z Oracle, ale rozumiem, że istnieje również OpenJDK dla Java 8. Mam dwa pytania.

  1. Jaka jest różnica między wersją Oracle a OpenJDK. Za I przeciw?

  2. Kiedy próbuję zdobyć OpenJDK 8, nie mogę. Wklejam polecenie terminala i otrzymuję komunikat o błędzie, mając nadzieję na radę. Ponownie, bardzo nowy w Linuksie, byłem na mojej pierwszej dystrybucji Linuksa przez mniej niż godzinę w tym momencie.

    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
    

Każda pomoc będzie mile widziana. W międzyczasie użyję tylko pakietu Oracle. Dzięki.

Edytować:

Więc teraz mam nowy problem. Zainstalowałem OpenJDK 7, przyszedł z Maven i zainstalowałem go, zanim zdałem sobie sprawę, że dostaję ofertę dwa za jeden. Teraz mam JDK 7, Eclipse i Maven i wszystkie działają, ale utknąłem na JDK 7 zamiast 8.

Widziałem, że poniżej jest link, zamierzam to sprawdzić rano, jest 2 w nocy i jestem teraz zmęczony. Wszelkie inne rady dotyczące tego nowego wydania byłyby mile widziane, w przeciwnym razie z pewnością rano sprawdzę ten link.



Jakiej wersji Ubuntu używasz? W kilku ostatnich wersjach był on dostępny jako opcja instalacji.
Makoto

Link Stephena rozwiąże Twój problem :)
Juned

Dzięki. Jest 2 w nocy, więc idę spać, ale rano sprawdzę link. Dodałem zmianę do mojego pytania z dodatkowym problemem, gdybyś mógł to przejrzeć, byłoby świetnie. Jeśli istniejący link / odpowiedź też w tym pomoże, przepraszam za to, że jestem zbyt zmęczony, by teraz na nie patrzeć, sprawdzę to rano.
user2223059

Jestem na Ubuntu 14.10 Wierzę. Niezależnie od tego, jakie było najnowsze wydanie długoterminowe.
user2223059

Odpowiedzi:


126

UPDATE : instalacja bez uprawnień roota poniżej


Radzę nie instalować pakietów ręcznie w systemie ubuntu, jeśli istnieje już (półoficjalne) repozytorium, które może rozwiązać Twój problem. Ponadto używaj Oracle JDK do programowania, aby uniknąć (bardzo sporadycznych) problemów ze zgodnością (próbowałem wiele lat temu, z pewnością teraz jest lepiej).

Dodaj repozytorium webupd8 do swojego systemu:

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

Zainstaluj preferowaną wersję jdk (dostępne wersje od java-6 do java-9):

sudo apt-get install oracle-java8-installer

Możesz także zainstalować wiele wersji jdk, mieszając wersje openjdk i oracle. Następnie możesz użyć polecenia update-java-alternatives, aby przełączyć się między zainstalowaną wersją:

# 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

Wymagania

Jeśli masz add-apt-repository: command not foundpewność, że masz software-properties-commonzainstalowane:

sudo apt-get install software-properties-common

Jeśli używasz starszej wersji Ubuntu:

sudo apt-get install python-software-properties

Instalacja JDK bez uprawnień roota

Jeśli nie masz uprawnień administratora na komputerze docelowym, najprostszym rozwiązaniem jest sdkmanzainstalowanie certyfikowanego przez Zulu openjdk:

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

UWAGA : sdkman pozwala na zainstalowanie również oficjalnego Oracle JDK, chociaż nie jest to opcja domyślna. Zobacz dostępne wersje z:

sdk ls java

Zainstaluj wybraną wersję za pomocą:

sdk install java <version>

Na przykład:

sdk install java 9.0.1-oracle

Słowniczek poleceń

  • sudo <command> [command_arguments] : wykonaj polecenie z uprawnieniami superużytkownika.

  • add-apt-repository <PPA_id> : Ubuntu (podobnie jak wszystkie pochodne Debiana i ogólnie rzecz biorąc każda dystrybucja Linuksa) ma główne repozytorium pakietów, które obsługują takie rzeczy, jak zależności i aktualizacje pakietów. W Ubuntu istnieje możliwość rozszerzenia repozytorium głównego za pomocą PPA (Personal Package Archive), które zazwyczaj zawiera pakiety niedostępne w systemie (podobnie jak oracle jdk) lub zaktualizowane wersje dostępnych (przykład: LibreOffice 5 w LTS jest dostępny tylko przez to PPA ).

  • apt-get [install|update|upgrade|purge|...] : jest to "" program obsługi pakietów w linii poleceń używany do manipulowania stanem każdego repozytorium w systemie (instalowanie / aktualizowanie / aktualizowanie może być postrzegane jako zmiana bieżącego stanu repozytorium).

W naszym przypadku : poleceniem sudo add-apt-repository ppa:webupd8team/javainformujemy system, że kolejna aktualizacja repozytorium musi pobrać informacje o pakietach również z repozytorium webupd8.

W sudo apt-get updaterzeczywistości aktualizujemy repozytorium systemowe (wszystkie te operacje wymagają uprawnień superużytkownika, więc dodajemy sudo do poleceń).

sudo apt-get install oracle-java8-installer

  • update-java-alternatives (konkretna wersja alternatywy dla aktualizacji java ): w Ubuntu kilka pakietów zapewnia tę samą funkcjonalność (przeglądanie Internetu, kompilowanie poczty, edycja pliku tekstowego lub udostępnianie plików wykonywalnych java / javac ...). Aby system pozwala wybrać ulubione narzędzie użytkownik podane konkretne zadanie mechanizm używając dowiązania pod /etc/alternatives/służy. Spróbuj zaktualizować jdk, jak wskazano powyżej (przełącz między java 7 i java 8) i zobacz, jak zmienić wyjście tego polecenia:

    ls -l /etc/alternatives/java*

W naszym przypadku : sudo update-java-alternatives --set java-8-oraclezaktualizuj dowiązania symboliczne w / etc / alternatives, aby wskazywały na pliki wykonywalne java-8-oracle.

Dodatki:

  • man <command> : zacznij używać man do czytania naprawdę dobrze napisanej i szczegółowej pomocy na temat (prawie) każdego polecenia powłoki i jego opcji (każde polecenie, o którym wspominam w tej małej odpowiedzi, ma stronę podręcznika, spróbuj man update-java-alternatives).

  • apt-cache search <search_key> : wysyłaj zapytanie do pamięci podręcznej APT, aby wyszukać pakiet powiązany z podanym kluczem search_key (może to być nazwa pakietu lub słowo w opisie pakietu).

  • apt-cache show <package> : dostarcza informacji APT dla konkretnego pakietu (wersja pakietu, zainstalowana lub nie, opis).


1
Problem polega na tym, że pojawia się komunikat „Nie można zlokalizować pakietu oracle-java8-installer”. To samo dzieje się, gdy próbuję pobrać openjdk 8 za pomocą polecenia sudo apt-get.
user2223059

3
Warto zauważyć, że jest to (przynajmniej oznaczona jako) komercyjna wersja java firmy Oracle, a nie otwarta wersja społecznościowa (openjre).
ThorSummoner

1
@basZero: wydaje się być konieczne zainstalowanie oprogramowania właściwości: apt-get install software-properties-common. W konsekwencji zaktualizuję post, aby uwzględnić to wymaganie. Dzięki
Giuseppe Ricupero,

1
Ta odpowiedź jest nieprawidłowa - Oracle zabrania bezpośredniego pobierania instalatora Java. sudo apt-get install oracle-java8-installer nie powiodło się
Alec Istomin

2
Już od 4 godzin próbuję rozwiązać ten problem. Dzięki za to niesamowite rozwiązanie!
ickyrr,

116

Jak widać, mam zainstalowaną tylko Javę 1.7 (na komputerze z Ubuntu 14.04).

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

Aby zainstalować Javę 8, zrobiłem,

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

Później mam teraz java 7 i 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

DODANO BONUS (jak przełączać się między różnymi wersjami)

  • uruchom następujące polecenie z terminala:

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:

Jak widać, uruchamiam open jdk 8. Aby przełączyć się na jdk 7, naciśnij 1i naciśnij Enterklawisz. Zrób to samo dla javacjak dobrze, sudo update-alternatives --config javac.

Sprawdź wersje, aby potwierdzić zmianę: java -versioni javac -version.


2
Bardzo przydatne, ponieważ nie wiedziałem, które repozytorium jest wymagane do zainstalowania OpenJDK! Wielkie dzięki.
cram2208

@ cram2208 cieszę się, że ci pomogło. Dziękuję za komentarz.
samsamara

Czy openjdk-r jest wystarczająco bezpieczny dla serwera?
Wang

Dzięki za szczegółową odpowiedź, to rozwiązanie jest dla mnie idealne.
Muddasir

14

Otrzymuję OpenJDK 8 z oficjalnych repozytoriów Debiana, a nie z jakiegoś losowego PPA lub niewolnego pliku binarnego Oracle. Oto jak to zrobiłem:

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

Marka /etc/apt/sources.list.d/debian-jessie-backports.list:

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

Marka /etc/apt/preferences.d/debian-jessie-backports:

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

Następnie w końcu wykonaj instalację:

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk

1
I wreszcie finał update-alternatives --config java ;-)
Javali

Wielkie dzięki! To jedyne rozwiązanie, które działało dla mnie (Deb 8)

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

to powinno działać


Proszę dodać wyjaśnienie, co to dodaje do istniejących odpowiedzi.
Gert Arnold

Używałem WSL2 z Windows i zapomniałem zaktualizować pakiety przed zainstalowaniem OpenJDK i otrzymałem ten sam błąd. @GertArnold, odpowiedź Zoe pomogła mi w tym scenariuszu.
pcdro

0

Miałem ten sam problem i wypróbowałem wszystkie rozwiązania na tej stronie, ale żadne z nich nie pomogło.

W końcu zadziałało dodanie universerepozytorium do mojej listy repozytoriów. Aby to zrobić, uruchom następujące polecenie

sudo add-apt-repository universe

Po uruchomieniu powyższego polecenia udało mi się uruchomić

sudo apt install openjdk-8-jre

bez problemu i pakiet został zainstalowany.

Mam nadzieję, że to komuś pomoże.


Nie jestem pewien, dlaczego zostałem odrzucony za tę odpowiedź. Jeśli jest coś nieprawidłowego lub potencjalnego problemu, zostaw komentarz, aby pomóc innym i sobie lepiej zrozumieć.
Daniel Black

0

Po dodaniu JDKrepozytorium przed instalacją warto najpierw uruchomić aktualizację, aby można było dodać repozytorium apt update

a następnie kontynuuj instalację sudo apt install adoptopenjdk-8-hotspot

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.