Установите oracle-java7-installer через apt-cacher-ng

Я добавил ppa oracle-java7-installer на свой сервер 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)

5 ответов

Я просто боролся с этим, вот мои выводы для 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 пункт как предложено 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/.*)$

и добавил (это важная часть):

RequestAppendix: Cookie: oraclelicense=a

Это заставит acng отправлять HTTP-cookie с каждым запросом, но по крайней мере заставит двоичные файлы оракула пройти и успешно завершить установку. Протестировали это с некоторыми локальными образами Docker, и они загрузили и установили Java практически мгновенно!

FWIW: Я создал отчет об ошибке для acng (#314773, к сожалению, не публичный), так что, надеюсь, это будет исправлено в следующем выпуске...

edit 1: Дальнейшее тестирование показало, что он работает на Debian Jessie , но не (пока) на Ubuntu Utopic (14:10)...

edit 2: Теперь он также работает в Ubuntu Utopic (проблема заключалась в том, что я использовал образ Docker без ca-certificates пакет установлен).

apt-cacher-ng имеет очень ограниченное регулярное выражение URL, которое позволяет загружать только некоторые типы пакетов. Пакет Java от Oracle не соответствует этому. Решением является изменение конфигурации, в которой определено регулярное выражение.

В частности, 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| изменений | авторское право |\.udeb|\.diff/.*\ GZ |. vmlinuz| Initrd \.gz |? (Devel) ReleaseAnnouncement(\\?.*)?)$

Вы можете использовать DIRECT вариант в apt предпочтения, чтобы избежать прохождения через прокси для пакетов Java из Oracle. Это не идеальное решение, но оно должно позволить вашим пользователям устанавливать пакеты за счет дополнительного трафика.

Фрагмент конфигурации (для клиентских компьютеров, а не для apt-cacher-ng сервер) это:

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

Вы можете положить это в /etc/apt/apt.conf.d/99proxy файл, чтобы убедиться, что он отменяет любой предыдущий apt настройка прокси.

Сначала вам нужно удалить openjdk для этого, запустите следующую команду из вашего терминала:

sudo apt-get purge openjdk *

Если вы установили java 7 из любого другого PPA и у вас возникли проблемы с 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

Установите oracle java 7 в ubuntu 13.04/12.10/12.04 Откройте терминал и выполните следующие команды:

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

Вы можете проверить версию Java, выполнив поиск по Java в панели инструментов.

Другие вопросы по тегам