メインシステムを16.04にアップグレードしたいのですが、OpenJDK 7を必要とするプロジェクトに取り組んでいます。
どうやらそれは些細なことから利用できませんapt-get install openjdk-7-jdk
。リポジトリーにはバージョン8と9のみがリストされています。
誰でもそれをインストールする方法の指示を私に指すことができますか?
メインシステムを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'として引き続き利用可能です。
更新:これは最も投票された回答ですが、このPPAによるセキュリティの更新が不足しているため、2018年に使用する可能性が最も高い回答ではありません。
私のために働いた次の指示を見つけました:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
これにより、「OpenJDKアップロード用のPPA(制限付き)」が追加のパッケージリポジトリとして定義され、情報が更新され、パッケージが依存関係とともに(そのリポジトリから)インストールされます。
sudo update-java-alternatives
openjdk-7をデフォルトにすることができます。
編集22-Jul-2019:現在、この回答は機能しません。以下で参照されるJDKパッケージは、Debian Experimentalでは使用できなくなりました。いずれにせよ、彼らはより新しいセキュリティアップデートを含むUbuntu Trustyのパッケージに遅れをとっていました。これが解決されるまで、他の回答を参照してください(ごめんなさい、ETAはありません)。
openjdk-r / ppaのメンテナーがバージョン7u95-2.6.4-3を超えてopenjdk-7パッケージを更新するようには見えません。ただし、このパッケージの説明「Debian GNU / Linuxのプライマリアーカイブの実験からのdebianのコピー」は、これを自分自身で処理する方法についての手がかりを与えてくれます。
オプション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の代替を更新します。を使用すると、インストールされているすべてのJavaバージョンを表示できますupdate-java-alternatives --list
。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
)
ピン留めを使用して、openjdk-7-jdkとそのDebianリポジトリからの依存関係をインストールおよび更新できます。
apt
興味のあるパッケージのみを考慮するように指示するピン留めファイルを作成します(Debianの実験パッケージでUbuntuディストリビューション全体を「アップグレード」したくないのは確かです)。
/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キーリングを追加する最も簡単な方法ですが、最新ではない場合があります。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
警告メッセージに表示される公開鍵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の代替を更新します。を使用すると、インストールされているすべてのJavaバージョンを表示できますupdate-java-alternatives --list
。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ノート
libfontconfig1
そしてfontconfig-config
2.12以降のUbuntu 17.10上の以前のバージョンにアップグレードする必要があります。DebianのアップデートパッケージにはUbuntuのカスタマイズが含まれていないため、一部のアプリケーションではこれらのパッケージがインストールされたいフォントが表示されます。たとえば、Charles Web Debugging Proxy。使用するプログラムに応じて、この問題の影響を受ける場合と受けない場合があります。
AzulからOpenJDK 7をダウンロードできます。これはニーズに合う場合があります。どちらにもDEB(パッケージシステム用)とZIP配布があります。私は、ZIPディストリビューションでのみ作業しました。
Ubuntu 16.04、Ubuntu 17.04にJava 7をインストールします
OpenJDKよりもパフォーマンスが優れているため、Oracle Javaをインストールすることをお勧めします。そのため、代替案を投稿したいと思います。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)
apt-get
存在しないページからインストーラーを取得しようとしていると思います。-あなたはJDK 7が必要な場合は、アーカイブのウェブサイトからインストーラをダウンロードすることがあります。oracle.com/technetwork/java/javase/downloads/...
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月後には公共の更新を取得しません。
これは、Ubuntuで<outdated>
削除されたソフトウェアを実行する方法に関する普遍的に有効な回答です<current>
:アプリケーションをコンテナー化します。
たとえば、Dockerと、探しているソフトウェアがまだ利用可能/維持されている古いUbuntuベースイメージを使用します。
また、逆の方法でも機能します。現在実行中の安定したUbuntuで、より新しいまたは他のLinuxディストリビューションでソフトウェアを試してください。
Dockerのインストール-Docker CEの無料版で問題ありません。たとえば、https://docs.docker.com/install/linux/docker-ce/ubuntu/を参照するか、docker.io
出荷された最近のUbuntuバージョンでパッケージを使用してください。
空のフォルダーにファイルを作成します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
簡単な方法は次のとおりです。
次の行を追加します/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
パッケージ)の更新時にパッケージが削除されないように、それらのパッケージを保持する必要があることです。
注:この方法は最後の手段として使用してください。問題なく更新できる他の方法をお勧めします。