update-alternatives --config java 명령을 사용하는 방법


80

Linux Debian (Squeeze)에 Apache Solr를 설치하고 있습니다. 나는 sun-java jdk 1st를 설치하라는 지시를 받았습니다. 그런 다음 명령 sudo update-alternatives --config java을 사용하여 특정 Java (sun-java)가 기본 런타임인지 확인해야합니다. 그러나이 명령을 실행하면 다음과 같은 결과가 나타납니다.

There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      auto mode
  1            /usr/bin/gij-4.4                           1044      manual mode
  2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manual mode

Press enter to keep the current choice[*], or type selection number:

그렇다면 sun-java를 기본 런타임으로 사용하려면 어떤 숫자를 선택해야합니까? 또한 자동 및 수동 모드는 정확히 무엇을 의미합니까? 위의 3을 선택하고 update-alternative 명령을 실행하면 위와 동일한 출력이 표시됩니다. 여전히 수동 모드를 읽지 만 *가 이제 3 앞에 있다는 점을 제외하고는 아무것도 변경되지 않은 것 같습니다.

내가 한 일이 올바른지 확인하는 방법이 있습니까?

답변:


49

옵션을 선택한 후 "java -version"을 입력하면 큰 변화를 알 수 있습니다. 따라서 update-alternatives --config java옵션 을 실행 하고 선택 3하면 Sun 구현을 사용하게됩니다.
에 또한, 관련하여 automanual mode, 선택을하는 것은의 그것을해야 auto mode이 페이지 진술 :

--config옵션을 사용할 때 대안은 주어진 이름이 마스터 링크 인 링크 그룹에 대한 모든 선택 사항을 나열합니다. 그런 다음 링크 그룹에 사용할 선택 사항을 묻는 메시지가 표시됩니다. 변경하면 링크 그룹은 더 이상에 없습니다 auto mode. --auto자동 상태로 돌아가려면 옵션 을 사용해야합니다 .

그리고 auto mode첫 번째 / 유일한 JRE / JDK를 설치할 때 설정 되었다고 생각 합니다.


31

update-alternatives 이 경우 JDK에 따라 모든 요소를 ​​업데이트해야하므로 문제가됩니다.

이러한 특정 목적을 위해 패키지 java-common에는 update-java-alternatives.

그것을 사용하는 것은 간단합니다. 먼저 컴퓨터에서 사용할 수있는 JDK 설치를 나열합니다.

root@mylaptop:~# update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

그런 다음 하나를 선택하십시오.

root@mylaptop:~# update-java-alternatives -s java-1.7.0-openjdk-amd64

27

/opt/java/jdk1.8.0_144그때 하나가 JDK를 설치했다고 가정합니다 .

  1. javac에 대한 대안 설치

    $ sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.8.0_144/bin/javac 1
    
  2. 대체 구성을 확인 / 업데이트하십시오.

    $ sudo update-alternatives --config javac
    

대안이 하나 뿐인 경우 javac메시지가 표시되고 그렇지 않으면 새 JDK에 대한 옵션을 선택합니다.

모든 것이 올바르게 설정되었는지 확인하려면 다음을 수행하십시오.

$ which javac
/usr/bin/javac

$ ls -l /usr/bin/javac
lrwxrwxrwx 1 root root 23 Sep  4 17:10 /usr/bin/javac -> /etc/alternatives/javac

$ ls -l /etc/alternatives/javac
lrwxrwxrwx 1 root root 32 Sep  4 17:10 /etc/alternatives/javac -> /opt/java/jdk1.8.0_144/bin/javac

그리고 마지막으로

$ javac -version
javac 1.8.0_144

필요에 따라 java, keytool, jar 등에 대해 반복합니다.


어떻게 자동으로 업데이트합니까? 호출 할 때 난 그냥 수동으로 구성 여기에 모든 시간을 보내고 피곤sudo update-alternatives --config javac

15

이것이 내가 jdk를 설치하는 방법입니다.

#!/bin/bash
cd /opt/
sudo mkdir java
sudo tar -zxvf ~/Downloads/jdk-8u192-linux-x64.tar.gz
sudo ln -s  jdk1.8.0_192 current
for file in /opt/java/current/bin/*
do
   if [ -x $file ]
   then
      filename=`basename $file`
      sudo update-alternatives --install /usr/bin/$filename $filename $file 20000
      sudo update-alternatives --set $filename $file
      #echo $file $filename
   fi
done

7

나는 훨씬 더 나은 뭔가를 시도하는 생각 때문에 필요가 연결되는 것을 다른 많은 바이너리가 있습니다 sudo update-alternatives --all및 다른 외에 모두를위한 올바른 대안을 선택 java하고 javac.


6

Ubuntu 18.04 LTS를 사용하고 있습니다. 대부분의 경우 java버전을 변경할 때 동일한 javac버전 을 사용하고 싶습니다 .
내가 사용 update-alternatives사용하여,이 방법 java_home대신 대안 :

설치

/opt/java/<version>예를 들어 에서 모든 Java 버전을 설치합니다.

~$ ll /opt/java/
total 24
drwxr-xr-x 6 root root 4096 jan. 22 21:14 ./
drwxr-xr-x 9 root root 4096 feb.  7 13:40 ../
drwxr-xr-x  8 stephanecodes stephanecodes 4096 jan.   8  2019 jdk-11.0.2/
drwxr-xr-x  7 stephanecodes stephanecodes 4096 dec.  15  2018 jdk1.8.0_201/

대안 구성

~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk-11.0.2/ 100
~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk1.8.0_201 200

선언 JAVA_HOME(이 경우에는 전역 초기화 스크립트를 사용합니다)

~$ sudo sh -c 'echo export JAVA_HOME=\"/opt/java/current\" >> environment.sh'

로그 아웃하거나 Ubuntu를 다시 시작합니다 (다시로드 됨 /etc/profile.d/environment.sh).

용법

자바 버전 변경

사용할 버전을 선택하십시오

~$ sudo update-alternatives --config java_home

There are 2 choices for the alternative java_home (providing /opt/java/current).

  Selection    Path                    Priority   Status
------------------------------------------------------------
  0            /opt/java/jdk-11.0.2     200       auto mode
  1            /opt/java/jdk-11.0.2     200       manual mode
* 2            /opt/java/jdk1.8.0_201   100       manual mode

Press <enter> to keep the current choice[*], or type selection number: 

버전 확인

~$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

~$ javac -version
javac 11.0.2

~/.bash_aliases파일에 다음 행을 추가 하십시오.

alias change-java-version="sudo update-alternatives --config java_home && java -version && javac -version"

이제 change-java-version명령을 사용하여 Java 버전을 변경하십시오.



0

jdk를 정기적으로 전환 (또는 릴리스 된 후 새 것으로 업데이트)하려면 sdkman 을 사용하는 것이 매우 편리 합니다.

sdkman으로 maven과 같은 추가 도구도 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.