メインシステムを16.04にアップグレードしたいのですが、OpenJDK 7を必要とするプロジェクトに取り組んでいます。
どうやらそれは些細なapt-get install openjdk-7-jdk
からは利用できないようです。リポジトリーにはバージョン8と9のみがリストされています。
誰かが私にそれをインストールする方法の指示を教えてもらえますか?
セキュリティ警告
下記の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(制限付き)」が追加のパッケージリポジトリとして定義され、情報が更新され、パッケージが依存関係とともに(そのリポジトリから)インストールされます。
2019年7月22日編集:現在、この回答は機能しません。以下で参照されるJDKパッケージは、Debian Experimentalでは使用できなくなりました。いずれにせよ、彼らはより新しいセキュリティアップデートを含むUbuntu Trustyのパッケージに遅れをとっていました。これが解決されるまで、他の回答を参照してください(ごめんなさい、ETAはありません)。
Openjdk-r/ppaのメンテナーがバージョン7u95-2.6.4-3を超えてopenjdk-7パッケージを更新するようには見えません。ただし、このパッケージの説明「Debian GNU/Linuxのプライマリアーカイブの実験的からコピー」は、これを自分で処理する方法についての手がかりを与えてくれます。
オプション1:手動インストール
アーキテクチャ向けのパッケージをダウンロードします。
(ほとんどのユーザーでは、64ビットの場合はAMD64、32ビットのUbuntuがインストールされている場合はi386を意味します)
(試行)dpkg
を使用してパッケージをインストールします:
Ubuntu 17.10以前:
Sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
Ubuntu 18.04以降:
Sudo dpkg -i openjdk-7-* libjpeg62-turbo*
dpkg
からの出力を確認します。依存関係の問題が発生した場合(可能性が高い)、次のように表示されます(AMD64の代わりにアーキテクチャを使用)
処理中にエラーが発生しました: openjdk-7-jre:AMD64 openjdk-7-jre-headless:AMD64 openjdk-7-jdk:AMD64
依存関係の問題がなければ、完了です。#4に進んでください。それ以外の場合、依存関係の問題を解決する必要がある場合、これは次の方法で処理されます。
Sudo apt install -f
dpkg
に依存関係を解決させた後、apt
を再実行する必要はありません。 openjdkパッケージのインストールが自動的に終了します。
Java代替を更新します。 update-Java-alternatives --list
を使用すると、インストールされているすべてのJavaバージョンを表示できます。 OpenJDK Java 1.7をアクティブにするには、次を実行します。
Sudo update-Java-alternatives -s Java-1.7.0-openjdk-AMD64
IcedTeaPlugin.so
プラグインが利用できないというエラーに気付くかもしれません。これは、JDKで作業する開発者にとって実際の問題ではありません。
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リポジトリからインストールおよび更新するために利用できます。
apt
に関心のあるパッケージのみを考慮するように指示するピン留めファイルを作成します(Ubuntuディストリビューション全体をDebianの実験パッケージで「アップグレード」したくないのは確かです)。
以下の内容のファイル/etc/apt/preferences.d/debian
を作成します。スーパーユーザー権限が必要なので、Sudo vim
、Sudo nano
、gksudo 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
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
は、警告メッセージに表示される公開鍵と一致する必要があります。
必要なリポジトリを追加します。
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の)リポジトリーは、依存関係バージョンの方が寛容です。
apt
キャッシュを更新します(Debianのパッケージリストは大きいため、これにはしばらく時間がかかります)。
Sudo apt update
Openjdk-7-jdkをインストールします。
Sudo apt install openjdk-7-jdk
Java代替を更新します。 update-Java-alternatives --list
を使用すると、インストールされているすべてのJavaバージョンを表示できます。 OpenJDK Java 1.7をアクティブにするには、次を実行します。
Sudo update-Java-alternatives -s Java-1.7.0-openjdk-AMD64
IcedTeaPlugin.so
プラグインが利用できないというエラーに気付くかもしれません。これは、JDKで作業する開発者にとって実際の問題ではありません。
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デバッグプロキシ。使用するプログラムに応じて、この問題の影響を受ける場合と受けない場合があります。
AzulからOpenJDK 7をダウンロードできます。これはニーズに合う場合があります。どちらにもDEB(パッケージシステム用)とZipディストリビューションがあります。私はZipディストリビューションでしか作業していません。
これは、<outdated>
Ubuntuで<current>
削除されたソフトウェアを実行する方法に関する普遍的に有効な回答です:Ubuntu:containerize your application。
たとえば、Dockerと、探しているソフトウェアがまだ利用可能/維持されている古いUbuntuベースイメージを使用します。
また、逆の方法でも機能します。現在実行中の安定したUbuntuで、より新しいまたは他のLinuxディストリビューションでソフトウェアを試してください。
Dockerのインストール-Docker CE無料版は問題ありません。たとえば、 https://docs.docker.com/install/linux/docker-ce/ubuntu/ を参照するか、出荷された最近のUbuntuバージョンでdocker.io
パッケージを使用します。
空のフォルダーで、ファイル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"]
必要に応じて、そのコマンドにパッケージを追加します。
そのフォルダーで、次を実行します。
docker build -t gertvdijk/Java7 .
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)
オプションで、便宜上、ラッパーを作成します。
内容を持つファイル/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
次のようにJava 7を透過的に実行します。
Java7-in-docker -jar relative/path/to/some.jar
Ubuntu 16.04、Ubuntu 17.04にJava 7をインストールします
Oracle Javaをインストールすることをお勧めします。これはOpenJDKよりも優れたパフォーマンスエッジを備えているためです。そのため、代替案を投稿したいと思います。 Oracle Javaをインストールする場合は、ターミナルで次のコマンドを実行してPPAからインストールします。
必要なリポジトリを追加します。
Sudo add-apt-repository ppa:webupd8team/Java
apt
キャッシュを更新してインストールOracle-Java7:
Sudo apt update
Sudo apt install Java-common Oracle-Java7-installer
インストールプロセス中に、Oracleライセンス契約に同意する必要があります。インストールしたら、Java_HOMEなどのJava環境変数を設定する必要があります
Java環境変数を修正してください。
Sudo apt install Oracle-Java7-set-default
source /etc/profile
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)
上記の手動または自動インストールに関する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の「評判」が不十分であるため、コメントとして投稿できません。私の編集も拒否されました(部分的にそうです)。したがって、このスパムの「答え」ではなく。ごめんなさい。十分な「力」を持っている人がこの「答え」をコメントに変えて、それが属する場所になれば嬉しいです。ありがとう!
Oracle JDKの代替:
7、8、および9を切り替えるので、リポジトリでの労力を避けたかったので、OpenJDKではなくOracle JDKになりました。 公式サイト からダウンロード。最新のビルド80にOpenJDKのビルド161と同じ修正が含まれているかどうかはわかりません。しかし、開発用であるため、とにかくあまり意味がありません。
次に、さまざまなスクリプトが適切なJDK(Maven、JBossなど)を選択できるように、環境で$Java_HOME
を設定する必要があります。
完全を期すために、JDKバージョン7は廃止されました JDK 8のパブリックサポートは2017年9月以降終了しています であり、2018年9月以降はパブリックアップデートを取得しません。