Установите 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
, поэтому мы должны отрегулировать в последствии.
В принципе:
- В
/etc/apt-cacher-ng/acng.conf
, раскомментируйте строку, начинающуюся сPfilePattern
- Изменить его, чтобы заменить
\.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 в панели инструментов.