web-dev-qa-db-ja.com

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)
7
Axl Mattheus

私はこれと戦っていましたが、ここにUbuntu 14.04 Trusty Tahrに関する私の調査結果があります。

インストーラーはapt-configを使用して、使用するプロキシを決定します。特に、Acquire::http::Proxy::download.Oracle.comDIRECTを返し、デフォルトのプロキシを使用して直接ダウンロードするかどうかを判断する場合。

具体的にはインストールが実行されます

# 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 configを使用する場合、インストーラーは直接ダウンロードします:

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/'

ディレクトリの末尾の/に注意してください-これは必須です。

6

私は同じ問題に反対しましたが、どうにか回避策を見つけました。主な問題は、apt-cacher-ngは、Oracleインストーラー(wget)がOracleライセンスを受け入れるために使用するカスタムHTTPヘッダーをnot転送することです。

acng.confファイルに次の変更を加えました。 GomoXが提案する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/)?[a-z]+32.exe(\?download.*)?|/dists/.*/installer-[^/]+/[0-9][^/]+/images/.*)$

追加(これは重要な部分です):

RequestAppendix: Cookie: oraclelicense=a

これにより、acngはリクエストごとにHTTP Cookieを送信しますが、少なくともOracleバイナリを通過させ、インストールを正常に完了させます。これをいくつかのローカルDockerイメージでテストし、Javaをほぼ瞬時にダウンロードしてインストールします。

FWIW:acngのバグレポート(#314773、残念ながら非公開)を作成しました。今後のリリースで修正されることを願っています...

編集1:さらなるテストにより、Debian Jessieで動作することが判明しました 、Ubuntu Utopicでは(まだ)ありません(14:10)...

編集2:Ubuntu Utopicでも動作するようになりました(問題はca-certificatesパッケージがインストールされていないDockerイメージを使用したことです)。

4
jawi

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\.tar\.gz(\?AuthParam=.*)?に置き換えるように変更します

参考までに、私の設定ファイルの行全体は次のとおりです。

PfilePattern =。*(\。deb |\.rpm |\.dsc |\.tar\.gz\.gpg |\.tar\.gz(\?AuthParam =。*)?|\.diff\.gz |\.diff\.bz2 |\.jigdo |\.template | changelog | copyright |\.udeb |\.diff /.* \。gz | vmlinuz | initrd\.gz |(開発)?ReleaseAnnouncement(\\ ?. *)?)$
2
GomoX

DIRECTプリファレンスでaptオプションを使用すると、OracleからJavaパッケージのプロキシを通過することを回避できます。これは完璧なソリューションではありませんが、ユーザーが余分なトラフィックを犠牲にしてパッケージをインストールできるようにする必要があります。

構成スニペット(apt-cacher-ngサーバーではなく、クライアントコンピューター用)は次のとおりです。

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

これを/etc/apt/apt.conf.d/99proxyファイルに入れて、以前のaptプロキシ設定を確実に上書きできます。

2
GomoX