SafeChildren Banner

Havoc Oracle Solaris Experts

jueves, 10 de diciembre de 2009

Instalar Java 6 en Solaris 10 64bits

Introducción
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
Bien, partiendo de la base de que no tenemos estos problemas, y centrándonos en el tema del post, vamos a ver qué diferencias hay entre la instalación mediante pkgadd y autoextraible.

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 -
# 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.
Una vez concluido el proceso, ya tenemos nuestra versión Java instalada

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]
yes
 Repetimos el mismo procedimiento para la versión de 64bits
# cd /usr/jdk/instances
# sh $HOME/jdk/6/jdk-6u17-solaris-sparcv9.sh
Ya tenemos concluida la instalación de Java.

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/
Veamos cómo recrear el link
# which java
/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)
Conclusiones
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

5 comentarios:

  1. Muy buena referencia!
    Necesito 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.

    ResponderEliminar
  2. Hola,

    La 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

    ResponderEliminar
  3. Buenas, tengo una nueva consulta: para instalar por sh, para un SPARC de 64 bits, primero debo instalar el .sh de 32 bits?

    ResponderEliminar
  4. Hola,

    No, 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

    ResponderEliminar
  5. Buenas tardes una pregunta entonces no es conveniente instalar por pkgadd cuando se tiene una base en oracle en un ambiente productivo.

    ResponderEliminar