在linux上安裝JDK碰到的問題以及linux常用命令的學習

操作系統:ubuntu 12.04

一、在oracle官網上下載最新版本的JDK    :  jdk-6u37-linux-x64.bin

下載之後默認放在了    /home/myname/下載     目錄下  由於目錄有中文,之前遇到過目錄帶中文的種種糾結問題,不想放在這裏,於是在命令行

myname@myname-PC:~$ sudo mv /home/myname/下載/jdk-6u37-linux-x64.bin /opt

對以上命令的解釋:

1)$符後面是輸入linux命令的地方,命令和$符之間有一個空格區域

2)$和:之間表示當前所在目錄,

3)~代表用戶目錄,和cd命令結合使用可以方便的進到用戶目錄, 例如  cd ~     也可以這樣   cd $HOME   $HOME也表示用戶目錄,這個HOME變量的值是在配置文件裏設置的

4)命令前綴sudo   :  superuserdo的縮寫 表示以超級用戶(系統管理員)身份運行後面的命令,如果我們不是用超級用戶(系統管理員)的身份登錄的系統,應用一些命令時會受到限制,提示 權限不足   前面加上sudo就可以解決這個問題

5)命令mv:這裏有兩個參數,第一個參數是/home/myname/下載/jdk-6u37-linux-x64.bin,表示你要移動的文件,用完全路徑表示比較好,第二個參數是/opt,表示你移動文件的目標目錄, 兩個參數之間有空格分隔

6)前面myname表示當前用戶名,後面myname-PC表示計算機名,用@連接

把JDK的安裝文件移動到/opt以後, 進入opt目錄,輸入命令後回車

myname@myname-PC:~$ cd /opt   回車

myname@myname-PC:/opt$

cd命令:進入指定的目錄  例如:  cd /(進入系統根目錄),cd /home(進入系統根目錄下的home目錄),cd $HOME(進入HOME變量表示的目錄,即用戶目錄,

與 cd ~等效),cd ..(從當前目錄向上退一級)

給/opt下面的文件賦權限:

myname@myname-PC:/opt$ chmod 755 *

chmod命令:給文件賦權限,在/opt下ll一下可以看到:

drwxr-xr-x  8 root   root       4096 10月 23 12:08jdk1.6.0_37/
-rwxr-xr-x  1 gchong gchong 72048548 10月 23 12:01 jdk-6u37-linux-x64.bin

對於第一行最高位 d表示這是一個目錄,對於第二行最高位 -表示這是一個文件 ,後面r表示可讀,w表示可寫,x表示可執行,-表示無權限,不清楚爲什麼有三組權限,每一組權限有三位,由低到高分別是2的0次冪,1次冪,2次冪,所以權限rwx:4+2+1=7 r-x:4+0+1=5  r-x:4+0+1=5

再看上面的命令  chmod 755 *   就是給當前目錄下的所有內容(包括文件和目錄)賦rwxr-xr-x權限

其實我們要的就是可執行權限, 只要賦x權限就可以了, 下面是執行這個下載的文件

myname@myname-PC:/opt$ ./jdk-6u37-linux-x64.bin    “.” 表示當前目錄

二、運行後會提示安裝成功的字樣,在window系統裏安完JDK就要修改一下環境變量path的值,一邊我們能正常使用java,javac命令,而在linux系統下會複雜一點,linux環境下和環境變量有關的文件有以下四種,粗略記錄如下

1)   /etc/environment  文件

2)   /etc/profile 文件

3)  ~/.profile 文件

4)  ~/.env 文件  我不確定是不是在~目錄下(用戶目錄)

他們的區別,前三個文件只有在登錄系統以後才被讀取,且讀取這一次, 而.env文件是在用戶沒開一個進程都會被執行一次,它們的讀取順序就是1 2 3 4 這樣

詳細內容查閱  :    http://blog.chinaunix.net/uid-15194453-id-3012479.html 

我在environment下面加入

JAVA_HOME="/opt/jdk1.6.0_37"

PATH=“$PATH:$JAVA_HOME/bin”

CLASSPATH=".:$JAVA_HOME/lib"

總覺得沒什麼問題,但是重啓電腦後, ubuntu就登不上去了, 在網上找也說最好別再environment下修改環境變量, 容易悲劇。。。

配置完環境變量以後, 在命令行輸入  java -ersion  有的機器可以看到JDK的版本信息,代表安裝成功:

java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)

而有的機器則會出現這樣的信息:

程序“java”已包含在下列軟件包中:
* gcj-4.4-jre-headless
* gcj-4.5-jre-headless
* openjdk-6-jre-headless
請嘗試:apt-get install <選定的軟件包>


這是由於之前安裝過JDK,或者安裝過其他帶有java環境的軟件自動安裝了軟件帶有的JDK, 這樣就導致我們的系統裏存在多個JDK,它們的版本可能相同,也可能不同,

對於這種情況,linux是用update-alternatives命令解決的,update-alternatives 命令是管理軟件多版本的工具


三、update-alternatives命令

update-alternatives --install /usr/bin/java java /opt/jdk1.6.0_37/bin/java

解釋: 給alternatives安裝一個符號鏈接/usr/bin/java,他的名字是 java  對應的可執行應用程序路徑:/opt/jdk1.6.0_37/bin/java

在命令行我們輸入命令:

myname@myname-PC:~$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 10月 23 21:58 /usr/bin/java -> /etc/alternatives/java  

可以發現, /usr/bin/java 是指向 /etc/alternatives/java 的

再輸入

myname@myname-PC:~$ ls -l /etc/alternatives/java 

lrwxrwxrwx 1 root root 25 10月 23 21:58 /etc/alternatives/java -> /opt/jdk1.6.0_37/bin/java

可以發現,/etc/alternatives/java 也是個符號鏈接,  是指向  /opt/jdk1.6.0_37/bin/java 的, 這纔是最終的可執行文件


update-alternatives --display java   :顯示java在alternatives裏的配置信息

update-alternatives --config java    : 配置java對應的符號鏈接

There are 2choices for the alternative jdk (providing /usr/bin/jdk).

 

 Selection   Path                      Priority   Status

--------------------------------------------------------------------------

0           /home/haili/jdk1.5.0_22   255     auto mode

1           /home/haili/jdk1.5.0_22   255     manual mode

* 2           /home/haili/jdk1.6.0_30   254     manual mode

這是網上的例子, 大概情況差不多, 選擇你想使用的命令的link值



update-alternatives –remove java /opt/jdk1.6.0_37/bin/java  刪除這個java命令的配置


在命令行輸入的命令, 都是一個鏈接符號:

比如  java

命令行中的java只是一個鏈接符號, 先被鏈接到/usr/bin中, 在這個目錄下找有沒有java,這也是爲什麼我們要要設置環境變量path, path="/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/usr/games"

然後   /usr/bin/java 也是一個符號鏈接, 鏈接到/etc/alternatives/java, 它仍然是個符號鏈接, 最終  

/etc/alternatives/java鏈接到實際的程序   /opt/jdk1.6.0_37/bin/java








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章