Creación: 04-02-2010
Índice de contenidos
1.Introducción
2. Entorno
3.Instalar la JDK
4.Dando de alta las alternativas
5.Dando de alta la alternativa para el plugin de Java para el Firefox
6.Conclusiones
7. Sobre el autor
1. Introducción
Fedora (http://fedoraproject.org/) es una distribución de Linux bastante conocida y extendida. Podríamos decir que es la versión open source de RedHat para entornos de escritorio (CentOS sería un poco el quivalente pero para entornos de servidor).
En este tutorial vamos a ver cómo instalar la JDK de SUN. En muchos casos esto no tiene por qué ser necesario ya que Fedora ya trae una máquina virtual para Java, pero al no ser la “oficial” podemos encontrarnos con algunas incompatibilidades.
2. Entorno
El tutorial está escrito usando el siguiente entorno:
- Hardware: Portátil Asus G1S 15′ (2.20 GHz Intel Core 2 Duo, 2GB, 141GB SATA).
- NVIDIA GeForce 8600M
- Sistema Operativo: Linux Fedora 12
- JDK 6.18, de Sun (Oracle)
3. Instalar la JDK
Aquí no hay nada nuevo, simplemente nos bajamos la JDK de Sun
(http://java.sun.com/javase/downloads/index.jsp)
y la instalamos. Al ir a descargarla podemos elegir entre un fichero binario, o un rpm. Da igual, pero yo recomendaría el rpm por el hecho de que se quede reflejada la instalación en nuestro sistema de paquetes.
4. Dando de alta las alternativas
En los sistemas Linux actuales existe una herramienta que nos permite seleccionar entre varias alternativas para un tipo de aplicación. Por ejemplo podemos indicar cual es el editor por defecto: el vim, el gpad, … En el caso que nos aborda, gracias a esta herramienta vamos a poder indicar que hemos instalado un nuevo Java, y que éste está disponible para usar por el sistema, de hecho lo convertiremos en nuestro Java por defecto.
Fedora es un sistema moderno, así que también dispone de esta interesante herramienta.
Supongamos que hemos nuestro JAVA_HOME
está apuntando a /usr/java/default
(realmente esto es un enlace simbólico a la JDK que hemos instalado en el paso anterior)
Podríamos hacer algo como:
# alternatives --install /usr/bin/java java $JAVA_HOME/bin/java 2000 --slave /usr/bin/keytool keytool $JAVA_HOME/bin/keytool --slave /usr/bin/rmiregistry rmiregistry $JAVA_HOME/bin/rmiregistry --slave /usr/lib/jvm/jre jre $JAVA_HOME/jre --slave /usr/lib/jvm-exports/jre jre_exports $JAVA_HOME/jre/lib/ --slave /usr/bin/javaws javaws $JAVA_HOME/jre/javaws/javaws --slave /usr/bin/orbd orbd $JAVA_HOME/bin/orbd --slave /usr/bin/pack200 pack200 $JAVA_HOME/bin/pack200 --slave /usr/bin/rmid rmid $JAVA_HOME/bin/rmid --slave /usr/bin/servertool servertool $JAVA_HOME/bin/servertool --slave /usr/bin/tnameserv tnameserv $JAVA_HOME/bin/tnameserv --slave /usr/bin/unpack200 unpack200 $JAVA_HOME/bin/unpack200
Para ver que todo esta correctamente podemos ejecutar el siguiente comando. Lo importante es ver como tenemos una segunda entrada “/usr/java/default/bin/java
”:
# alternatives --display java java - status is manual. link currently points to /usr/lib/jvm/jre-1.6.0-openjdk/bin/java /usr/lib/jvm/jre-1.6.0-openjdk/bin/java - priority 16000 slave javaws: /usr/lib/jvm/jre-1.6.0-openjdk/bin/javaws slave keytool: /usr/lib/jvm/jre-1.6.0-openjdk/bin/keytool slave orbd: /usr/lib/jvm/jre-1.6.0-openjdk/bin/orbd slave pack200: /usr/lib/jvm/jre-1.6.0-openjdk/bin/pack200 slave rmid: /usr/lib/jvm/jre-1.6.0-openjdk/bin/rmid slave rmiregistry: /usr/lib/jvm/jre-1.6.0-openjdk/bin/rmiregistry slave servertool: /usr/lib/jvm/jre-1.6.0-openjdk/bin/servertool slave tnameserv: /usr/lib/jvm/jre-1.6.0-openjdk/bin/tnameserv slave unpack200: /usr/lib/jvm/jre-1.6.0-openjdk/bin/unpack200 slave jre_exports: /usr/lib/jvm-exports/jre-1.6.0-openjdk slave jre: /usr/lib/jvm/jre-1.6.0-openjdk slave java.1.gz: /usr/share/man/man1/java-java-1.6.0-openjdk.1.gz slave keytool.1.gz: /usr/share/man/man1/keytool-java-1.6.0-openjdk.1.gz slave orbd.1.gz: /usr/share/man/man1/orbd-java-1.6.0-openjdk.1.gz slave pack200.1.gz: /usr/share/man/man1/pack200-java-1.6.0-openjdk.1.gz slave rmid.1.gz: /usr/share/man/man1/rmid-java-1.6.0-openjdk.1.gz slave rmiregistry.1.gz: /usr/share/man/man1/rmiregistry-java-1.6.0-openjdk.1.gz slave servertool.1.gz: /usr/share/man/man1/servertool-java-1.6.0-openjdk.1.gz slave tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1.6.0-openjdk.1.gz slave unpack200.1.gz: /usr/share/man/man1/unpack200-java-1.6.0-openjdk.1.gz /usr/java/default/bin/java - priority 20000 slave javaws: /usr/java/default/jre/javaws/javaws slave keytool: /usr/java/default/bin/keytool slave orbd: /usr/java/default/bin/orbd slave pack200: /usr/java/default/bin/pack200 slave rmid: /usr/java/default/bin/rmid slave rmiregistry: /usr/java/default/bin/rmiregistry slave servertool: /usr/java/default/bin/servertool slave tnameserv: /usr/java/default/bin/tnameserv slave unpack200: /usr/java/default/bin/unpack200 slave jre_exports: /usr/java/default/jre/lib/ slave jre: /usr/java/default/jre slave java.1.gz: (null) slave keytool.1.gz: (null) slave orbd.1.gz: (null) slave pack200.1.gz: (null) slave rmid.1.gz: (null) slave rmiregistry.1.gz: (null) slave servertool.1.gz: (null) slave tnameserv.1.gz: (null) slave unpack200.1.gz: (null) Current `best' version is /usr/java/default/bin/java.
Ahora solo nos queda configurar el sistema para que use la alternativa que acabamos de añadir:
# alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- + 1 /usr/lib/jvm/jre-1.6.0-openjdk/bin/java * 2 /usr/java/default/bin/java Enter to keep the current selection[+], or type selection number: 2
Para comprobar que todo es correcto podemos hacer:
# java -version java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Server VM (build 16.0-b13, mixed mode)
5. Dando de alta la alternativa para el plugin de Java para el Firefox
Ahora vamos ha hacer algo parecido para el plugin de Java para el navegador. Esto nos va a permitir ejecutar applets dentro del Firefox. Esta vez no vamos a usar el comando alternatives –instal, y no porque no queramos sino porque no funciona (por lo menos yo no he conseguido hacerlo funcionar ;). Así que lo que vamos ha hacer es editar directamente los ficheros de configuración del comando alterntaives:
cd /var/lib/alternatives vi libjavaplugin.so
Y dejamos el fichero de la siguiente manera (lo interesante es ver como hemos añadido las dos líneas donde apuntamos al libnpjp2.so y le hemos puesto prioridad 20000):
manual /usr/lib/mozilla/plugins/libjavaplugin.so /usr/lib/jvm/jre-1.6.0-openjdk/lib/i386/IcedTeaPlugin.so 16000 /usr/java/default/jre/lib/i386/libnpjp2.so 20000
De nuevo, para comprobara que todo va bien:
# alternatives --display libjavaplugin.so libjavaplugin.so - status is manual. link currently points to /usr/java/default/jre/lib/i386/libnpjp2.so /usr/lib/jvm/jre-1.6.0-openjdk/lib/i386/IcedTeaPlugin.so - priority 16000 /usr/java/default/jre/lib/i386/libnpjp2.so - priority 20000 Current `best' version is /usr/java/default/jre/lib/i386/libnpjp2.so.
Y para configurar la nueva alternativa como la opción por defecto:
# alternatives --config libjavaplugin.so There are 2 programs which provide 'libjavaplugin.so'. Selection Command ----------------------------------------------- + 1 /usr/lib/jvm/jre-1.6.0-openjdk/lib/i386/IcedTeaPlugin.so * 2 /usr/java/default/jre/lib/i386/libnpjp2.so
Y seleccionamos el 2
6. Conclusiones
Hay otros sistema como Debian o Ubuntu donde es mucho más fácil instalar la JDK de Sun porque ya viene en el propio sistema de paquetes. En este caso hemos visto como podemos instalar la JDK fuera del sistema de paquetes oficial de Fedora, pero usar el comando alternatives
para integrar esta instalación con el resto del sistema.
El proceso no es muy intuitivo pero queda claro que este tipo de sistemas son cada vez más potentes y ya casi no hay nada que se nos resista o que no podamos hacer con casi cualquier distribución de Linux 😉
7. Sobre el autor
Alejandro Pérez García, Ingeniero en Informática (especialidad de Ingeniería del Software) y Certified ScrumMaster
Socio fundador de Autentia (Formación, Consultoría, Desarrollo de sistemas transaccionales)
mailto:alejandropg@autentia.com
Autentia Real Business Solutions S.L. – «Soporte a Desarrollo»