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 获得的截图:
解决办法
-
首先进入
/var/lib/dpkg/info
目录cd /var/lib/dpkg/info
-
更改 Java 版本
去官网下载 JDK
sudo sed -i 's|JAVA_VERSION= 在 wget 里下载失败的版本 |JAVA_VERSION= 在 Oracle 官网手动下载成功的版本 |' oracle-java8-installer.*
-
更改下载链接
下图仅为事例命令,请根据自己安装的版本情况填写相应参数:
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.*
有人会问
e758a0de34e24606bca991d704f6dcbf
和0da788060d494f5095bf8624735fa2f1
都是从哪里来的呢?第一串字符是从
wget
的下载 URL 里获得的:但是第二串字符来历就有点讲究了,要去官网打开开发者工具获得。这个操作,有点骚:
-
更改安装包的 sha256sum 值
不用管从
wget
的下载的版本的 sha256sum 值, 直接填.*
(不区分的意思) 就行。但是获取我们手动下载的 .tar.gz 文件的 sha256sum 值还是很简单的:
首先定位到文件下载的地址:
cd 安装包存放的绝对地址
输入计算命令:
sha256sum 你下载的安装包的名称
最后根据获取到的值填写下方相应的参数:
sudo sed -i 's|SHA256SUM_TGZ=".*"|SHA256SUM_TGZ=" 你获得的值 "|' oracle-java8-installer.*
-
更改 JDK 版本
这个比较简单了:
sudo sed -i 's|J_DIR=jdk1.8.0_(wget 安装失败的版本号)|J_DIR=jdk1.8.0_(手动下载成功的版本号))|' oracle-java8-installer.*
-
删除安装失败的文件,将手动下载的安装包放入
/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/
-
重新安装 oracle-java8-installer
sudo apt-get install oracle-java8-installer
完成这 7 步才算搞定了。因为 Oracle 爸爸, 用 PPA 还不如手动安装省事呢。
原链接
如果我的文章可以帮到您,劳烦您点进源码点个 ★ Star 哦!
https://hexang.org/miaocai/or…