乐趣区

Ubuntu-JDK-PPA-安装失败的解决办法

Ubuntu JDK PPA 安装失败的解决办法

最后一次更新于 2019/08/05

报错

我大概是半年没用 Ubuntu 了, 今天刚想升级 Java JDK 就得到了下方的报错:

 正在连接 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 搜索里没搜到这个错误出现的原因,所以我今天跟大家解释一下,帮助大家避一下坑。

首先得从 wget 说起。简单来说它是个 HTTP GET 请求,在以前个大网站不设安全验证的时期相当高效好用。Oracle 爸爸告诉你: 不,你以后想都别想。

那么 ” 想都别想 ” 的这一天从什么时候开始呢?肯定跟这一天有关系:

Oracle 为了确保 JDK 不被滥用,强制要求下载前必须登录 Oracle 账户。给不了解 HTTP 请求的朋友们稍微科普一下, GET 请求是直接访问对应 URL 的,处于无账户状态。而 POST 请求在访问对应 URL 的同时,会附带 json 数据,在这里指的就是 Oracle 账户的用户名和密码。

因此 Oracle 根本就不让用户通过 wget 下载资源,才会报出 404。通过从浏览器点击原本要访问的下载地址确定了 Oracle 不让未登入个人账号的用户获取资源,以下是通过匿名形式访问 Oracle 获得的截图:

解决办法

  1. 首先进入 /var/lib/dpkg/info 目录

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

    去官网下载 JDK

    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 里获得的:

    但是第二串字符来历就有点讲究了,要去官网打开开发者工具获得。这个操作,有点骚:

  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…

退出移动版