J'ai ajouté le ppa Oracle-Java7-installer à mon serveur apt-cacher-ng et à mes clients. Je n'arrive pas à le faire installer.
Des idées sur comment je peux faire cela? Je pense que cela échoue lorsqu'il essaie de télécharger l'installation à partir d'Oracle. Voici ce qui se passe lorsque je tente de l'installer:
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)
Je viens de me battre avec ceci, voici mes conclusions pour Ubuntu 14.04 Trusty Tahr.
Le programme d'installation utilise apt-config
pour déterminer le proxy à utiliser. Spécifiquement si Acquire::http::Proxy::download.Oracle.com
renvoie DIRECT
pour déterminer s’il faut utiliser le proxy par défaut ou télécharger directement.
Plus précisément, l'installation s'exécute
# 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 \
)
Et plus tard
if [ "$dl_direct" = "DIRECT" ]; then
unset http_proxy
unset https_proxy
unset ftp_proxy
fi
Si vous utilisez la configuration suivante d’apt, l’installateur avec téléchargement direct:
Acquire::http::Proxy "http://my.proxy.com:3142";
Acquire::http::Proxy {
download.Oracle.com DIRECT;
};
Bien que cela fonctionne, c'est un peu gênant car le téléchargement prend une éternité et cela va quelque peu à l'encontre de l'objectif du proxy.
J'ai constaté que le programme d'installation vérifie une variable debconf
pour vérifier si un fichier local doit être utilisé. La propriété cochée est Oracle-Java8-installer/local
et c'est un string
.
Plus précisément, le programme d'installation exécute:
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
Donc, si le JDK est téléchargé et dans un répertoire /jdk/dir
, vous devez exécuter la commande suivante avant d'exécuter le programme d'installation:
Sudo debconf-set-selections <<< 'debconf Oracle-Java8-installer/local string /jdk/dir/'
Notez la fin de /
sur le répertoire - cela est nécessaire.
J'ai couru contre le même problème, mais j'ai réussi à trouver une solution de contournement. Le problème principal est qu’apt-cacher-ng ne ne transfère pas les en-têtes HTTP personnalisés, tels qu’ils sont utilisés par le programme d’installation d’Oracle (wget) pour accepter la licence Oracle. .
J'ai apporté les modifications suivantes à mon fichier acng.conf
. J'ai activé et étendu la clause PfilePattern
comme suggéré par GomoX:
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/.*)$
et ajouté (c'est la partie importante):
RequestAppendix: Cookie: oraclelicense=a
Cela provoquera l’acng d’envoyer un cookie HTTP à chaque requête, mais obligera au moins les binaires Oracle à passer et à ce que l’installation se termine correctement. Cela a été testé avec des images locales de Docker et ils ont téléchargé et installé Java presque instantanément!
FWIW: J'ai créé un rapport de bogue pour acng (# 314773, malheureusement pas public), donc j'espère qu'il sera corrigé dans une prochaine version ...
edit 1: D'autres tests ont montré que cela fonctionnait sous Debian Jessie , mais pas (encore) sur Ubuntu Utopic (14:10)...
edit 2: Cela fonctionne maintenant aussi dans Ubuntu Utopic (le problème était que j'ai utilisé une image Docker sans le paquet ca-certificates
installé).
apt-cacher-ng a une adresse regex très restrictive qui ne permet que le téléchargement de certains types de paquets. Le package Java d'Oracle ne correspond pas. La solution est en train de modifier la configuration où la regex est définie.
En particulier, l'URL du paquet est quelque chose comme yada-yada.tar.gz?AuthParam=abcdacbd_123123123123
, nous devons donc nous adapter en conséquence.
Fondamentalement:
/etc/apt-cacher-ng/acng.conf
, décommentez la ligne commençant par PfilePattern
\.tar\.gz
par \.tar\.gz(\?AuthParam=.*)?
Pour référence, la ligne entière dans mon fichier de configuration est:
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 (\\ ?. *)?) $
Vous pouvez utiliser l'option DIRECT
dans les préférences apt
pour éviter de passer par le proxy pour les packages Java d'Oracle. Ce n'est pas une solution parfaite mais devrait permettre à vos utilisateurs d'installer les packages aux dépens du trafic supplémentaire.
L'extrait de configuration (pour les ordinateurs clients, pas le serveur apt-cacher-ng
) est le suivant:
Acquire::http::Proxy {
*.Oracle.com DIRECT;
};
Vous pouvez l'insérer dans un fichier /etc/apt/apt.conf.d/99proxy
pour vous assurer qu'il remplace toute configuration de proxy précédente apt
.