通过apt-cacher-ng安装oracle-java7-installer

我已将oracle-java7-installer ppa添加到我的apt-cacher-ng服务器和我的客户端。 我无法安装它。

关于我如何做到这一点的任何想法? 我认为它在尝试从Oracle下载安装时失败了。 当我尝试安装它时会发生这种情况:

admin@vgjs001:~$ sudo apt-get install oracle-java7-installer Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: gsfonts gsfonts-x11 java-common libfontenc1 libxfont1 x11-common xfonts-encodings xfonts-utils Suggested packages: default-jre equivs binfmt-support visualvm ttf-baekmuk ttf-unfonts ttf-unfonts-core ttf-kochi-gothic ttf-sazanami-gothic ttf-kochi-mincho ttf-sazanami-mincho ttf-arphic-uming firefox firefox-2 iceweasel mozilla-firefox iceape-browser mozilla-browser epiphany-gecko epiphany-webkit epiphany-browser galeon midbrowser moblin-web-browser xulrunner xulrunner-1.9 konqueror chromium-browser midori google-chrome The following NEW packages will be installed: gsfonts gsfonts-x11 java-common libfontenc1 libxfont1 oracle-java7-installer x11-common xfonts-encodings xfonts-utils 0 upgraded, 9 newly installed, 0 to remove and 10 not upgraded. Need to get 4 269 kB/4 347 kB of archives. After this operation, 7 548 kB of additional disk space will be used. Do you want to continue [Y/n]? Get:1 "hyperlink-1" "repo-1" gsfonts all 1:8.11+urwcyr1.0.7~pre44-4.2ubuntu1 [3 374 kB] Get:2 "hyperlink-2" "repo-2" libfontenc1 amd64 1:1.1.0-1 [15,4 kB] Get:3 "hyperlink-3" "repo-3" libxfont1 amd64 1:1.4.4-1 [133 kB] Get:4 "hyperlink-4" "repo-4" x11-common all 1:7.6+12ubuntu1 [57,7 kB] Get:5 "hyperlink-5" "repo-5" xfonts-encodings all 1:1.0.4-1ubuntu1 [583 kB] Get:6 "hyperlink-6" "repo-6" xfonts-utils amd64 1:7.6+1 [96,4 kB] Get:7 "hyperlink-7" "repo-7" gsfonts-x11 all 0.22 [9 108 B] Fetched 3 232 kB in 33s (95,1 kB/s) Preconfiguring packages ... Selecting previously unselected package java-common. download failed Oracle JDK 7 is NOT installed. dpkg: error processing oracle-java7-installer (--configure): subprocess installed post-installation script returned error exit status 1 Setting up gsfonts (1:8.11+urwcyr1.0.7~pre44-4.2ubuntu1) ... Setting up libfontenc1 (1:1.1.0-1) ... Setting up libxfont1 (1:1.4.4-1) ... Setting up x11-common (1:7.6+12ubuntu1) ... Setting up xfonts-encodings (1:1.0.4-1ubuntu1) ... Setting up xfonts-utils (1:7.6+1) ... Setting up gsfonts-x11 (0.22) ... Processing triggers for libc-bin ... ldconfig deferred processing now taking place Errors were encountered while processing: oracle-java7-installer E: Sub-process /usr/bin/dpkg returned an error code (1) 

我只是在与此斗争,这是我对Ubuntu 14.04 Trusty Tahr的调查结果。

安装程序使用apt-config来确定要使用的代理。 具体来说,如果Acquire::http::Proxy::download.oracle.com返回DIRECT以确定是否使用默认代理直接下载。

特别是安装运行

 # use apt proxy APT_PROXIES=$(apt-config shell \ http_proxy Acquire::http::Proxy \ https_proxy Acquire::https::Proxy \ ftp_proxy Acquire::ftp::Proxy \ dl_direct Acquire::http::Proxy::download.oracle.com \ ) 

后来

 if [ "$dl_direct" = "DIRECT" ]; then unset http_proxy unset https_proxy unset ftp_proxy fi 

如果您使用以下apt配置,则直接下载安装程序:

 Acquire::http::Proxy "http://my.proxy.com:3142"; Acquire::http::Proxy { download.oracle.com DIRECT; }; 

虽然这有点令人讨厌,因为下载需要永远,并且有点违背了代理的目的。

我发现安装程序检查debconf变量以检查是否使用本地文件。 检查的属性是oracle-java8-installer/local ,它是一个string

特别是安装程序运行:

 db_get oracle-java8-installer/local if [ -d "$RET" -a -f "$RET"/$FILENAME ]; then echo "Installing from local file $RET/$FILENAME" cp -f -p "$RET"/$FILENAME ${FILENAME}_TEMP mv -f ${FILENAME}_TEMP $FILENAME else # no local file 

因此,如果您已下载JDK并在目录/jdk/dir则需要在运行安装程序之前运行以下命令:

 sudo debconf-set-selections <<< 'debconf oracle-java8-installer/local string /jdk/dir/' 

注意目录上的尾随/ - 这是必需的。

我遇到了同样的问题,但设法找到了解决方法。 主要问题是apt-cacher-ng不转发任何自定义HTTP头,如Oracle安装程序(wget)用来接受Oracle许可证。

我对我的acng.conf文件进行了以下更改。 我按照PfilePattern建议启用并扩展了PfilePattern子句:

 PfilePattern = .*(\.d?deb|\.rpm|\.drpm|\.dsc|\.tar(\.gz|\.bz2|\.lzma|\.xz)(\.gpg|\?AuthParam=.*)?|\.diff(\.gz|\.bz2|\.lzma|\.xz)|\.jigdo|\.template|changelog|copyright|\.udeb|\.debdelta|\.diff/.*\.gz|(Devel)?ReleaseAnnouncement(\?.*)?|[a-f0-9]+-(susedata|updateinfo|primary|deltainfo).xml.gz|fonts/(final/)?[az]+32.exe(\?download.*)?|/dists/.*/installer-[^/]+/[0-9][^/]+/images/.*)$ 

并添加(这是重要的部分):

 RequestAppendix: Cookie: oraclelicense=a 

这将导致acng向每个请求发送一个HTTP cookie,但至少会使oracle二进制文件通过并使安装成功完成。 使用一些本地Docker镜像测试它们,他们几乎立即下载并安装Java!

FWIW:我已经为acng创建了一个错误报告(#314773,遗憾的是不公开),所以希望它将在即将发布的版本中修复…

编辑1 :进一步的测试结果certificate它适用于Debian Jessie ,但尚未在Ubuntu Utopic上运行(14:10) ……

编辑2 :它现在也适用于Ubuntu Utopic(问题是我使用了没有安装ca-certificates软件包的Docker镜像)。

apt-cacher-ng具有非常严格的URL正则表达式,只允许下载某些类型的包。 Oracle的Java包与它不匹配。 解决方案是修改定义正则表达式的配置。

特别是包的URL类似于yada-yada.tar.gz?AuthParam=abcdacbd_123123123123 ,所以我们必须进行调整。

基本上:

  1. /etc/apt-cacher-ng/acng.conf ,取消注释以PfilePattern开头的行
  2. 修改它以用\.tar\.gz(\?AuthParam=.*)?替换\.tar\.gz \.tar\.gz(\?AuthParam=.*)?

作为参考,我的配置文件中的整行是:

  PfilePattern =。*(\。deb | \ .rpm | \ .dsc | \ .tar \ .gz \ .gpg | \ .tar \ .gz(\?AuthParam =。*)?| \。diff \ .gz | \为.diff \操作.bz2 | \ .jigdo文件| \ .template |更新日志|版权| \ .udeb | \为.diff /.* \ GZ |。vmlinuz的| initrd文件\。广州|?(杰韦利)ReleaseAnnouncement(\\? *)?)$ 

您可以在apt首选项中使用DIRECT选项,以避免从Oracle传递Java包的代理。 这不是一个完美的解决方案,但应该允许您的用户以额外流量为代价安装软件包。

配置代码段(用于客户端计算机,而不是apt-cacher-ng服务器)是:

 Acquire::http::Proxy { *.oracle.com DIRECT; }; 

您可以将其放入/etc/apt/apt.conf.d/99proxy文件中,以确保它覆盖任何以前的apt代理配置。

首先,您需要从终端中删除openjdk以执行以下命令:

sudo apt-get purge openjdk *

如果您从任何其他PPA安装了Java 7并且您遇到了java问题,那么在安装此处提到的PPA之前,您必须执行以下步骤:

 sudo rm /var/lib/dpkg/info/oracle-java7-installer* sudo apt-get purge oracle-java7-installer* sudo rm /etc/apt/sources.list.d/*java* sudo apt-get update 

在ubuntu 13.04 / 12.10 / 12.04中安装oracle java 7打开终端并运行以下命令:

 sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer 

您可以通过在仪表板中搜索java来检查Java版本。

Interesting Posts