web-dev-qa-db-ja.com

Ubuntu:OpenJDK 8 - パッケージが見つかりません

それで私はUbuntuをインストールしたばかりです、そしてこれがLinux環境で働くのは私にとっては初めてです。

とにかく、私は直接OracleからJava 8 JDKをダウンロードしました、しかし私は同様にJava 8のためのOpenJDKがあることを理解しています。 2つ質問があります。

  1. OracleバージョンとOpenJDKの違いは何ですか。長所短所?

  2. OpenJDK 8を試してみると、できません。アドバイスを期待して、端末コマンドとここで表示されるエラーメッセージを貼り付けています。繰り返しになりますが、Linuxの初心者で、この時点で1時間も経たないうちに私の最初の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と一緒に来ました、そして、私が2対1の契約を得ていたことに気づく前にちょうどインストールしました。今、私はJDK 7とEclipse、そしてMavenを持っています、そしてそれらはすべてうまくいっていますが、私は8ではなくJDK 7を使い続けています。

以下のリンクがあるのを見ました、私は朝それをチェックするつもりです、それは午前2時です、そして、私は今疲れています。この新しい問題についての他のどんなアドバイスも評価されるでしょう、さもなければ私は間違いなく午前中にそのリンク最初の事をチェックアウトするでしょう。

71
user2223059

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

OpenjdkとOracleのバージョンを混在させて、複数のバージョンのjdkをインストールすることもできます。その後、pdate-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

root権限なしのJDKインストール

ターゲットマシンの管理者権限を持っていない場合、最も簡単な方法はsdkmanを使用してzulu認定openjdkをインストールすることです。

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

NOTE: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ディストリビューションと同様に)はpackageのようなものを扱うパッケージのメインリポジトリを持っています依存関係と更新Ubuntuでは、通常はシステムで利用できないパッケージ(Oracle jdkのように)または利用可能なものの更新版(例:LTSのLibreOffice 5はこれを通してのみ利用可能です)を含むPPA(Personal Package Archive)を使用してメインリポジトリを拡張できます。 PPA )。

  • apt-get[install|update|upgrade|purge|...]:システム上のすべてのリポジトリのstateを操作するための "コマンド"パッケージハンドラです。 (インストール/アップデート/アップグレードはリポジトリの現在の状態の変更と見なすことができます)。

私たちの場合:コマンドSudo add-apt-repository ppa:webupd8team/Javaを使うと、次回のリポジトリ更新でもwebupd8 repoからパッケージ情報を取得する必要があることをシステムに通知します。

Sudo apt-get updateを使って実際にシステムリポジトリを更新します(この操作はすべてスーパーユーザー特権を必要とするので、コマンドの前にSudoを追加します)。

Sudo apt-get install Oracle-Java8-installer

  • update-Java-alternativesupdate-alternativesの特定のJavaバージョン):Ubuntuでは、いくつかのパッケージが同じ機能を提供します(インターネットの閲覧、メールの編集、テキストファイルの編集、またはJava/javac実行ファイルの提供など)。 /etc/alternatives/の下の symlinks を使用するメカニズムが使用されている特定のタスクが与えられたときにシステムがユーザーのお気に入りツールを選択できるようにします。上記のように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-cachesearch <search_key>:APTキャッシュを検索して、提供されたsearch_keyに関連するパッケージを検索します(パッケージ名またはパッケージの説明でいくつかのWord)。

  • apt-cacheshow <package>:特定のパッケージのAPT情報(パッケージのバージョン、インストールされているかどうか、説明)を提供します。

103

ご覧のとおり、私は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:

ご覧のとおり、open jdk 8を実行しています。jdk7に切り替えるには、1を押して、 Enter キー。 javacについても同様に、Sudo update-alternatives --config javacを実行します。

バージョンをチェックして、変更を確認します:Java -versionおよびjavac -version

77
samsamara

ランダムなPPAやフリーではないOracleバイナリではなく、OpenJDK 8を公式のDebianリポジトリから入手しました。これが私のやり方です。

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
Sudo apt-get update
Sudo apt-get  install openjdk-8-jdk

これはうまくいくはずです

0
ahmed emad