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.