私のマシンにはUbuntu 12.04 AMD64がインストールされていますが、以前のバージョンのUbuntuでは非常に簡単でしたが、このコマンドupdate-Java-alternatives
には本当に悪いmanページがあります。
/media/mydisk/jdk
のようなマウントされたパーティションにJDKを展開しましたが、UbuntuリポジトリにあるJDKの代わりにそのJDKを強制的に使用するにはどうすればよいですか?
このupdate-Java-alternatives
の背後にあるロジックは何ですか?
注:
update-Java-alternatives
は、手動インストールでは機能しません。いずれにせよ、それはupdate-alternatives
にはない特別な能力を持っているようには見えませんが、便利さを除きます。
@AnwarShahのコマンドラインメソッドのグラフィカルな代替手段として、 Gnome Alternatives (Sudo apt-get install galternatives
)の使用を検討してください。
開始GAlternatives、各Javaオプションを選択し、手動に変更し、 Add代替(ここの例は、私のホームディレクトリにインストールされたIBM JREです):
Sudo update-alternatives
でこれを行うことができます:
# Adding a new alternative for "Java".
Sudo update-alternatives --install /usr/bin/Java java /media/mydisk/jdk/bin/Java 1
# Setting the new alternative as default for "Java".
Sudo update-alternatives --config Java
他のjdkコンポーネントについてもこれを行う必要があります。これらのコンポーネントはappletviewer
、extcheck
、idlj
、jar
、jarsigner
、Java
、javac
、javadoc
、javah
、javap
、javaws
、jconsole
、jdb
、jexec
、jhat
、jinfo
、jmap
、jps
、jrunscript
、jsadebugd
、jstack
、jstat
、jstatd
、keytool
あります、mozilla-javaplugin.so
、native2ascii
、orbd
、pack200
、policytool
、rmic
、rmid
、rmiregistry
、schemagen
、serialver
、servertool
、tnameserv
、unpack200
、wsgen
、wsimport
、xjc
。
詳細については、update-alternatives
のmanページを参照できます:man update-alternatives
。
コマンドupdate-Java-alternatives
はJavaコンポーネントの代替を設定しますが、これにはupdate-alternatives
を使用しているようです。
編集:上記の回答はJavaを対象としています6。
jcmd
をJava 6リストに追加する必要があります。jcmd
、jjs
、およびjdeps
を追加する必要があります。jcmd
、jjs
、jdeps
、およびjshell
をJava 6リストに追加する必要があります。実際にこれらのコマンドを使用してjdk1.6.0_25
をインストールします。 (更新された完全なupdate-alternativesスクリプトについては、以下のリンクを確認してください)
Sudo update-alternatives --install /usr/bin/Java java /media/mydisk/jdk/bin/Java 100
Sudo update-alternatives --install /usr/bin/javac javac /media/mydisk/jdk/javac 100
Sudo update-alternatives --install /usr/bin/Java_vm Java_vm /media/mydisk/jdk/bin/Java_vm 100
Sudo update-alternatives --install /usr/bin/jcontrol jcontrol /media/mydisk/jdk/bin/jcontrol 100
Sudo update-alternatives --install /usr/bin/jexec jexec /media/mydisk/jdk/jre/lib/jexec 100
Sudo update-alternatives --install /usr/bin/jexec jexec /media/mydisk/jdk/jre/lib/jexec 100 --slave /usr/share/binfmts/jar jexec-binfmt media/mydisk/jdk/jre/lib/javaws
そして、これらのコマンドを使用してデフォルトとして設定できます。おそらく、これらは必要ありません。
Sudo update-alternatives --config Java
Sudo update-alternatives --config javac
Sudo update-alternatives --config Java_vm
Sudo update-alternatives --config jcontrol
Sudo update-alternatives --config jexec
コマンドman update-alternatives
を使用して詳細なヘルプを取得するか、 ブラウザのマニュアル を表示できます。
マニュアルページで説明されているupdate-Java-alternatives
の目的は
update-Java-alternativesは、Java言語の1つのランタイムまたは開発キットに属するすべての代替を更新します。パッケージは、
/usr/lib/jvm/.<jname>.jinfo.
の代替のこれらの情報を提供します
すべてのjdkツールは
appletviewer extcheck idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc
これがお役に立てば幸いです。
このスクリプトを使用してダウンロードしたjdkを抽出し、update-alternatives
を使用して完全に設定します。 jdkファイル名とJava_DIR
を必要に応じて変更します。 Java_DIR
は、jdkフォルダextractedへのパスです。
#!/bin/sh
Java_DIR=/usr/lib/jvm/jdk1.8.0_65
# extract a jdk file named `jdk-8u65-linux-x64.tar.gz` from current directory to `/usr/lib/jvm`
Sudo tar xvf jdk-8u65-linux-x64.tar.gz -C /usr/lib/jvm/
# update alternative links
Sudo update-alternatives --quiet --install /usr/lib/xulrunner-addons/plugins/libjavaplugin.so xulrunner-1.9-javaplugin.so $Java_DIR/jre/lib/AMD64/libnpjp2.so 100
Sudo update-alternatives --quiet --install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so $Java_DIR/jre/lib/AMD64/libnpjp2.so 100
Sudo update-alternatives --quiet --install /usr/bin/appletviewer appletviewer $Java_DIR/bin/appletviewer 100 --slave /usr/share/man/man1/appletviewer.1 appletviewer.1 $Java_DIR/man/man1/appletviewer.1
Sudo update-alternatives --quiet --install /usr/bin/apt apt $Java_DIR/bin/apt 100 --slave /usr/share/man/man1/apt.1 apt.1 $Java_DIR/man/man1/apt.1
Sudo update-alternatives --quiet --install /usr/bin/extcheck extcheck $Java_DIR/bin/extcheck 100 --slave /usr/share/man/man1/extcheck.1 extcheck.1 $Java_DIR/man/man1/extcheck.1
Sudo update-alternatives --quiet --install /usr/bin/idlj idlj $Java_DIR/bin/idlj 100 --slave /usr/share/man/man1/idlj.1 idlj.1 $Java_DIR/man/man1/idlj.1
Sudo update-alternatives --quiet --install /usr/bin/jar jar $Java_DIR/bin/jar 100 --slave /usr/share/man/man1/jar.1 jar.1 $Java_DIR/man/man1/jar.1
Sudo update-alternatives --quiet --install /usr/bin/jarsigner jarsigner $Java_DIR/bin/jarsigner 100 --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 $Java_DIR/man/man1/jarsigner.1
Sudo update-alternatives --quiet --install /usr/bin/javac javac $Java_DIR/bin/javac 100 --slave /usr/share/man/man1/javac.1 javac.1 $Java_DIR/man/man1/javac.1
Sudo update-alternatives --quiet --install /usr/bin/javadoc javadoc $Java_DIR/bin/javadoc 100 --slave /usr/share/man/man1/javadoc.1 javadoc.1 $Java_DIR/man/man1/javadoc.1
Sudo update-alternatives --quiet --install /usr/bin/javah javah $Java_DIR/bin/javah 100 --slave /usr/share/man/man1/javah.1 javah.1 $Java_DIR/man/man1/javah.1
Sudo update-alternatives --quiet --install /usr/bin/javap javap $Java_DIR/bin/javap 100 --slave /usr/share/man/man1/javap.1 javap.1 $Java_DIR/man/man1/javap.1
Sudo update-alternatives --quiet --install /usr/bin/jconsole jconsole $Java_DIR/bin/jconsole 100 --slave /usr/share/man/man1/jconsole.1 jconsole.1 $Java_DIR/man/man1/jconsole.1
Sudo update-alternatives --quiet --install /usr/bin/jdb jdb $Java_DIR/bin/jdb 100 --slave /usr/share/man/man1/jdb.1 jdb.1 $Java_DIR/man/man1/jdb.1
Sudo update-alternatives --quiet --install /usr/bin/jhat jhat $Java_DIR/bin/jhat 100 --slave /usr/share/man/man1/jhat.1 jhat.1 $Java_DIR/man/man1/jhat.1
Sudo update-alternatives --quiet --install /usr/bin/jinfo jinfo $Java_DIR/bin/jinfo 100 --slave /usr/share/man/man1/jinfo.1 jinfo.1 $Java_DIR/man/man1/jinfo.1
Sudo update-alternatives --quiet --install /usr/bin/jmap jmap $Java_DIR/bin/jmap 100 --slave /usr/share/man/man1/jmap.1 jmap.1 $Java_DIR/man/man1/jmap.1
Sudo update-alternatives --quiet --install /usr/bin/jps jps $Java_DIR/bin/jps 100 --slave /usr/share/man/man1/jps.1 jps.1 $Java_DIR/man/man1/jps.1
Sudo update-alternatives --quiet --install /usr/bin/jrunscript jrunscript $Java_DIR/bin/jrunscript 100 --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 $Java_DIR/man/man1/jrunscript.1
Sudo update-alternatives --quiet --install /usr/bin/jsadebugd jsadebugd $Java_DIR/bin/jsadebugd 100 --slave /usr/share/man/man1/jsadebugd.1 jsadebugd.1 $Java_DIR/man/man1/jsadebugd.1
Sudo update-alternatives --quiet --install /usr/bin/jstack jstack $Java_DIR/bin/jstack 100 --slave /usr/share/man/man1/jstack.1 jstack.1 $Java_DIR/man/man1/jstack.1
Sudo update-alternatives --quiet --install /usr/bin/jstat jstat $Java_DIR/bin/jstat 100 --slave /usr/share/man/man1/jstat.1 jstat.1 $Java_DIR/man/man1/jstat.1
Sudo update-alternatives --quiet --install /usr/bin/jstatd jstatd $Java_DIR/bin/jstatd 100 --slave /usr/share/man/man1/jstatd.1 jstatd.1 $Java_DIR/man/man1/jstatd.1
Sudo update-alternatives --quiet --install /usr/bin/native2ascii native2ascii $Java_DIR/bin/native2ascii 100 --slave /usr/share/man/man1/native2ascii.1 native2ascii.1 $Java_DIR/man/man1/native2ascii.1
Sudo update-alternatives --quiet --install /usr/bin/rmic rmic $Java_DIR/bin/rmic 100 --slave /usr/share/man/man1/rmic.1 rmic.1 $Java_DIR/man/man1/rmic.1
Sudo update-alternatives --quiet --install /usr/bin/schemagen schemagen $Java_DIR/bin/schemagen 100 --slave /usr/share/man/man1/schemagen.1 schemagen.1 $Java_DIR/man/man1/schemagen.1
Sudo update-alternatives --quiet --install /usr/bin/serialver serialver $Java_DIR/bin/serialver 100 --slave /usr/share/man/man1/serialver.1 serialver.1 $Java_DIR/man/man1/serialver.1
Sudo update-alternatives --quiet --install /usr/bin/wsgen wsgen $Java_DIR/bin/wsgen 100 --slave /usr/share/man/man1/wsgen.1 wsgen.1 $Java_DIR/man/man1/wsgen.1
Sudo update-alternatives --quiet --install /usr/bin/wsimport wsimport $Java_DIR/bin/wsimport 100 --slave /usr/share/man/man1/wsimport.1 wsimport.1 $Java_DIR/man/man1/wsimport.1
Sudo update-alternatives --quiet --install /usr/bin/xjc xjc $Java_DIR/bin/xjc 100 --slave /usr/share/man/man1/xjc.1 xjc.1 $Java_DIR/man/man1/xjc.1
Sudo update-alternatives --quiet --install /usr/bin/Java-rmi.cgi Java-rmi.cgi $Java_DIR/bin/Java-rmi.cgi 100
Sudo update-alternatives --quiet --install /usr/bin/ControlPanel ControlPanel $Java_DIR/jre/bin/ControlPanel 100
Sudo update-alternatives --quiet --install /usr/bin/Java java $Java_DIR/jre/bin/Java 100
Sudo update-alternatives --quiet --install /usr/bin/Java_vm Java_vm $Java_DIR/jre/bin/Java_vm 100
Sudo update-alternatives --quiet --install /usr/bin/javaws javaws $Java_DIR/jre/bin/javaws 100
Sudo update-alternatives --quiet --install /usr/bin/jcontrol jcontrol $Java_DIR/jre/bin/jcontrol 100
Sudo update-alternatives --quiet --install /usr/bin/keytool keytool $Java_DIR/jre/bin/keytool 100
Sudo update-alternatives --quiet --install /usr/bin/pack200 pack200 $Java_DIR/jre/bin/pack200 100
Sudo update-alternatives --quiet --install /usr/bin/policytool policytool $Java_DIR/jre/bin/policytool 100
Sudo update-alternatives --quiet --install /usr/bin/rmid rmid $Java_DIR/jre/bin/rmid 100
Sudo update-alternatives --quiet --install /usr/bin/rmiregistry rmiregistry $Java_DIR/jre/bin/rmiregistry 100
Sudo update-alternatives --quiet --install /usr/bin/unpack200 unpack200 $Java_DIR/jre/bin/unpack200 100
Sudo update-alternatives --quiet --install /usr/bin/orbd orbd $Java_DIR/jre/bin/orbd 100
Sudo update-alternatives --quiet --install /usr/bin/servertool servertool $Java_DIR/jre/bin/servertool 100
Sudo update-alternatives --quiet --install /usr/bin/tnameserv tnameserv $Java_DIR/jre/bin/tnameserv 100
Sudo update-alternatives --quiet --install /usr/bin/jexec jexec $Java_DIR/jre/lib/jexec 100
私にとって答えのほとんどは複雑すぎます。
当初、Oracleは、いくつかの環境変数の設定に基づいて、Javaのいくつかのバージョンをインストールできるようにすることを決定しました。
簡単でしたが、これらの変数を知らない人にとっては複雑すぎて、誰かが「update-Java-alternatives」を発明しました。
「update-Java-alternatives」はシンプルであることが実証されています。すべての設定が完了したら、このプログラムを実行し、必要なバージョンを選択するだけです。
問題は、自分で設定する必要がある場合(Javaのコマンドごとに設定する必要がある場合)、このソリューションは設定するには複雑すぎることです。
最良の答えは基本に戻るです。
.bash_profile
(ユーザー用)または/etc/profile
(すべてのユーザー用)に次の変数を設定します。
Java_HOME=<The home of your new Java distribution>
PATH=<The bin directory of your new Java distribution>:$PATH
私の場合、これはさらに簡単でした... /etc/profile.d
に次の内容のファイルが既にありました(新しいディレクトリ構造に更新しただけです):
export J2SDKDIR=/usr/lib/jvm/jdk1.8.0_121
export J2REDIR=/usr/lib/jvm/jdk1.8.0_121/jre
export PATH=/usr/lib/jvm/jdk1.8.0_121/bin:/usr/lib/jvm/jdk1.8.0_121/db/bin:/usr/lib/jvm/jdk1.8.0_121/jre/bin:$PATH
export Java_HOME=/usr/lib/jvm/jdk1.8.0_121
export DERBY_HOME=/usr/lib/jvm/jdk1.8.0_121/db
そしてそれだけです!!!
このbashスクリプトを使用することもできます。
#!/bin/bash
export JDK_INSTALL=/opt/jdk1.8.0_112
#export JDK_INSTALL=/opt/jdk1.7.0_25
#export JDK_INSTALL=/opt/jdk1.6.0_45
#JDK 6 and above
Sudo update-alternatives --install /usr/bin/appletviewer appletviewer $JDK_INSTALL/bin/appletviewer 1
Sudo update-alternatives --install /usr/bin/extcheck extcheck $JDK_INSTALL/bin/extcheck 1
Sudo update-alternatives --install /usr/bin/idlj idlj $JDK_INSTALL/bin/idlj 1
Sudo update-alternatives --install /usr/bin/jar jar $JDK_INSTALL/bin/jar 1
Sudo update-alternatives --install /usr/bin/jarsigner jarsigner $JDK_INSTALL/bin/jarsigner 1
Sudo update-alternatives --install /usr/bin/Java java $JDK_INSTALL/bin/Java 1
Sudo update-alternatives --install /usr/bin/javac javac $JDK_INSTALL/bin/javac 1
Sudo update-alternatives --install /usr/bin/javadoc javadoc $JDK_INSTALL/bin/javadoc 1
Sudo update-alternatives --install /usr/bin/javah javah $JDK_INSTALL/bin/javah 1
Sudo update-alternatives --install /usr/bin/javap javap $JDK_INSTALL/bin/javap 1
Sudo update-alternatives --install /usr/bin/javaws javaws $JDK_INSTALL/bin/javaws 1
Sudo update-alternatives --install /usr/bin/jconsole jconsole $JDK_INSTALL/bin/jconsole 1
Sudo update-alternatives --install /usr/bin/jdb jdb $JDK_INSTALL/bin/jdb 1
Sudo update-alternatives --install /usr/bin/jhat jhat $JDK_INSTALL/bin/jhat 1
Sudo update-alternatives --install /usr/bin/jinfo jinfo $JDK_INSTALL/bin/jinfo 1
Sudo update-alternatives --install /usr/bin/jmap jmap $JDK_INSTALL/bin/jmap 1
Sudo update-alternatives --install /usr/bin/jps jps $JDK_INSTALL/bin/jps 1
Sudo update-alternatives --install /usr/bin/jrunscript jrunscript $JDK_INSTALL/bin/jrunscript 1
Sudo update-alternatives --install /usr/bin/jsadebugd jsadebugd $JDK_INSTALL/bin/jsadebugd 1
Sudo update-alternatives --install /usr/bin/jstack jstack $JDK_INSTALL/bin/jstack 1
Sudo update-alternatives --install /usr/bin/jstat jstat $JDK_INSTALL/bin/jstat 1
Sudo update-alternatives --install /usr/bin/jstatd jstatd $JDK_INSTALL/bin/jstatd 1
Sudo update-alternatives --install /usr/bin/keytool keytool $JDK_INSTALL/bin/keytool 1
Sudo update-alternatives --install /usr/bin/native2ascii native2ascii $JDK_INSTALL/bin/native2ascii 1
Sudo update-alternatives --install /usr/bin/orbd orbd $JDK_INSTALL/bin/orbd 1
Sudo update-alternatives --install /usr/bin/pack200 pack200 $JDK_INSTALL/bin/pack200 1
Sudo update-alternatives --install /usr/bin/policytool policytool $JDK_INSTALL/bin/policytool 1
Sudo update-alternatives --install /usr/bin/rmic rmic $JDK_INSTALL/bin/rmic 1
Sudo update-alternatives --install /usr/bin/rmid rmid $JDK_INSTALL/bin/rmid 1
Sudo update-alternatives --install /usr/bin/rmiregistry rmiregistry $JDK_INSTALL/bin/rmiregistry 1
Sudo update-alternatives --install /usr/bin/schemagen schemagen $JDK_INSTALL/bin/schemagen 1
Sudo update-alternatives --install /usr/bin/serialver serialver $JDK_INSTALL/bin/serialver 1
Sudo update-alternatives --install /usr/bin/servertool servertool $JDK_INSTALL/bin/servertool 1
Sudo update-alternatives --install /usr/bin/tnameserv tnameserv $JDK_INSTALL/bin/tnameserv 1
Sudo update-alternatives --install /usr/bin/unpack200 unpack200 $JDK_INSTALL/bin/unpack200 1
Sudo update-alternatives --install /usr/bin/wsgen wsgen $JDK_INSTALL/bin/wsgen 1
Sudo update-alternatives --install /usr/bin/wsimport wsimport $JDK_INSTALL/bin/wsimport 1
Sudo update-alternatives --install /usr/bin/xjc xjc $JDK_INSTALL/bin/xjc 1
Sudo update-alternatives --set appletviewer $JDK_INSTALL/bin/appletviewer
Sudo update-alternatives --set extcheck $JDK_INSTALL/bin/extcheck
Sudo update-alternatives --set idlj $JDK_INSTALL/bin/idlj
Sudo update-alternatives --set jar $JDK_INSTALL/bin/jar
Sudo update-alternatives --set jarsigner $JDK_INSTALL/bin/jarsigner
Sudo update-alternatives --set Java $JDK_INSTALL/bin/Java
Sudo update-alternatives --set javac $JDK_INSTALL/bin/javac
Sudo update-alternatives --set javadoc $JDK_INSTALL/bin/javadoc
Sudo update-alternatives --set javah $JDK_INSTALL/bin/javah
Sudo update-alternatives --set javap $JDK_INSTALL/bin/javap
Sudo update-alternatives --set javaws $JDK_INSTALL/bin/javaws
Sudo update-alternatives --set jconsole $JDK_INSTALL/bin/jconsole
Sudo update-alternatives --set jdb $JDK_INSTALL/bin/jdb
Sudo update-alternatives --set jhat $JDK_INSTALL/bin/jhat
Sudo update-alternatives --set jinfo $JDK_INSTALL/bin/jinfo
Sudo update-alternatives --set jmap $JDK_INSTALL/bin/jmap
Sudo update-alternatives --set jps $JDK_INSTALL/bin/jps
Sudo update-alternatives --set jrunscript $JDK_INSTALL/bin/jrunscript
Sudo update-alternatives --set jsadebugd $JDK_INSTALL/bin/jsadebugd
Sudo update-alternatives --set jstack $JDK_INSTALL/bin/jstack
Sudo update-alternatives --set jstat $JDK_INSTALL/bin/jstat
Sudo update-alternatives --set jstatd $JDK_INSTALL/bin/jstatd
Sudo update-alternatives --set keytool $JDK_INSTALL/bin/keytool
Sudo update-alternatives --set native2ascii $JDK_INSTALL/bin/native2ascii
Sudo update-alternatives --set orbd $JDK_INSTALL/bin/orbd
Sudo update-alternatives --set pack200 $JDK_INSTALL/bin/pack200
Sudo update-alternatives --set policytool $JDK_INSTALL/bin/policytool
Sudo update-alternatives --set rmic $JDK_INSTALL/bin/rmic
Sudo update-alternatives --set rmid $JDK_INSTALL/bin/rmid
Sudo update-alternatives --set rmiregistry $JDK_INSTALL/bin/rmiregistry
Sudo update-alternatives --set schemagen $JDK_INSTALL/bin/schemagen
Sudo update-alternatives --set serialver $JDK_INSTALL/bin/serialver
Sudo update-alternatives --set servertool $JDK_INSTALL/bin/servertool
Sudo update-alternatives --set tnameserv $JDK_INSTALL/bin/tnameserv
Sudo update-alternatives --set unpack200 $JDK_INSTALL/bin/unpack200
Sudo update-alternatives --set wsgen $JDK_INSTALL/bin/wsgen
Sudo update-alternatives --set wsimport $JDK_INSTALL/bin/wsimport
Sudo update-alternatives --set xjc $JDK_INSTALL/bin/xjc
#JDK 7 and above
Sudo update-alternatives --install /usr/bin/jcmd jcmd $JDK_INSTALL/bin/jcmd 1
Sudo update-alternatives --set jcmd $JDK_INSTALL/bin/jcmd
#JDK 8 only
Sudo update-alternatives --install /usr/bin/jjs jjs $JDK_INSTALL/bin/jjs 1
Sudo update-alternatives --install /usr/bin/jdeps jdeps $JDK_INSTALL/bin/jdeps 1
Sudo update-alternatives --set jjs $JDK_INSTALL/bin/jjs
Sudo update-alternatives --set jdeps $JDK_INSTALL/bin/jdeps
@ air-dexと@Anwarが言ったことをスクリプトに入れました。 @ test30もスクリプトを作成したことは知っていますが、私(スクリプト作成の初心者)が理解するには複雑すぎました。誰かが便利だと思うかもしれないので、ここに投稿したいと思った。
#!/bin/bash
# Script to update Java defaults. Run as root.
# Adjust according to Java version that you are installing
JDK_DIR_NAME="/opt/Java/jdk1.8.0_102"
# All Java tools according to https://docs.Oracle.com/javase/8/docs/technotes/tools/unix/intro.html
TOOLS="appletviewer extcheck jar Java javac javadoc javah javap jdb jdeps keytool jarsigner policytool kinit klist ktab native2ascii rmic rmiregistry rmid serialver tnameserv idlj orbd servertool javapackager pack200 unpack200 javaws jcmd jconsole jmc jvisualvm schemagen wsgen wsimport xjc jps jstat jstatd jinfo jhat jmap jsadebugd jstack jrunscript"
for TOOL in $TOOLS; do
CMD1="update-alternatives --install /usr/bin/$TOOL $TOOL $JDK_DIR_NAME/bin/$TOOL 1"
# echo $CMD1
$CMD1
CMD2="update-alternatives --config $TOOL"
# echo $CMD2
$CMD2
done
他の答えがそうであるように、それは複雑ではない。手動でインストールしたJavaを代替リストに追加し、次に切り替える必要があります(jdk1.7.0_79をご使用のバージョンに置き換えてください)
Sudo /usr/sbin/alternatives --install /usr/Java/jdk1.7.0_79/bin/Java 20000
Sudo /usr/sbin/alternatives --config Java
update-Java-alternativesは実際にはかなりいいです。したがって、手動インストールで動作させるには、jdk1.8.0_45を/ usr/lib/jvmにコピーします
cp .Java-1.7.0-openjdk-AMD64.jinfo .Java-1.8.0-u45-AMD64.jinfo
ln -s jdk1.8.0_45 Java-1.8.0-u45-AMD64
次に、検索/置換にvimを使用しました。
vim .Java-1.8.0-u45-AMD64.jinfo
:%s/Java-7-openjdk-AMD64/Java-1.8.0-u45-AMD64
:wq
また、優先度を1減らします
:sigh:update-Java-alternativesはインストールを行いません。しかし、少なくとも作業するファイルがあります
VirtualBox:/usr/lib/jvm$ cat .Java-1.8.0-u45-AMD64.jinfo | Perl -e 'while (<>) { @line = split(/\s+/); $filename = $line[1]; $abspath = $line[2]; $abspath =~ /(.*jdk[^\/]+)/; $manpath = $1 . "/man/man1/"; $manfile = "$manpath$filename.1"; if (-f $manfile) { system("Sudo gzip $manfile"); } system("Sudo update-alternatives --install /usr/bin/$filename $filename $abspath 1070 --slave /usr/share/man/man1/$filename.1.gz $filename.1.gz $manfile.gz"); }'
次に、新しいインストールを選択しました:
VirtualBox:/usr/lib/jvm$ Sudo update-Java-alternatives -l
Java-1.7.0-openjdk-AMD64 1071 /usr/lib/jvm/Java-1.7.0-openjdk-AMD64
Java-1.8.0-u45-AMD64 1070 /usr/lib/jvm/Java-1.8.0-u45-AMD64
VirtualBox:/usr/lib/jvm$ Sudo update-Java-alternatives -s Java-1.8.0-u45-AMD64
#簡単なスクリプトを書きました
(
lookforJdks=~
echo $lookforJdks
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo $"$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo $"$jdks" | cut -d' ' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner javac javadoc javah javap jconsole \
jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
schemagen serialver wsgen wsimport xjc jvisualvm jmc; do Sudo update-alternatives \
--install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)
次のようなものを使用して、最新のJava 8をダウンロードおよびインストールしています。
JDK_ALT_LINK_Java=/usr/bin/Java
URL_TO_DOWNLOAD='http://www.Java.net/download/jdk8u60/archive/b17/binaries/jdk-8u60-ea-bin-b17-linux-x64-26_may_2015.tar.gz'
JDK8_ARCHIVE=$(basename $URL_TO_DOWNLOAD)
wget "${URL_TO_DOWNLOAD}"
tar zxf "${JDK8_ARCHIVE}"
mv jdk1.8.0_60/ /usr/lib/jvm/
update-alternatives --install /usr/bin/Java java /usr/lib/jvm/jdk1.8.0_60/bin/Java 1008000060
完全なjdk代替をセットアップするには、以下のコマンドを使用できます。
update-alternatives --install /usr/bin/Java java /usr/lib/jvm/jdk1.7.0_45/bin/Java 2 --slave /usr/bin/appletviewer appletviewer /usr/lib/jvm/jdk1.7.0_45/bin/appletviewer --slave /usr/bin/Java-rmi.cgi Java-rmi.cgi /usr/lib/jvm/jdk1.7.0_45/bin/Java-rmi.cgi --slave /usr/bin/jmap jmap /usr/lib/jvm/jdk1.7.0_45/bin/jmap --slave /usr/bin/jstatd jstatd /usr/lib/jvm/jdk1.7.0_45/bin/jstatd --slave /usr/bin/policytool policytool /usr/lib/jvm/jdk1.7.0_45/bin/policytool --slave /usr/bin/servertool servertool /usr/lib/jvm/jdk1.7.0_45/bin/servertool --slave /usr/bin/apt apt /usr/lib/jvm/jdk1.7.0_45/bin/apt --slave /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_45/bin/javac --slave /usr/bin/jcmd jcmd /usr/lib/jvm/jdk1.7.0_45/bin/jcmd --slave /usr/bin/jps jps /usr/lib/jvm/jdk1.7.0_45/bin/jps --slave /usr/bin/jvisualvm jvisualvm /usr/lib/jvm/jdk1.7.0_45/bin/jvisualvm --slave /usr/bin/rmic rmic /usr/lib/jvm/jdk1.7.0_45/bin/rmic --slave /usr/bin/tnameserv tnameserv /usr/lib/jvm/jdk1.7.0_45/bin/tnameserv --slave /usr/bin/extcheck extcheck /usr/lib/jvm/jdk1.7.0_45/bin/extcheck --slave /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.7.0_45/bin/javadoc --slave /usr/bin/jconsole jconsole /usr/lib/jvm/jdk1.7.0_45/bin/jconsole --slave /usr/bin/jrunscript jrunscript /usr/lib/jvm/jdk1.7.0_45/bin/jrunscript --slave /usr/bin/keytool keytool /usr/lib/jvm/jdk1.7.0_45/bin/keytool --slave /usr/bin/rmid rmid /usr/lib/jvm/jdk1.7.0_45/bin/rmid --slave /usr/bin/unpack200 unpack200 /usr/lib/jvm/jdk1.7.0_45/bin/unpack200 --slave /usr/bin/idlj idlj /usr/lib/jvm/jdk1.7.0_45/bin/idlj --slave /usr/bin/javafxpackager javafxpackager /usr/lib/jvm/jdk1.7.0_45/bin/javafxpackager --slave /usr/bin/jdb jdb /usr/lib/jvm/jdk1.7.0_45/bin/jdb --slave /usr/bin/jsadebugd jsadebugd /usr/lib/jvm/jdk1.7.0_45/bin/jsadebugd --slave /usr/bin/native2ascii native2ascii /usr/lib/jvm/jdk1.7.0_45/bin/native2ascii --slave /usr/bin/rmiregistry rmiregistry /usr/lib/jvm/jdk1.7.0_45/bin/rmiregistry --slave /usr/bin/wsgen wsgen /usr/lib/jvm/jdk1.7.0_45/bin/wsgen --slave /usr/bin/jar jar /usr/lib/jvm/jdk1.7.0_45/bin/jar --slave /usr/bin/javah javah /usr/lib/jvm/jdk1.7.0_45/bin/javah --slave /usr/bin/jhat jhat /usr/lib/jvm/jdk1.7.0_45/bin/jhat --slave /usr/bin/jstack jstack /usr/lib/jvm/jdk1.7.0_45/bin/jstack --slave /usr/bin/orbd orbd /usr/lib/jvm/jdk1.7.0_45/bin/orbd --slave /usr/bin/schemagen schemagen /usr/lib/jvm/jdk1.7.0_45/bin/schemagen --slave /usr/bin/wsimport wsimport /usr/lib/jvm/jdk1.7.0_45/bin/wsimport --slave /usr/bin/jarsigner jarsigner /usr/lib/jvm/jdk1.7.0_45/bin/jarsigner --slave /usr/bin/javap javap /usr/lib/jvm/jdk1.7.0_45/bin/javap --slave /usr/bin/jinfo jinfo /usr/lib/jvm/jdk1.7.0_45/bin/jinfo --slave /usr/bin/jstat jstat /usr/lib/jvm/jdk1.7.0_45/bin/jstat --slave /usr/bin/pack200 pack200 /usr/lib/jvm/jdk1.7.0_45/bin/pack200 --slave /usr/bin/serialver serialver /usr/lib/jvm/jdk1.7.0_45/bin/serialver --slave /usr/bin/xjc xjc /usr/lib/jvm/jdk1.7.0_45/bin/xjc
Sun jdk1.7のtar.gzファイルを/ usr/lib/jvm /に抽出した後、これを使用しました
Jdk1.7.0を、お持ちのバージョンのディレクトリ名と、番号2を、代替となる任意の番号に置き換えます。
Java 9に関するすべてを削除し、新しいJava 10を手動でインストールしました。
注:複数のJavaバージョンがある場合にのみupdate-alternatives
が必要です。
注:新しいJavaを新たにインストールする前に、Javaに関するすべてをパージできます。
Sudo apt purge Java*
Java 10の新規インストールの場合
/opt/Java
ディレクトリのどこかに抽出して配置します。 JDKをopt/Java
ディレクトリに配置すると、すべてのユーザーが使用できるようになります
(注:JDK、JRE、およびサーバーJREをダウンロードし、JDKを抽出し、フォルダーの名前をjdk10に変更し、JREを抽出し、名前を変更してフォルダーを抽出しました以下のスナップショットに示すように、jre10、および抽出されたサーバーJREおよび名前変更されたフォルダーをjre10serverに抽出しました。
次に、以下のようにsourceコマンドを使用して、/etc/environment
スクリプトファイルをシステムにリロードする必要があります。
source /etc/environment
update-alternativesについてさらに知りたい場合は、次のリンクを参照してください。 Javaをデフォルトにする方法手動でインストールされたJRE/JDKに?
別のわずかに異なるスクリプト を作成して、すべてのJava関連のものを手動でインストールしたJDKにデフォルト設定しました。
#!/bin/bash
# Run update-alternatives for a manual installed JDK
Java_HOME=/opt/Java/jdk1.8.0_152
Java_bins=(appletviewer extcheck idlj jarsigner Java javac javadoc javafxpackager javah javap javapackager Java-rmi.cgi javaws jcmd jconsole jcontrol jdb jdeps jhat jinfo jjs jmap jps jrunscript jsadebugd jstat jstatd jvisualvm keytool native2ascii orbd pack200 policytool rmic rmid schemagen servertool tnameserv wsgen wsimport xjc jar jmc jmc.ini jstack rmiregistry serialver unpack200)
for Java_bin in ${Java_bins[@]}; do
echo "Setting $Java_bin..."
update-alternatives --install /usr/bin/$Java_bin $Java_bin $Java_HOME/bin/$Java_bin 1
update-alternatives --set $Java_bin $Java_HOME/bin/$Java_bin
done
echo "Done."
これにより、新しい選択肢がインストールされ、これらの新しい選択肢がデフォルトとして設定されます。