La instalación de Java se nos proporciona de dos forma: mediante pkgadd o mediante archivo autoextraible. El primer dilema es seleccionar cuál de los dos formatos es el que nos interesa utilizar, y bien, esto depende en gran medida de qué tipo de aplicaciones tengamos instalado y su certificación.
Me explico, imaginemos que tenemos un applicativo APP el cual está certificado sólo y exclusivamente para Java 1.5.x, e incompatible con la 1.6.x. En esta situación tenemos dos soluciones:
- Configurar correctamente los PATH para que sólo ejecute la versión 1.5.x
- No instalar otra máquina virtual distinta a la 1.5.x
Instalación mediante <pkgadd>
Este tipo de instalación requiere acceso como <root> ya que vamos registrar el paquete en la base de datos de software instalado de Solaris. Tiene como ventaja, que si realizamos una instalación de parches, al estar declarado en la base de Software instalado, se podrán aplicar los necesarios de forma automática.
Debemos tener en cuenta, que si hacemos esto desde la zona global, y no decimos lo contrario, éste se instalará en todas las zonas, esto puede ser un tipo de inconveniente cuando tenemos varias zonas con diferentes requisitos de Java, i.e. Oracle, Tomcat, ActiveMQ, ...
Lo primero que debemos hacer es Descargar Java 6 JDK o JRE desde Sun y seleccionaremos la arquitectura de nuestra plataforma, en mi caso Solaris SPARC.
En la pagina de descargas, después de logearnos, tendremos cuatro opciones:
- jdk-VERSION-solaris-sparc.tar.Z
- jdk-VERSION-solaris-sparcv9.tar.Z
- jdk-VERSION-solaris-sparc.sh
- jdk-VERSION-solaris-sparcv9.sh
Las versiones <tar.Z> corresponde al tipo de instalación con pkgadd y las versiones <sh> a las versiones autoextraibles, además las versiones de 64bits en SPARC son referenciadas como sparcv9 y las de 32bits como sparc. A continuación veámos cómo se instalan los paquetes, (realmente es el mismo proceso que cualquier otro paquete de Solaris, en mi ejemplo instalo todos aunque puedes seleccionar que quieres instalar)
# zcat jdk-6u17-solaris-sparc.tar.Z |tar xpf -Una vez concluido el proceso, ya tenemos nuestra versión Java instalada
# pkgadd -d .
The following packages are available:
1 SUNWj6cfg JDK 6.0 Host Config. (1.6.0_17)
(sparc) 1.6.0,REV=2006.11.29.05.57
2 SUNWj6dev JDK 6.0 Dev. Tools (1.6.0_17)
(sparc) 1.6.0,REV=2006.11.29.05.57
3 SUNWj6dmo JDK 6.0 Demo Programs (1.6.0_17)
(sparc) 1.6.0,REV=2006.11.29.05.57
4 SUNWj6jmp JDK 6.0 Man Pages: Japan (1.6.0_17)
(sparc) 1.6.0,REV=2006.12.07.19.24
5 SUNWj6man JDK 6.0 Man Pages (1.6.0_17)
(sparc) 1.6.0,REV=2006.12.07.16.37
6 SUNWj6rt JDK 6.0 Runtime Env. (1.6.0_17)
(sparc) 1.6.0,REV=2006.11.29.05.57
7 SUNWjavadb-client Java DB client
(sparc) 10.4.2,REV=2008.10.20
8 SUNWjavadb-common Java DB common files
(sparc) 10.4.2,REV=2008.10.20
9 SUNWjavadb-core Java DB core
(sparc) 10.4.2,REV=2008.10.20
10 SUNWjavadb-demo Java DB demo
(sparc) 10.4.2,REV=2008.10.20
... 3 more menu choices to follow;
for more choices, to stop display:
11 SUNWjavadb-docs Java DB documentation
(sparc) 10.4.2,REV=2008.10.20
12 SUNWjavadb-javadoc Java DB javadoc
(sparc) 10.4.2,REV=2008.10.20
13 SUNWjavadb-service Java DB service management
(sparc) 10.4.2,REV=2008.11.13
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
El instalador realizará esta tarea para cada una de las zonas.
Instalación desde archivo sh
Este tipo de instalación no requiere privilegios de <root>, ya que es un shx (archivo autoextraible) y por lo tanto, sólo necesitamos permisos de escritura en el directorio en el cuál queremos descomprimirlo, sin embargo, a diferencia de la instalación mediante <pkgadd> no queda reflejado en la base de datos de software instalado, y por lo tanto, cuando parchemos no se aplicarán los cambios al paquete JDK.
Continuando con la instalación mediante archivo sh, quiero descomprimirlo en /usr/jdk/instances y por lo tanto si que necesito ser root
En esta ocasión, nos interesan las versiones <sh> de la página de descargas de Sun. Recordar que cuando se transfieran los archivos al servidor si lo hacemos mediante ftp, debemos asignar el tipo de transferencia como binario ya que sino, no se extraerá correctamente. Si utilizamos sftp, no hay problema
Una vez subidos al servidor, simplemente deberos ejecutarlos en el directorio que queremos extraerlo, por ejemplo, en mi caso los sh están en $HOME/jdk/6/ y quiero instalarlos en /usr/jdk/instances así que hago lo siguiente
# cd /usr/jdk/instances
# sh $HOME/jdk/6/jdk-6u17-solaris-sparc.sh
ahora sale un mensaje de licencia, pulsamos Q y aceptamos la licencia
Do you agree to the above license terms? [yes or no]Repetimos el mismo procedimiento para la versión de 64bits
yes
# cd /usr/jdk/instancesYa tenemos concluida la instalación de Java.
# sh $HOME/jdk/6/jdk-6u17-solaris-sparcv9.sh
Hacer esta versión por defecto
Una vez instalada la nueva versión de Java, nuestro sistema seguirá llamado a la versión de Java que tiene en el PATH, esto es /usr/bin/java que es un link a /usr/java/bin/java, así que para hacer que sea nuestro default tenemos dos opciones:
- Establecer la variable de entorno PATH como PATH=/usr/jdk/instances/jdk1.6.0_17/bin:$PATH
- Borrar y crear el link de /usr/java a /usr/jdk/instances/jdk1.6.0_17/
# which javaConclusiones
/usr/bin/java
# ls -l /usr/bin/java
lrwxrwxrwx 1 root other 16 sep 2 2008 /usr/bin/java -> ../java/bin/java
# ls -l /usr/java
lrwxrwxrwx 1 root other 15 sep 2 2008 /usr/java -> jdk/jdk1.5.0_14
# rm /usr/java
# ln -s /usr/jdk/instances/jdk1.6.0_17 /usr/java
# java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode)
En ambos casos, la instalación de Java no reviste mayor problema, sin embargo, la decisión de instalación de una forma u otra dependerá principalmente del tipo de software que tenemos instalado.
Yo por ejemplo, en las workstation o equipos de testing suelo utilizar las versiones de sh y, en producción las de pkgadd (siempre que no esté Oracle por medio)
Referencias
Muy buena referencia!
ResponderEliminarNecesito saber si se puede instalar, por ejemplo, un jdk 1.6.18, si existe ya instalada una version jdk 1.6.21 en el server a instalar.
Hola,
ResponderEliminarLa verdad es que depende del modo de instalación. Si utilizas la versión en modo paquete -utilizando <pkgadd> la respuesta es no, ya que actualizará el paquete.
Si por el contrario utilizas la versión <sh> entonces sí -deberás modificar el PATH para que busque primero en la versión que quieres-
Otra solución es utilizar una Zona con una versión de Java especial.
Espero haberte ayudado,
Un Saludo,
Urko
Buenas, tengo una nueva consulta: para instalar por sh, para un SPARC de 64 bits, primero debo instalar el .sh de 32 bits?
ResponderEliminarHola,
ResponderEliminarNo, no es necesaro tener la shell en 64bits para poder instalar por sh.
Ten en cuenta, que el proceso de instalación por sh -normalmente es un sistema de autodescompresión- por lo tanto, no es necesario.
Además, tanto sh, tsch, bash son -por defecto- de 32bits en Solaris, aunque esté sobre SPARC v9 -64bits-
Espero haberte ayudado
Un Saludo,
Urko
Buenas tardes una pregunta entonces no es conveniente instalar por pkgadd cuando se tiene una base en oracle en un ambiente productivo.
ResponderEliminar