Debian安裝JDK的RPM包

環境:Linux內核版本4.4.59+、jdk1.8安裝、Debian9系統

注意:
1、本文介紹的是在Debian中使用jdk的rpm包進行安裝

JDK完全卸載(需要在root模式下進行操作)

切換到root模式下,或者使用sudo 執行命令
1、移除所有 Java相關包 (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ)

sudo apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove
sudo apt-get -y autoremove

進行更新

sudo apt-get update

2、清除配置信息:

sudo dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge

3、清除java配置及緩存:

sudo bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf

4、清除jvm文件夾裏面的文件

 sudo rm -rf /usr/lib/jvm/*

JDK安裝

點擊進入Oracle JDK下載官網
1、下載JDK,Debian/Ubuntu系統直接下載後綴名爲deb文件的更加方便(若沒有deb的後綴名文件下載tar.gz壓縮包也一樣)。如果都沒有也可以下載rpm包,不過需要轉換成deb包之後才能在Debian/Ubuntu中使用。在這裏插入圖片描述
2、 後綴名爲deb的文件下載完成之後可參考第4步,直接使用dpkg命令執行,tar.gz的壓縮包下載完成之後需要進行解壓縮安裝
注意:若不能複製或是創建目錄,則需要切換到root用戶或者使用sudo命令執行;
3、我使用的是之前下載好的rpm包,直接使用rpm -ivh報錯:

coder@codercom-code-server1:~/temp$ sudo rpm -ivh jdk-8u221-linux-x64.rpm 
rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...
warning: jdk-8u221-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
error: Failed dependencies:
	/bin/basename is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/cat is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/cp is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/gawk is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/grep is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/ln is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/ls is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/mkdir is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/mv is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/pwd is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/rm is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/sed is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/sort is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/touch is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/cut is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/dirname is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/expr is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/find is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/tail is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/tr is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/wc is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/sh is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
coder@codercom-code-server1:~/temp$ 

原因是Debian不支持rpm命令了, 其軟件以deb包或者源文件的形式出現。於是需要把rpm轉化成deb。
安裝alien:

sudo apt-get update
sudo apt-get install alien

rpm轉換成deb:

alien -d jdk-8u221-linux-x64.rpm

下面是轉換過程和轉換完成後的文件列表,轉換過程中alien會創建一個文件夾用來存放解壓後的rpm包數據,然後再重新打成deb包,新建的文件夾在deb包完成後會自動刪除:rpm轉deb過程中會創建一個文件夾
包轉換完成
4、deb轉換完成後執行安裝命令(或直接下載deb包,然後使用以下命令進行安裝,文件名請自行替換):

coder@codercom-code-server1:~/temp$ sudo dpkg -i jdk1.8_1.8.0221-1_amd64.deb 
Selecting previously unselected package jdk1.8.
(Reading database ... 32734 files and directories currently installed.)
Preparing to unpack jdk1.8_1.8.0221-1_amd64.deb ...
Unpacking jdk1.8 (1.8.0221-1) ...
Setting up jdk1.8 (1.8.0221-1) ...
coder@codercom-code-server1:~/temp$ 

5、安裝完成後配置環境變量:
使用以下命令查到java安裝路徑

coder@codercom-code-server1:/usr/share$ whereis java
java: /usr/bin/java /usr/share/java /usr/java/jdk1.8.0_221-amd64/bin/java
coder@codercom-code-server1:/usr/java/jdk1.8.0_221-amd64$ sudo vi /etc/profile

在vi中執行以下命令:

:$ ##跳轉到文本的最後一行
o ##直接插入行

然後將下面的jdk路徑替換後,直接使用CTRL+ins鍵粘貼:

#set oracle jdk environment
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64  ##注意jdk目錄要換成自己實際的jdk目錄
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

然後:

:wq  ##保存退出

加載新添加的配置:

coder@codercom-code-server1:/usr/java/jdk1.8.0_221-amd64$ . /etc/profile

6、但是使用java -version查詢報錯:

coder@codercom-code-server1:/usr/java/jdk1.8.0_221-amd64$ java -version
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

查資料得知該報錯是因爲tools和rt解壓失敗導致。
切換到java安裝路徑,並使用jdk自帶的unpack200進行解壓:

cd /usr/java/jdk1.8.0_221-amd64/lib
sudo ../bin/unpack200 tools.pack tools.jar
cd /usr/java/jdk1.8.0_221-amd64/jre/lib
sudo ../../bin/unpack200 rt.pack rt.jar

然後再使用java -version查詢就正常了:
在這裏插入圖片描述

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