Você pode executar a auto-extração *.bin
em um diretório temporário e mover os arquivos resultantes para qualquer destino desejado.
Eu realmente não gosto da maneira como o instalador cria links simbólicos aleatórios quebrando o sistema de alternativas.
Pessoalmente, não vejo qualquer valor real em ter o JDK em locais não padrão, no entanto.
Para lidar com as atualizações do Oracle JDK, minha solução é criar um RPM usando fpm . Ele é instalado no local padrão e possui um script de pós-instalação adicionado para executar um update-alternatives
hook, para que a versão mais recente seja disponibilizada imediatamente. Aplicativos usando a versão java antiga ainda precisam ser reiniciados, é claro.
Você pode adaptar minha solução para atender às suas necessidades alterando o parâmetro --prefix
.
fpm -s dir -t rpm \
--prefix /usr/lib/jvm \
--force \
--name java-1.7.0-oraclejdk \
--version 1.7.0.25 \
--iteration 1 \
--epoch 20130621 \
--license 'Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX' \
--vendor 'Oracle' \
--category 'java' \
--architecture x86_64 \
--maintainer '' \
--exclude src.zip \
--description 'The Oracle JDK runtime environment.' \
--url http://www.oracle.com/ \
--after-install java-alternatives.sh \
--template-scripts \
--template-value priority=1725 \
--rpm-os el6 \
jdk1.7.0_25
alternatives --install /usr/bin/java java /usr/java/jdk<%= version >/jre/bin/java <%= priority > \
--slave /usr/bin/appletviewer appletviewer /usr/java/jdk<%= version >/bin/appletviewer \
--slave /usr/bin/apt apt /usr/java/jdk<%= version >/bin/apt \
--slave /usr/bin/ControlPanel ControlPanel /usr/java/jdk<%= version >/bin/ControlPanel \
--slave /usr/bin/extcheck extcheck /usr/java/jdk<%= version >/bin/extcheck \
--slave /usr/bin/idlj idlj /usr/java/jdk<%= version >/bin/idlj \
--slave /usr/bin/jar jar /usr/java/jdk<%= version >/bin/jar \
--slave /usr/bin/jarsigner jarsigner /usr/java/jdk<%= version >/bin/jarsigner \
--slave /usr/bin/javac javac /usr/java/jdk<%= version >/bin/javac \
--slave /usr/bin/javadoc javadoc /usr/java/jdk<%= version >/bin/javadoc \
--slave /usr/bin/javafxpackager javafxpackager /usr/java/jdk<%= version >/bin/javafxpackager \
--slave /usr/bin/javah javah /usr/java/jdk<%= version >/bin/javah \
--slave /usr/bin/javap javap /usr/java/jdk<%= version >/bin/javap \
--slave /usr/bin/java_vm java_vm /usr/java/jdk<%= version >/jre/bin/java_vm \
--slave /usr/bin/javaws javaws /usr/java/jdk<%= version >/bin/javaws \
--slave /usr/bin/jcmd jcmd /usr/java/jdk<%= version >/bin/jcmd \
--slave /usr/bin/jconsole jconsole /usr/java/jdk<%= version >/bin/jconsole \
--slave /usr/bin/jcontrol jcontrol /usr/java/jdk<%= version >/bin/jcontrol \
--slave /usr/bin/jdb jdb /usr/java/jdk<%= version >/bin/jdb \
--slave /usr/bin/jhat jhat /usr/java/jdk<%= version >/bin/jhat \
--slave /usr/bin/jinfo jinfo /usr/java/jdk<%= version >/bin/jinfo \
--slave /usr/bin/jmap jmap /usr/java/jdk<%= version >/bin/jmap \
--slave /usr/bin/jps jps /usr/java/jdk<%= version >/bin/jps \
--slave /usr/bin/jrunscript jrunscript /usr/java/jdk<%= version >/bin/jrunscript \
--slave /usr/bin/jsadebugd jsadebugd /usr/java/jdk<%= version >/bin/jsadebugd \
--slave /usr/bin/jstack jstack /usr/java/jdk<%= version >/bin/jstack \
--slave /usr/bin/jstat jstat /usr/java/jdk<%= version >/bin/jstat \
--slave /usr/bin/jstatd jstatd /usr/java/jdk<%= version >/bin/jstatd \
--slave /usr/bin/jvisualvm jvisualvm /usr/java/jdk<%= version >/bin/jvisualvm \
--slave /usr/bin/keytool keytool /usr/java/jdk<%= version >/bin/keytool \
--slave /usr/bin/native2ascii native2ascii /usr/java/jdk<%= version >/bin/native2ascii \
--slave /usr/bin/orbd orbd /usr/java/jdk<%= version >/bin/orbd \
--slave /usr/bin/pack200 pack200 /usr/java/jdk<%= version >/bin/pack200 \
--slave /usr/bin/policytool policytool /usr/java/jdk<%= version >/bin/policytool \
--slave /usr/bin/rmic rmic /usr/java/jdk<%= version >/bin/rmic \
--slave /usr/bin/rmid rmid /usr/java/jdk<%= version >/bin/rmid \
--slave /usr/bin/rmiregistry rmiregistry /usr/java/jdk<%= version >/bin/rmiregistry \
--slave /usr/bin/schemagen schemagen /usr/java/jdk<%= version >/bin/schemagen \
--slave /usr/bin/serialver serialver /usr/java/jdk<%= version >/bin/serialver \
--slave /usr/bin/servertool servertool /usr/java/jdk<%= version >/bin/servertool \
--slave /usr/bin/tnameserv tnameserv /usr/java/jdk<%= version >/bin/tnameserv \
--slave /usr/bin/unpack200 unpack200 /usr/java/jdk<%= version >/bin/unpack200 \
--slave /usr/bin/wsgen wsgen /usr/java/jdk<%= version >/bin/wsgen \
--slave /usr/bin/wsimport wsimport /usr/java/jdk<%= version >/bin/wsimport \
--slave /usr/bin/xjc xjc /usr/java/jdk<%= version >/bin/xjc