Pemrograman

Bahasa

Framework

Peralatan

Info

Pilihan Alternatif Java dan Symbolic Link yang Buntu

– 06 April 2016
Ketika saya bermain-main dengan perintah update-alternative untuk menambahakan pilihan alternatif java, malah terjadi error. Hal ini disebabkan karena saya salah memasukkan symbolic link ketika menambahkan pilihan alternatif. Berikut ini perintah salah yang menyebabkan masalah:
sudo update-alternative --install /etc/alternatives/java java /opt/jdk1.8.0_77/bin/java
Perhatikan teks yang berwarna merah. Tesk tersebut merupakan symbolic link yang berlokasi di /etc/alternatives. Symbolic link yang seharusnya dimasukkan adalah /usr/bin/java. Akibatnya, error:
petanikode@imajinasi:~$ sudo update-alternatives --config java
update-alternatives: error: cannot stat file '/etc/alternatives/java': Too many levels of symbolic links
Tidak dapat memilih alternatif java, karena symbolic link java yang berada di /etc/alternatives buntu (broken). Berikut ini cara saya mengatasinya:
  1. Hapus symbolic link yang buntu tadi
    sudo rm /etc/alternatives/java
  2. Buat symbolic link java dari JDK yang sudah terinstal
    sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64/bin/java /etc/alternatives/java
  3. Hapus pilihan alternatif yang menyebabkan error tadi
    sudo update-alternative --remove java /opt/jdk1.8.0_77/bin/java
  4. Coba pilih alternatif lagi
    sudo update-aternative --config java
Selanjutnya kita bisa tambahkan lagi alternatif java-nya dengan perintah yang benar. Silahkan baca caranya di: Cara Mengatasi JDK yang Lebih dari Satu di Linux.

Mengapa perintah yang salah di atas tadi bisa menyebabkan error? Mungkin karna symbolic link yang ada di direktori /etc/alternatives/ adalah link yang dipakai untuk menyambungkan symbolic link /usr/bin/java dengan java di JDK-nya yang asli. Berikut ini ilustrasi hubungan antar link dan file asli.
File java yang berada di dalam JDK pilihan alternatif merupakan file asli. Sedangkan, yang berada di luar adalah file link yang saling menyambung hingga ke file asli.

Ketika kita mengetik perintah java di terminal, file yang eksekusi adalah symbolic link yang berada di /usr/bin/java. File ini tersambung sampai ke file asli.
Ternyata masalah kecil ini menambah pengalaman dan pengetahuan saya. Syukuri setiap masalah yang dihadapi. Di balik masalah selalu ada hikmah yang tersembunyi.