कमांड अद्यतन-विकल्प का उपयोग कैसे करें --config जावा


80

मैं लिनक्स डेबियन (निचोड़) पर अपाचे सोलर स्थापित कर रहा हूं। मुझे सन-जावा jdk 1 स्थापित करने का निर्देश दिया गया है। फिर मुझे बताया गया है कि मुझे sudo update-alternatives --config 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:

तो मुझे डिफ़ॉल्ट रनटाइम के रूप में कौन सा नंबर सन-जावा का चयन करना चाहिए? इसके अलावा, वास्तव में वें ऑटो और मैनुअल मोड का क्या मतलब है? अगर मैं 3 से ऊपर का चयन करता हूं और अपडेट-वैकल्पिक कमांड चलाता हूं तो मुझे ऊपर जैसा ही आउटपुट मिलता है, फिर से कुछ भी नहीं बदला है सिवाय इसके कि * अब 3 के सामने है, हालांकि यह अभी भी मैनुअल मोड को पढ़ता है।

क्या यह पुष्टि करने का एक तरीका है कि मैंने जो किया है वह सही है?

जवाबों:


49

यदि आप ऐसा करने के बाद "java -version" में विकल्प चुनते हैं तो आपको एक बड़ा बदलाव दिखाई देगा। इसलिए यदि आप update-alternatives --config javaविकल्प चलाते हैं और चयन करते हैं 3, तो आप सूर्य कार्यान्वयन का उपयोग करेंगे ।
इसके अलावा, autoबनाम के संबंध में manual 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:

  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

आवश्यकतानुसार जावा, कीटूल, जार आदि को दोहराएं।


मैं इसे स्वचालित रूप से कैसे अपडेट करूं? मैं सिर्फ फोन करते समय हर बार इसे मैन्युअल रूप से कॉन्फ़िगर करने के लिए थक जाता हूं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>उदाहरण के लिए, प्रत्येक जावा संस्करण स्थापित करें

~$ 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जावा संस्करण को बदलने के लिए कमांड का उपयोग करें



0

यदि आप jdk को नियमित रूप से स्विच करना चाहते हैं (या एक बार जारी होने के बाद किसी नए को अपडेट करते हैं), यह sdkman का उपयोग करने के लिए बहुत ही उपयुक्त है

आप sdkman के साथ मावेन जैसे अतिरिक्त उपकरण भी कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.