Ubuntu 16.04以降にopenjdk 7をインストールするにはどうすればよいですか?


120

メインシステムを16.04にアップグレードしたいのですが、OpenJDK 7を必要とするプロジェクトに取り組んでいます。

どうやらそれは些細なことから利用できませんapt-get install openjdk-7-jdk。リポジトリーにはバージョン8と9のみがリストされています。

誰でもそれをインストールする方法の指示を私に指すことができますか?


なぜJDK 7が必要なのか疑問に思う方がいらっしゃる場合、neo4j 2.1.6はUbuntu 16.04でうまく動作せず、間違っている可能性があるのはJDKだけだと思う​​ので、私は同じ状況にいます。
シュリダールSarnobat

システムJVMとしてopenjdk 7を明示的に必要としていますか、それともJava 7ランタイムのみが必要ですか。後者はOracleアーカイブからダウンロードできます。
トールビョーンラヴンアンデルセン

回答:


146

セキュリティ警告

下記のPPAのパッケージは、Javaのセキュリティパッチで更新されません。本番環境では使用しないでください。代わりに別の回答をご覧ください。

執筆時点で、OpenJDK 7の最後のアップロードは、バージョン7u95で '2016-04-22'に行われ、Ubuntu 14.04が7u181に更新された 'latest'として引き続き利用可能です。


更新:これは最も投票された回答ですが、このPPAによるセキュリティの更新が不足しているため、2018年に使用する可能性が最も高い回答ではありません。

私のために働いた次の指示を見つけました:

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

これにより、「OpenJDKアップロード用のPPA(制限付き)」が追加のパッケージリポジトリとして定義され、情報が更新され、パッケージが依存関係とともに(そのリポジトリから)インストールされます。


13
誤って最初にopenjdk-8をインストールした場合(私がしたように)、この回答に従ってからsudo update-java-alternativesopenjdk-7をデフォルトにすることができます。
リアンサンダーソン


19
-1。このPPAは完全に古く、多くの重要なセキュリティパッチを無視しているためです。これをインストールすることはまったく許されません、imo。
gertvdijk

3
17.04では機能しません。
コリンハリントン

2
-1もPPAが示唆したとおり、制限付きであり、最新の状態に保たれていません。
区切り記号

65

編集22-Jul-2019:現在、この回答は機能しません。以下で参照されるJDKパッケージは、Debian Experimentalでは使用できなくなりました。いずれにせよ、彼らはより新しいセキュリティアップデートを含むUbuntu Trustyのパッケージに遅れをとっていました。これが解決されるまで、他の回答を参照してください(ごめんなさい、ETAはありません)。


openjdk-r / ppaのメンテナーがバージョン7u95-2.6.4-3を超えてopenjdk-7パッケージを更新するようには見えません。ただし、このパッケージの説明「Debian GNU / Linuxのプライマリアーカイブの実験からのdebianのコピー」は、これを自分自身で処理する方法についての手がかりを与えてくれます。

オプション1:手動インストール

  1. アーキテクチャに適したパッケージをダウンロードします:(
    ほとんどのユーザーにとって、これは64ビットの場合はamd64、32ビットのUbuntuがインストールされている場合はi386を意味します)

  2. (を試みる)を使用してパッケージをインストールしますdpkg

    Ubuntu 17.10以前:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*

    Ubuntu 18.04以降:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. からの出力を確認しますdpkg。おそらく依存関係の問題があった場合、以下が表示されます(amd64の代わりにアーキテクチャが使用されています)。

    処理中にエラーが発生しました:
    openjdk-7-jre:amd64
    openjdk-7-jre-headless:amd64
    openjdk-7-jdk:amd64

    依存関係の問題がなければ、完了です。#4に進んでください。それ以外の場合、依存関係の問題を解決する必要がある場合、これは次の方法で処理されます。

    sudo apt install -f

    依存関係dpkgapt解決した後、再実行する必要はありません。openjdkパッケージのインストールが自動的に終了します。

  4. Javaの代替を更新します。を使用すると、インストールされているすべてのJavaバージョンを表示できますupdate-java-alternatives --list。OpenJDK Java 1.7をアクティブにするには、次を実行します。

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

    IcedTeaPlugin.soプラグインが利用できないというエラーに気付くかもしれません。これは、JDKで作業する開発者にとって実際の問題ではありません。

  5. Javaが機能していることを確認します。

    java -version

    次のようなものが出力されます。

    Javaバージョン "1.7.0_161"
    OpenJDKランタイム環境(IcedTea 2.6.12)(7u161-2.6.12-1)
    OpenJDK 64ビットサーバーVM(ビルド24.161-b01、混合モード)

オプション2:自動インストール(を含むアップデートを含むapt

ピン留めを使用して、openjdk-7-jdkとそのDebianリポジトリからの依存関係をインストールおよび更新できます。

  1. apt興味のあるパッケージのみを考慮するように指示するピン留めファイルを作成します(Debianの実験パッケージでUbuntuディストリビューション全体を「アップグレード」したくないのは確かです)。

    /etc/apt/preferences.d/debian以下の内容でファイルを作成します。あなたはスーパーユーザ権限が必要なので、のいずれかを使用しますsudo vimsudo nanogksudo gedit、など

    Package: *
    Pin: release o=Debian,n=experimental
    Pin-Priority: -1
    
    Package: *
    Pin: release o=Debian,n=sid
    Pin-Priority: -1
    
    Package: openjdk-7-jdk
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre-headless
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: libjpeg62-turbo
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    

    Ubuntu 17.10以前の場合は、次も追加します(下部の注を参照)。

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  2. Debianキーリングをインストールします。

    sudo apt install debian-archive-keyring

    注:これはdebianキーリングを追加する最も簡単な方法ですが、最新ではない場合があります。apt update手順4で実行する場合、次のような出力を確認します。

    W:GPGエラー:http://cdn-fastly.deb.debian.org/debian実験的InRelease:公開鍵が利用できないため、次の署名を検証できませんでした:NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E:リポジトリ「http://httpredir.debian.org/debian experimental InRelease」は署名されていません。

    このエラーが表示された場合は、次を使用して必要なキーを手動で追加してください。

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
    

    警告メッセージに表示される公開鍵8B48AD62469255537638D0442B90D010一致する必要があります。

  3. 必要なリポジトリを追加します。

    sudo add-apt-repository 'deb http://httpredir.debian.org/debian experimental main'
    sudo add-apt-repository 'deb http://httpredir.debian.org/debian sid main'
    

    安定したDebianリポジトリを使用してみませんか?Debian安定版では満足できない依存関係に陥ります。実験的(openjdk-7の場合)およびsid(libjpeg62-turbo、libfontconfig1、およびfontconfig-configの)リポジトリーは、依存関係バージョンの方が寛容です。

  4. aptキャッシュを更新します(Debianのパッケージリストは大きいため、これにはしばらく時間がかかります):

    sudo apt update
  5. openjdk-7-jdkをインストールします。

    sudo apt install openjdk-7-jdk
  6. Javaの代替を更新します。を使用すると、インストールされているすべてのJavaバージョンを表示できますupdate-java-alternatives --list。OpenJDK Java 1.7をアクティブにするには、次を実行します。

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

    IcedTeaPlugin.soプラグインが利用できないというエラーに気付くかもしれません。これは、JDKで作業する開発者にとって実際の問題ではありません。

  7. Javaが機能していることを確認します。

    java -version

    次のようなものが出力されます。

    Javaバージョン "1.7.0_161"
    OpenJDKランタイム環境(IcedTea 2.6.12)(7u161-2.6.12-1)
    OpenJDK 64ビットサーバーVM(ビルド24.161-b01、混合モード)

fontconfigノート

libfontconfig1そしてfontconfig-config2.12以降のUbuntu 17.10上の以前のバージョンにアップグレードする必要があります。DebianのアップデートパッケージにはUbuntuのカスタマイズが含まれていないため、一部のアプリケーションではこれらのパッケージがインストールされたいフォントが表示されます。たとえば、Charles Web Debugging Proxy。使用するプログラムに応じて、この問題の影響を受ける場合と受けない場合があります。


興味深い答えは、このパッケージを自動的に更新し続ける方法を見つけたら更新してください。
J.セラ

私はちょうどubuntu 16.04にjdk 7をインストールしようとしましたが、これが私がそれを機能させることができた唯一の方法です。ありがとうございました!
リンク

2
@ J.Serra Answerは自動更新方法で改訂されました。
MDMower

特に自動方法は非常に高く評価されています!理解して書き留めてくれてありがとう!
steadfasterX

1
自動的な方法はほとんど私にとってはうまくいきましたが、完全に永続的でもありません。(libjpeg62-turboに加えて)/etc/apt/preferences.d/debianにさらに2つのパッケージを追加する必要がありました:libfontconfig1およびfontconfig-config
comodoro


0

Ubuntu 16.04、Ubuntu 17.04にJava 7をインストールします

OpenJDKよりもパフォーマンスが優れているため、Oracle Javaをインストールすることをお勧めします。そのため、代替案を投稿したいと思います。Oracle Javaをインストールする場合は、ターミナルで次のコマンドを実行してPPAからインストールします。

  1. 必要なリポジトリを追加します。

    sudo add-apt-repository ppa:webupd8team/java
  2. aptキャッシュを更新してoracle-java7をインストールします

    sudo apt update
    sudo apt install java-common oracle-java7-installer
    

    インストールプロセス中に、Oracleライセンス契約に同意する必要があります。インストールしたら、JAVA_HOMEなどのJava環境変数を設定する必要があります

  3. Java環境変数を修正します。

    sudo apt install oracle-java7-set-default
    source /etc/profile
    
  4. Javaが機能していることを確認します。

    java -version

    次のようなものが出力されます。

    java version "1.7.0_80"
    Java(TM) SE Runtime Environment (build 1.7.0_80-u80)
    Java HotSpot(TM) 64-Bit Server VM (build 25.131-u80, mixed mode)
    

3
Oracleインストーラーが機能しなくなりましたdownload.oracle.comへの接続(download.oracle.com)| 184.51.150.144 |:80 ... connected。HTTP要求が送信され、応答を待っています... 404 Not Found
自律

Oracle JDKの場合、同社はJDK 7のパブリックサポートを提供していません(有料サポートを提供しています)。私は、apt-get存在しないページからインストーラーを取得しようとしていると思います。-あなたはJDK 7が必要な場合は、アーカイブのウェブサイトからインストーラをダウンロードすることがあります。oracle.com/technetwork/java/javase/downloads/...
ハイメ

0

Oracle JDKの代替:

7、8、および9を切り替えるため、リポジトリでの労力を避けたかったので、OpenJDKではなくOracle JDKになりました。公式サイトからダウンロード。最新のビルド80にOpenJDKのビルド161と同じ修正が含まれているかどうかはわかりません。しかし、開発用に用意しているので、とにかくあまり意味がありません。

次に$JAVA_HOME、さまざまなスクリプトが適切なJDK(Maven、JBossなど)を選択できるように環境を設定する必要があります。

完全を期すため、JDKのバージョン7は、さらに、EOL'edたJDK 8公的支援は2017年9月以降に終了していると2018年9月後には公共の更新を取得しません。


0

コンテナを使用する

これは、Ubuntuで<outdated>削除されたソフトウェアを実行する方法に関する普遍的に有効な回答です<current>アプリケーションをコンテナー化します

たとえば、Dockerと、探しているソフトウェアがまだ利用可能/維持されている古いUbuntuベースイメージを使用します。

また、逆の方法でも機能します。現在実行中の安定したUbuntuで、より新しいまたは他のLinuxディストリビューションでソフトウェアを試してください。

Ubuntu 14.04を使用したJava 7の例

  1. Dockerのインストール-Docker CEの無料版で問題ありません。たとえば、https://docs.docker.com/install/linux/docker-ce/ubuntu/を参照するか、docker.io出荷された最近のUbuntuバージョンでパッケージを使用してください

  2. 空のフォルダーにファイルを作成しますDockerfile

    FROM ubuntu:trusty
    RUN apt-get update \
        && apt-get install -y \
            openjdk-7-jdk \
        && rm -rf /var/lib/apt/lists/*
    
    ENTRYPOINT ["/usr/bin/java"]
    

    必要に応じて、そのコマンドにパッケージを追加します。

  3. そのフォルダーで、次を実行します。

    docker build -t gertvdijk/java7 .
  4. そのJava 7イメージを使用して、使い捨てコンテナー内でコマンドを実行します。

    java -version

    docker run --rm -it gertvdijk/java7 -version

    出力:

    java version "1.7.0_181"
    OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.1)
    OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)
    
  5. オプションで、便宜上、ラッパーを作成します。

    • /usr/local/bin/java7-in-docker内容を含むファイルを作成します。

      #!/usr/bin/env sh -e
      
      DOCKER_IMAGE=gertvdijk/java7
      PWD="$(pwd)"
      
      exec docker run \
        --rm -it \
        -v ${PWD}:${PWD} \
        -v "/etc/passwd:/etc/passwd:ro" \
        -v "/etc/group:/etc/group:ro" \
        --user "$(id -u):$(id -g)" \
        --workdir "${PWD}" \
        "${DOCKER_IMAGE}" \
        $@
      

      これにより、ファイルシステム全体ではなく、コンテナ内で現在の作業ディレクトリが使用可能になり、コンテナ名前空間のローカルユーザーアカウントになりすますことができます。

    • 実行可能としてマークします。

      sudo chmod +x /usr/local/bin/java7-in-docker
  6. 次のように、Java 7を透過的に実行します。

    java7-in-docker -jar relative/path/to/some.jar

14.04は、延長メンテナンスの費用を支払わない限り(2022年まで)メンテナンスされなくなります。
トールビョーン・ラウン・アンデルセン

-2

簡単な方法は次のとおりです。

次の行を追加します/etc/apt/sources.list

deb http://security.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

次に、aptを更新してインストールします。おそらくtzdataパッケージをダウングレードする必要があります。

その後、それらの行コメント化して、aptを再度更新して、そのリポジトリからのパッケージのインストールまたは更新を防止することをお勧めします(予期しない動作につながる可能性があります)。

問題の1つは、システム(特にtzdataパッケージ)の更新時にパッケージが削除されないように、それらのパッケージを保持する必要があることです。

:この方法は最後の手段として使用してください。問題なく更新できる他の方法をお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.