update-alternatives en CentOS


centOS 6

En estos días me tocó actualizar la versión de Java en un servidor en el trabajo. En particular tenía la versión jre-1.6.0-openjdk y querían usar la versión jdk1.6.0_33 de Oracle. Lo que me extrañó fue encontrar el utilitario update-alternatives en CentOS, ya que lo conocía en distribuciones basadas en Debian. Leyendo la documentación en CentOS, es una reimplementación del sistema update-alternatives de Debian para distribuciones basadas en Red Hat, y por ende CentOS. Entonces, veamos cómo actualizar la versión de Java con update-alternatives en CentOS a manera de ejemplo.

Usando update-alternatives para Java

Lo primero que se debe hacer es consultar la versión de java actual:

# java -version
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1.7.4) (rhel-1.21.b17.el6-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

Aquí puede verse que la versión a la que se hace referencia es la 1.6.0_17 de OpenJDK. Ahora vamos agregar la ruta de la nueva versión a usar:

# update-alternatives --install /usr/bin/java java /opt/jdk1.6.0_33/bin/java 1

Esta última orden agrega la ruta /opt/jdk1.6.0_33/bin/java al binario /usr/bin/java java, es decir, este será el enlace simbólico a usar en caso de seleccionar esta opción. Vamos a configurar la alternativa para que apunte a la nueva ruta:

# update-alternatives --config java
There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
   2           /opt/jdk1.6.0_33/bin/java

Enter to keep the current selection[+], or type selection number: 2

Vamos a verificar la versión de java una vez más:

# java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)

Ahora el binario de java apunta a la versión de Oracle. Cosa que podemos verificar consultando los enlaces simbólicos:

# ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 22 Jul 31 15:25 /usr/bin/java -> /etc/alternatives/java
# ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 25 Jul 31 15:25 /etc/alternatives/java -> /opt/jdk1.6.0_33/bin/java

, ,

  1. #1 by Luis Gallardo on 30/10/2012 - 3:09

    @Rodrigo lee los comentarios de ese mismo artículo. En particular el #14. Saludos!

  2. #2 by Rodrigo on 30/10/2012 - 2:12

    buenas luis mira no puedo comentar en el post del q quiero una solucion asi q te escribo en este mi problema es q le puse este frimware http://lgallardo.com/2011/05/22/instalacion-de-openwrt-en-tp-link-tl-wr1043nd/comment-page-2/#comments

    andaba de 10 pero cuando quise volver a la version original del router murio se colgo y lo unico q hace el router es prender y apagar las luces quisiera saber q hago tienes alguna solucion algun programa p revivir router noce necesito algo gracias

  3. #3 by Luis Gallardo on 03/08/2012 - 2:49

    @Mark you are welcome. Great to hear it works for you as well. Cheers!

  4. #4 by Mark on 03/08/2012 - 1:41

    Luis. Thank you very much for posting this. Just ran it and changed OpenJDK to sun’s Java 7u5. Worked as advertised. All the other posts I found had way too many steps listed.

(No será publicado)


  1. update-alternatives en CentOS