Installieren Sie oracle-java7-installer über apt-cacher-ng


7

Ich habe den oracle-java7-installer ppa meinem apt-cacher-ng-Server und meinen Clients hinzugefügt. Ich kann es nicht installieren.

Irgendwelche Ideen, wie ich das machen kann? Ich denke, es schlägt fehl, wenn versucht wird, die Installation von Oracle herunterzuladen. Folgendes passiert, wenn ich versuche, es zu installieren:

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)

Ich habe das gleiche Problem ...
Tony

Antworten:


6

Ich habe gerade damit gekämpft, hier sind meine Ergebnisse für Ubuntu 14.04 Trusty Tahr.

Das Installationsprogramm apt-configbestimmt, welcher Proxy verwendet werden soll. Insbesondere, wenn zurückgegeben wird, Acquire::http::Proxy::download.oracle.comum DIRECTzu bestimmen, ob der Standard-Proxy von zum direkten Herunterladen verwendet werden soll.

Insbesondere wird die Installation ausgeführt

# 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 \
)

Und später

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

Wenn Sie die folgende apt-Konfiguration verwenden, muss das Installationsprogramm direkt heruntergeladen werden:

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

Während dies funktioniert, ist es etwas ärgerlich, da der Download ewig dauert und dies den Zweck des Proxys etwas zunichte macht.

Ich habe festgestellt, dass das Installationsprogramm eine debconfVariable überprüft, um zu überprüfen, ob eine lokale Datei verwendet werden soll. Die geprüfte Eigenschaft ist oracle-java8-installer/localund es ist eine string.

Insbesondere wird das Installationsprogramm ausgeführt:

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

Wenn Sie das JDK heruntergeladen haben und sich in einem Verzeichnis befinden /jdk/dir, müssen Sie den folgenden Befehl ausführen, bevor Sie das Installationsprogramm ausführen:

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

Beachten Sie das Trailing /im Verzeichnis - dies ist erforderlich.


Danke dafür. Ich war ungefähr auf halbem Weg, um herauszufinden, wie man eine lokale Datei verwendet, indem ich die Quelle nach der Installation las, aber Sie haben mir erspart, wie man die Konfiguration tatsächlich einstellt - debconf ist anscheinend ungewöhnlich schlecht dokumentiert. Ich hatte keine "debconf-set-selections" gefunden, die zumindest eine Manpage haben. Ich habe versucht herauszufinden, wie man "debconf-set" verwendet, dem es völlig fehlt.
Jules

Dies funktionierte hervorragend, um Oracle Java8 zusammen mit einem System zu installieren, das für die Verwendung eines Apt-Cacher-ng-Proxys konfiguriert ist.
Jay Taylor

Ich habe einen Squid-Proxy. Wie kann ich den Link ändern, um in diesem Fall nur den Squid-Proxy zu verwenden?
isaaclw

4

Ich bin auf dasselbe Problem gestoßen, habe aber eine Problemumgehung gefunden. Das Hauptproblem ist , dass apt-cacher-ng funktioniert nicht vorwärts beliebige benutzerdefinierte HTTP - Header, wie von dem Oracle - Installationsprogramm (wget) , um die Oracle - Lizenz zu akzeptieren.

Ich habe die folgenden Änderungen an meiner acng.confDatei vorgenommen. Ich habe die PfilePatternvon GomoX vorgeschlagene Klausel aktiviert und erweitert :

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/.*)$

und hinzugefügt (dies ist der wichtige Teil):

RequestAppendix: Cookie: oraclelicense=a

Dies führt dazu, dass acng bei jeder Anforderung ein HTTP-Cookie sendet, aber zumindest die Oracle-Binärdateien durchlaufen und die Installation erfolgreich abgeschlossen wird. Getestet mit einigen lokalen Docker-Images und sie laden Java fast sofort herunter und installieren es!

FWIW: Ich habe einen Fehlerbericht für acng erstellt (# 314773, leider nicht öffentlich), also wird er hoffentlich in einer kommenden Version behoben ...

edit 1 : Weitere Tests haben ergeben, dass es unter Debian Jessie funktioniert , aber (noch) nicht unter Ubuntu Utopic (14:10) ...

edit 2 : Es funktioniert jetzt auch in Ubuntu Utopic (Problem war, dass ich ein Docker-Image ohne das ca-certificatesinstallierte Paket verwendet habe).


arbeitet ein Vergnügen. ta
Sirex

2

apt-cacher-ng hat eine sehr restriktive URL-Regex, die nur das Herunterladen einiger Pakettypen ermöglicht. Das Java-Paket von Oracle stimmt nicht damit überein. Die Lösung besteht darin, die Konfiguration zu ändern, in der der reguläre Ausdruck definiert ist.

Insbesondere die URL des Pakets ist so etwas wie yada-yada.tar.gz?AuthParam=abcdacbd_123123123123, also müssen wir in der Folge anpassen.

Grundsätzlich:

  1. In /etc/apt-cacher-ng/acng.confKommentar- die Zeile , die mitPfilePattern
  2. Ändern Sie es ersetzen \.tar\.gzmit\.tar\.gz(\?AuthParam=.*)?

Als Referenz lautet die gesamte Zeile in meiner Konfigurationsdatei:

PfilePattern =. * (\. Deb | \ .rpm | \ .dsc | \ .tar \ .gz \ .gpg | \ .tar \ .gz (\? AuthParam =. *)? | \ .Diff \ .gz | \ .diff \ .bz2 | \ .jigdo | \ .template | changelog | copyright | \ .udeb | \ .diff /.* \ .gz | vmlinuz | initrd \ .gz | (Devel)? ReleaseAnnouncement (\\?. *)?) $

Dies scheint nicht mehr mit Oracle Java 8 zu funktionieren.
Detly

... was meiner Meinung nach darauf zurückzuführen ist, dass der Downloader Cookies anstelle einer Abfragezeichenfolge zum Herunterladen des Pakets verwenden muss.
Detly

Ich sehe keine Option, um damit umzugehen. Am einfachsten ist es wahrscheinlich, einen Spiegel der Pakete einzurichten, für die diese Anforderung nicht besteht (wahrscheinlich gegen die EULA), oder sie von einem Computer herunterzuladen, der apt-cacher-ng nicht verwendet, und die Pakete manuell zu importieren.
GomoX

Ich habe unten eine andere Antwort mit einem anderen Ansatz hinzugefügt (ich habe diese beibehalten, da sie bei ähnlichen Problemen nützlich sein sollte).
GomoX

2

Sie können die DIRECTOption in den aptEinstellungen verwenden, um zu vermeiden, dass der Proxy für die Java-Pakete von Oracle übergeben wird. Dies ist keine perfekte Lösung, sollte es Ihren Benutzern jedoch ermöglichen, die Pakete auf Kosten des zusätzlichen Datenverkehrs zu installieren.

Das Konfigurations-Snippet (für die Client-Computer, nicht für den apt-cacher-ngServer) lautet:

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

Sie können dies in eine /etc/apt/apt.conf.d/99proxyDatei einfügen, um sicherzustellen, dass alle vorherigen aptProxy-Konfigurationen überschrieben werden .


Nein: / Ich habe es auch geändert *.java.net, da dort das Skript zu suchen scheint, aber kein Glück. Die Anforderung wird weiterhin über den Proxy gesendet.
Detly

Ich vermute, dass das Skript HTTP-Proxy-Einstellungen nicht passend erkennt, aber ich habe es noch nicht überprüft.
Detly

-2

Zuerst müssen Sie openjdk entfernen, um den folgenden Befehl von Ihrem Terminal auszuführen:

sudo apt-get purge openjdk *

Wenn Sie Java 7 von einem anderen PPA installiert haben und Probleme mit Java haben, müssen Sie die folgenden Schritte ausführen, bevor Sie das hier erwähnte PPA installieren:

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

Installieren Sie Oracle Java 7 in Ubuntu 13.04 / 12.10 / 12.04 Öffnen Sie das Terminal und führen Sie die folgenden Befehle aus:

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

Sie können die Java-Version überprüfen, indem Sie Java im Dashboard suchen.


Die Frage bezieht sich auf die Installation von diesem PPA durch apt-cacher-ng, was zusätzliche Probleme aufwirft, da es als Proxy fungiert. Dies beantwortet die Frage nicht.
Detly
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.