Posts Tagged ‘update-alternatives’

Red Hat: Bagaimana menginstall java dengan alternatives

February 1, 2010

Ok, another simply notes.

Seperti pepatah “banyak jalan menuju roma”, banyak jalan cara juga untuk menginstall java. 😀 Tapi kebanyakan intinya sama, yaitu extract, install dan setting path.

Sebenarnya ada cara lain yang lebih elegan juga, menurut saya. 😎 Yaitu menggunakan tool “alternatives”.

Perintah alternatives, yang saya kutip dari manualnya adalah:

NAME
alternatives – maintain symbolic links determining default commands

DESCRIPTION
alternatives creates, removes, maintains and displays information about the symbolic
links comprising the alternatives system. The alternatives system is a reimplementation
of the Debian alternatives system. It was rewritten primarily to remove the dependence
on perl; it is intended to be a drop in replacement for Debianâs update-dependencies
script. This man page is a slightly modified version of the man page from the Debian
project.

Ya, seperti itu lah.. *males translate 😆
Tapi intinya dengan menggunakan alternatives ini kita dimudahkan untuk menswitch versi – versi aplikasi bila ada update nantinya dan tidak perlu setting2 path lagi. Ok, langsung aja tutorialnya, and this is how:

Notes:
Sebelumnya, pada fresh install Redhat linux ini sudah terinstall paket javanya.

[root@lunamaya ~]# rpm -qa | grep java
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

[root@lunamaya ~]# java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-46)

Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@lunamaya ~]# alternatives --display java
java - status is auto.
link currently points to /usr/java/default/bin/java
/usr/lib/jvm/jre-1.4.2-gcj/bin/java - priority 1420
slave keytool: /usr/lib/jvm/jre-1.4.2-gcj/bin/keytool
slave rmiregistry: /usr/lib/jvm/jre-1.4.2-gcj/bin/rmiregistry
slave jre_exports: /usr/lib/jvm-exports/jre-1.4.2-gcj
slave jre: /usr/lib/jvm/jre-1.4.2-gcj
Current `best' version is /usr/lib/jvm/jre-1.4.2-gcj/bin/java.

Step 1 ~
Download Java JRE here.
Ada dua versi untuk linux, pada catatan ini saya memakai versi rpm.

Step 2 ~
Tambahkan permission untuk eksekusi dan Install

[root@lunamaya ~]# chmod +x jre-6u18-linux-i586-rpm.bin
[root@lunamaya ~]# ./jre-6u18-linux-i586-rpm.bin

Verify apakah jre sudah terinstall:

[root@lunamaya ~]# rpm -qa | grep jre
jre-1.6.0_18-fcs

[root@lunamaya ~]# rpm -ql jre-1.6.0_18-fcs
--trunk output--
/usr/java/jre1.6.0_18
--trunk output--

[root@lunamaya ~]# ll /usr/java/
total 16
lrwxrwxrwx 1 root root 16 Jan 27 17:50 default -> /usr/java/latest
drwxr-xr-x 7 root root 4096 Jan 27 17:50 jre1.6.0_18
lrwxrwxrwx 1 root root 21 Jan 27 17:50 latest -> /usr/java/jre1.6.0_18

Java terinstall pada direktori /usr/java. Seperti yang kita lihat, pada direktori tersebut terdapat 3 folder, yaitu jre1.6.0_18, default dan latest. Folder installasi yang sebenarnya adalah jre1.6.0_18. Sedangkan folder default merupakan symlink ke /usr/java/latest dan latest merupakan symlink ke /usr/java/jre1.6.0_18. Dengan begitu memudahkan kita untuk mengupdate java nantinya. Semua path pada aplikasi yang membutuhkan java environment variables ($JAVA_HOME) cukup diarahkan ke /usr/java/default. Dan bila nanti kita akan menginstall java versi baru, cukup mengganti symlink /usr/java/latest ke folder java yang baru diinstall. Sehingga tidak perlu merubah java environment variablesnya lagi.

Step 3 ~
Konfigurasi alternatives:

[root@lunamaya ~]# alternatives --config java

There is 1 program that provides 'java'.

Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java

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

Sebelumnya pada alternatives sudah ada java defaultnya. Sekarang tinggal tambahkan java yang baru diinstall.

[root@lunamaya ~]# alternatives --install /usr/bin/java java /usr/java/default/bin/java 1430

Sintaks commandnya adalah alternatives --install link name path priority dimana priority diatas (1430) adalah priority number. Pada alternatives --display java diatas, terlihat priority numbernya adalah 1420. Jadi 1430 diatas saya ambil sesuka hati asalkan nomernya diatas dari 1420 yang artinya versi java yang diinstall adalah lebih baru dengan prioritas yang lebih tinggi. Hal ini berpengaruh jika kita ingin menset alternatives secara otomatis alternatives --auto java. Maka alternatives akan menggunakan java dengan nomer prioritas yang paling tinggi.

[root@lunamaya ~]# alternatives --auto java

Bila kita ingin mengganti java dengan alternatives secara manual:

[root@lunamaya ~]# alternatives --config java

There are 2 programs which provide 'java'.

Selection Command
-----------------------------------------------
1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
*+ 2 /usr/java/default/bin/java

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

[root@lunamaya ~]# 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)

Lakukan langkah diatas bila ingin menggunakan komponen java yang lain seperti javac, jar, etc.

Ok, sekarang java sudah terupdate. Tetapi terkadang ada aplikasi yang tetap membutuhkan java environment variables seperti $JAVA_HOME atau $JRE_HOME. Salah satunya adalah TOMCAT. Untuk itu perlu juga untuk membuat java environment variables ini.

Ada banyak cara untuk menbuat path pada linux. Bisa per user melalui .bash_profile pada masing2 user atau untuk semua user secara global seperti yang akan saya buat berikut:

[root@lunamaya ~]# vim /etc/profile.d/java.sh
#!/bin/sh
export JAVA_HOME=/usr/java/default
export JRE_HOME=$JAVA_HOME
export J2RE_HOME=$JAVA_HOME
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$J2RE_HOME/bin:$PATH

Ok, that’s all.. Pfuuiihh, sepertinya lebih banyak ngomongnya dari pada howto-nya. 😆
Have a nice try.. Semoga berguna.

Salam.

Advertisements