Ubuntu JDK PPA 安裝失敗的解決辦法

最後一次更新於 2019/08/05html

報錯

我大概是半年沒用 Ubuntu 了, 今天剛想升級 Java JDK 就獲得了下方的報錯:java

正在鏈接 download.oracle.com (download.oracle.com)|23.196.196.76|:443... 已鏈接。
已發出的 HTTP 請求, 正在等待迴應... 404 Not Found
2019-08-05 18:03:51 錯誤 404: Not Found.

download failed
Oracle JDK 8 is NOT installed.
dpkg: 處理軟件包 oracle-java8-installer (--configure)時出錯:
 子進程 已安裝 post-installation 腳本 返回錯誤狀態 1

錯誤排查

我尋思半天,通過反覆嘗試,最終確認是 Oracle 爸爸要坑我。不知道爲啥 Google 搜索裏沒搜到這個錯誤出現的緣由,因此我今天跟你們解釋一下,幫助你們避一下坑。linux

首先得從 wget 提及。簡單來講它是個 HTTP GET 請求,在之前個大網站不設安全驗證的時期至關高效好用。Oracle 爸爸告訴你: 不,你之後想都別想。

那麼"想都別想"的這一天從何時開始呢?確定跟這一天有關係:
License Updatejson

Oracle 爲了確保 JDK 不被濫用,強制要求下載前必須登陸 Oracle 帳戶。給不瞭解 HTTP 請求的朋友們稍微科普一下, GET 請求是直接訪問對應 URL 的,處於無帳戶狀態。而 POST 請求在訪問對應 URL 的同時,會附帶 json 數據,在這裏指的就是 Oracle 帳戶的用戶名和密碼。瀏覽器

所以 Oracle 根本就不讓用戶經過 wget 下載資源,纔會報出 404。經過從瀏覽器點擊本來要訪問的下載地址肯定了 Oracle 不讓未登入我的帳號的用戶獲取資源,如下是經過匿名形式訪問 Oracle 得到的截圖:
An unauthorized request
Sorry!安全

解決辦法

  1. 首先進入 /var/lib/dpkg/info 目錄oracle

    cd /var/lib/dpkg/info
  2. 更改 Java 版本工具

    官網下載 JDKpost

    sudo sed -i 's|JAVA_VERSION=在wget裏下載失敗的版本|JAVA_VERSION=在 Oracle 官網手動下載成功的版本|' oracle-java8-installer.*
  3. 更改下載連接網站

    下圖僅爲事例命令,請根據本身安裝的版本狀況填寫相應參數:

    sudo sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/|' oracle-java8-installer.*

    有人會問 e758a0de34e24606bca991d704f6dcbf0da788060d494f5095bf8624735fa2f1 都是從哪裏來的呢?

    第一串字符是從 wget 的下載 URL 裏得到的:
    terminal

    可是第二串字符來歷就有點講究了,要去官網打開開發者工具得到。這個操做,有點騷:
    developer tool

  4. 更改安裝包的 sha256sum 值

    不用管從 wget 的下載的版本的 sha256sum 值, 直接填 .* (不區分的意思)就行。

    可是獲取咱們手動下載的 .tar.gz 文件的 sha256sum 值仍是很簡單的:

    首先定位到文件下載的地址:

    cd 安裝包存放的絕對地址

    輸入計算命令:

    sha256sum 你下載的安裝包的名稱

    最後根據獲取到的值填寫下方相應的參數:

    sudo sed -i 's|SHA256SUM_TGZ=".*"|SHA256SUM_TGZ="你得到的值"|' oracle-java8-installer.*
  5. 更改 JDK 版本

    這個比較簡單了:

    sudo sed -i 's|J_DIR=jdk1.8.0_(wget安裝失敗的版本號)|J_DIR=jdk1.8.0_(手動下載成功的版本號))|' oracle-java8-installer.*
  6. 刪除安裝失敗的文件,將手動下載的安裝包放入 /var/cache/oracle-jdk8-installer 文件夾下

    sudo rm jdk-8u(安裝失敗的版本號)-linux-x64.tar.gz
    sudo mv jdk-8u(手動下載的版本號)-linux-x64.tar.gz /var/cache/oracle-jdk8-installer/
  7. 從新安裝 oracle-java8-installer

    sudo apt-get install oracle-java8-installer

完成這 7 步纔算搞定了。由於 Oracle 爸爸, 用 PPA 還不如手動安裝省事呢。

原連接

若是個人文章能夠幫到您,勞煩您點進源碼點個 ★ Star 哦!
https://hexang.org/miaocai/or...

相關文章
相關標籤/搜索