过去一周,我一直在使用 Ansible 设置一些服务器。一切都进展顺利,直到今天几个小时前,我使用的 java8 playbook 突然停止工作。我已经好几个星期没有碰过它或看过它了。我甚至git checkout
对已知可以工作的版本也做了修改,但仍然不起作用。
这个问题几乎和这个问题一模一样https://stackoverflow.com/questions/46815897/jdk-8-is-not-installed-error-404-not-found每次我尝试运行 时都会出现 404 错误sudo apt-get install oracle-java8-installer
。它还会尝试在其他命令上下载 java8,例如sudo apt autoremove
,我总是看到相同的错误 -
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz?AuthParam=1531861842_cbe60a307e0051ef681fa0cef4e500ce [following]
--2018-07-17 21:08:42-- http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz?AuthParam=1531861842_cbe60a307e0051ef681fa0cef4e500ce
Connecting to download.oracle.com (download.oracle.com)|23.40.18.106|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2018-07-17 21:08:42 ERROR 404: Not Found.
download failed
Oracle JDK 8 is NOT installed.
dpkg: error processing package oracle-java8-installer (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
oracle-java8-installer
E: Sub-process /usr/bin/dpkg returned an error code (1)
我尝试了上面 SO 问题中列出的所有方法以及我在其他地方找到的许多其他解决方案。我开始认为我的 IP 被阻止了,或者 Oracle 遇到了一些问题,我是否遗漏了什么?
答案1
我也遇到了同样的错误。在 WebUpd8 的人员更新他们的包之前,您需要自己编辑它。我使用了您链接的答案,只是使用了新数据:
cd /var/lib/dpkg/info
sed -i 's|JAVA_VERSION=8u171|JAVA_VERSION=8u181|' oracle-java8-installer.*
sed -i 's|J_DIR=jdk1.8.0_171|J_DIR=jdk1.8.0_181|' oracle-java8-installer.*
sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/|' oracle-java8-installer.*
sed -i 's|SHA256SUM_TGZ="b6dd2837efaaec4109b36cfbb94a774db100029f98b0d78be68c27bec0275982"|SHA256SUM_TGZ="1845567095bfbfebd42ed0d09397939796d05456290fb20a83c476ba09f991d3"|' oracle-java8-installer.*
答案2
您使用的是哪个版本的 Ubuntu?有什么理由不使用官方开源 openjdk-8-jdk 软件包而使用来自 oracle 的软件包吗?
sudo apt-get install openjdk-8-jdk
如果您使用的是 Ubuntu 18.04 和 16.04,则应该可以工作。在这种情况下,Ansible 的任务非常简单:
- name: Install openjdk-8-jdk
action: apt pkg=openjdk-8-jdk state=installed
对于 Ubuntu 16.04 之前的版本(我只会使用 14.04,其他版本已停产),你可以使用Matthias PPA 存储库:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
至于 Ansible,对于最后一种情况,你可以将 repo 添加为任务,如下所示:
- hosts: your-server
tasks:
- name: install repo for Java 8 in Ubuntu 14.04 or below
apt_repository: repo='ppa:openjdk-r/ppa'