web-dev-qa-db-ja.com

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

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

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

誰かが私にそれをインストールする方法の指示を教えてもらえますか?

120
onairda

セキュリティ警告

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

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


更新:このISにもかかわらず、このPPAによるセキュリティの更新が不足しているため、2018年に最も投票された回答はおそらく使用したいものではありません。

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

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

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

146
onairda

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


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

オプション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
    

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

  4. Java代替を更新します。 update-Java-alternatives --listを使用すると、インストールされているすべてのJavaバージョンを表示できます。 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による更新を含む)

Pinning は、openjdk-7-jdkとその依存関係をDebianリポジトリからインストールおよび更新するために利用できます。

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

    以下の内容のファイル/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キーリングを追加する最も簡単な方法ですが、最新ではない場合があります。手順4でapt updateを実行するときは、次のような出力を確認します。

    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
    

    ここで、8B48AD6246925553および7638D0442B90D010は、警告メッセージに表示される公開鍵と一致する必要があります。

  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代替を更新します。 update-Java-alternatives --listを使用すると、インストールされているすべてのJavaバージョンを表示できます。 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 notes

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

65
MDMower

AzulからOpenJDK 7をダウンロードできます。これはニーズに合う場合があります。どちらにもDEB(パッケージシステム用)とZipディストリビューションがあります。私はZipディストリビューションでしか作業していません。

http://www.azul.com/downloads/zulu/zulu-linux/

コンテナを使用する

これは、<outdated> Ubuntuで<current>削除されたソフトウェアを実行する方法に関する普遍的に有効な回答です:Ubuntu:containerize your application

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

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

Ubuntu 14.04を使用したJava 7の例

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

  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
    
0
gertvdijk

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

Oracle Javaをインストールすることをお勧めします。これはOpenJDKよりも優れたパフォーマンスエッジを備えているためです。そのため、代替案を投稿したいと思います。 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)
    
0
Teocci

上記の手動または自動インストールに関するMDMowerの回答に追加。(*)

Hwe-16.04-EdgeカーネルとDEとしてCinnamonを使用したUbuntu 16.04.5 LTSで、libfontconfig1とその依存関係のfontconfig-configのインストール/アップグレード時に予期しないフォントの動作が発生しました。突然、多くのアプリケーションのメニューバー、およびアプリケーション全体のターミナルウィンドウや他の多くの場所に、奇妙で薄くてほとんど読みにくい等幅フォントやその他の「ugい」フォントがありました。

この問題が発生した場合:実行時にこの問題の修正は行われていないようです。 CinnamonまたはGnomeまたはFontConfigのいずれか、またはターミナルの設定(gconf-editor/gconftool、gnome-Tweak-tool、fc- *)で修正する設定を検索する時間を無駄にすることはありません。これは、「壊れた」フォントには影響しません。 Fontconfig-Configの更新により、特定のフォントへの既知の/キャッシュされた参照が何らかの方法でリセットされ、代わりに元の名前でフォントを参照しながら、いくつかの代替フォントがレンダリングされているようです。

システムを再起動するだけで、すべてが正常に戻ります。ログアウトして再度ログインするだけで十分です。


(*)これは、@ MDMowerによる上記の回答への追加またはコメントと想定されていましたが、StackExchangeの「評判」が不十分であるため、コメントとして投稿できません。私の編集も拒否されました(部分的にそうです)。したがって、このスパムの「答え」ではなく。ごめんなさい。十分な「力」を持っている人がこの「答え」をコメントに変えて、それが属する場所になれば嬉しいです。ありがとう!

0
R. Cocinero

Oracle JDKの代替:

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

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

完全を期すために、JDKバージョン7は廃止されました JDK 8のパブリックサポートは2017年9月以降終了しています であり、2018年9月以降はパブリックアップデートを取得しません。

0
Ondra Žižka