Wednesday, April 18, 2007

CentOS java και αυπνίες!

Ως πωρωμένος Java developer έχω μια ανωμαλία - μάλλον έχω πολλές αλλά αυτή είναι μία συγκεκριμένη Java-geek. Κάθε φορά που βρίσκω μπροστά μου ένα unix terminal κάποιο shell γράφω πάντα το εξής - μα πάντα λέμε.

java -version
Ναι πρέπει να καταλάβεις λίγο την ψυχοσύνθεση μου, εμένα το java vm και ο javac είναι ο κόσμος μου στο context του συστήματος που χαϊδεύω το shell του. Όχι δεν είμαι linux geek, δεν είμαι sys admin, όχι δεν κάνω επαγγελματικά support σε windows user. Όταν πρόκειται για την δουλειά μου αυτά τα χρόνια όλα αρχίζουν και ξεκινάνε απο τον μαγικό κόσμο της Java. Αν είναι εκεί τότε αισθάνομαι οκ, μπορώ να ξεκινήσω αν δεν είναι τότε πρέπει να κάνω σταυροφορία να την εγκαταστήσω.

Έγραψα πριν μερικές μέρες ότι ήδη εχουν γίνει τα πρώτα βήματα για βάλουμε τα θεμέλια για το java - δικo σπίτι του JHUG , αλλα και η πραγμάτωση μίας καιρό κ@υλας μου να έχω ένα μηχάνημα στο internet για να μπορώ να παίζω με τα java παιχνίδια μου, με τους server μου , τα νέα και τα παλιά libraries. Λοιπόν ο server ειναι up εδω και 2 μέρες. Μια λεπίδα είναι όπως λένε στην ορολογία των admins σε κάποιο datacenter στην Ολλανδία αν δεν κάνω λάθος. Τον έχω ονομάσει Beast αλλά οκ ξέρω ότι δεν είναι τόσο beast οπότε θα πρέπει να τον ονομάσουμε κάπως διαφορετικά. Το beast λοιπόν με το που μου το παρέδωσε το team της εταιρίας σε self managed κατάσταση, έρχεται εγκατεστημένο με CentOS 4.4 . Οκ το είχα ακούσει το Cent OS δεν είχα δώσει και μεγάλη σημασία, δεν ήξερα ότι ειναι ουσιαστικά more or less Red Hat Enterprise Linux πακετερισμένο δωρεάν. Κυριε Αποστολόπουλε το μηχάνημα σας ειναι έτοιμο μπορείτε να το δειτε απο αυτή την IP κτλ κτλ

Ωραία λοιπόν φυσικά η πρώτη εντολή που έτρεξα όταν έκανα το πρώτο μου login με ssh τι ήταν; σωστά... java - version

Εκεί έρχεται η ψυχολογική μετάπτωση. Πως να στο περιγράψω είναι σαν να έχεις πάει σε fast food και να πεις - θέλω με όλα τα burger ένα τεράστιο ποτήρι Coca Cola .. σου φέρνει αυτός ένα παράξενο κόκκινο κυπελλάκι σου λέει Cola Cola Sir..its ok..πας να πιεις και βλέπεις ότι ειναι Pepsi..Γαμώ το @!#$!@#$!@#$ , το ήξερες κατα βάθος - υποψιασμένος χρόνια μιας και το φαστφουντάδικο που μπήκες λέγεται Linux.

Η φαντάσου είσαι στο bar ζητάς το αγαπημένο σου ουίσκι ..σου βάζει στο γυαλί ο μάγκας το φέρνεις στα χείλη σου και τότε του το πετάς στα μούτρα.
This isn't Jeam Beam........

Κάπως έτσι αισθάνομαι όταν κάνω java -version η javac και βλέπω το

GCJ (GNU Compiler for Java) Copyright (C) Free Software Foundation,


Δεν θα κάτσω να μακρηγορήσω γιατί αυτό το πράγμα δεν ειναι πραγματική Java ή μάλλον είναι αλλα λειψή. Το θέμα ειναι ότι όταν το βλέπω για κάποιο λόγο βλέπω μικρους R.Stallman πάνω απο το κεφάλι μου και το πληκτρολόγιο να μου φωνάζουν -

yeah Bitch..GNU Java is Evil ...

Τέσπα ελπίζω απο του χρόνου και με το ουσιαστικό πέρασμα σε GPLv2 της Java ( μεγάλο κομμάτι) να ξεκινήσουμε σιγά σιγά να βλέπουμε σαν default installation σε κάθε Linux-οειδες μια πραγματική Java.

Τι να κάνω ο καημένος sysadmin γιατί ως sysadmin είμαι καημένος έτσι, άντε να την βάλουμε. Τι κάνω πρώτα ; Πάω στα forum διαβάσω. Ειχε πάει ηδη η ώρα 01:00 am αλλα έλεγα όχι θα βάλουμε Jeam Beam και μετά για ύπνο. Διαβάζω διαβάζω λένε αρκετοί - ξέρεις καλός τρόπος να σετάρεις την Sun Java στο CentOS ειναι το Jpackage σε συνεργασία με το Yum.

1. jpackage
Τι είναι το jpackage , ένας μηχανισμός - συλλογή από RPM για RPM based distros ο οποίος αναλαμβάνει να χτίσει σχεδόν αυτόματα την Sun Java, να βάλει τα rpm εκεί που πρέπει κτλ κτλ. Πάω να ξεκινήσω. Πρίξτε μου τα @@ με το Yum, εντάξει ρε παιδιά το ομολογώ δεν ήξερα τι ειναι το Yum το έμαθας χθες, άντε να δουμε που στο διάολο εχει τα external repository descriptor files , ωραία να του βάλουμε τα descriptors για τα repository του jpackage, ωραία yum update, ωραία κατέβασε το jdk-bla bla-bin απο την Sun αλλά δες αν για την συγκεκριμένη έκδοση έχουμε το αντίστοιχο jpackage rpm για να γίνει το δέσιμο.Κατεβάσω τα σωστά για jdk 1.6 ξεκινάω συμφωνα με τις οδηγίες τα rpmbuild ....ΣΥΓΝΩΜΗ ΜΩΡΟ ΜΟΥ αλλα η εκδοση 1.6 θέλει jpackage-utιls 1.7... ΣΥΓΝΩΜΗ ΔΕΝ ΘΑ ΠΑΡΩ..αντε γεια...μια ωρα με τα dependencies για να πάρω τα @@ μου!

2. alternative
Λοιπόν επειδη μου την έδωσε κατεβάζω απο την Sun το bin το εκτελώ και εχω extracted το jdk-1.6. Οκ διαβάζω ξανά ότι υπάρχει ο μηχανισμός alternative ο οποίος αναλαμβάνει να διαχειριστεί και να κάνει configure sym links για alternative libraries στο συστημα σου..πχ μπορείς να εχεις 3 διαφορετικες εκδόσεις Java JDK αυτό θα εχει η μπορεί να σου φιάξει ολα τα bindings στα folder που βλέπει το path σου και να μπορείς να παίζει απο εκει.

alternative --install java bla bla bla

πάρε τα @@ μου. Ουτε να κάνω edit το ήδη υπάρχων
alternative java configuration ουτε να βάλω νεο.

3.Κάτι που έπρεπε να κάνω απο την αρχή! Κατέβασε το jdk βάλτο μέσα στο /usr/lib/jdk6/ , μετά δες which java σου λέει /usr/bin , ok ls -lf ειναι symbolic link δίχνει στο /usr/alternatives κτλ κτλ ωραία..πηγαίνεις στο sym link το κάνεις update και του λες..απο εδώ και πέρα θα δίχνεις στο /usr/lib/jdk16/bin/java και άντε γεια! 5 λεπτά..για το sym link της java και του javac!

κάτι που ήθελε 5 λεπτα μου πήρε κάτι ώρες για να χάσω την ώρα μου με την κάθε μαλακία package και dependency manager. Ελπίζω σε λίγους να μην χρειάζεται να κάνω τίποτα..απλά να πηγαίνω σε παρθένα shell και να μου δίνουν Jeam Beam . Το Beast τώρα έχει πάνω Sun Java 1.6 και ένα Ant να του κοπιάρω (για διάφορες χρήσεις) και είμαστε έτοιμοι. Go go καλέ μου JBoss!

4 comments:

  1. He he he. Apo ta liga kala tou GCJ itan na askithei ligo perissoteri piesi gia na ginei opensource to sun jdk :) Kata ta alla.... ksereis esi!

    ReplyDelete
  2. Kalws orises ston kosmo tou Linux !!!

    ReplyDelete
  3. Ήταν όντως μόνο 5 λεπτά υπόθεση αν ακολουθούσες τις οδηγίες εδώ: http://wiki.centos.org/HowTos/JavaOnCentOS

    ReplyDelete
  4. νομίζω δοκίμασα κατι παρόμιο για Java 6 ηθελε jpackage το οποιο το εγκατέστησα manually..

    γενικά το jpackage μου φάνηκε ιδιαιτερα μαλακισμένος τρόπος και ιδιατερα limited..μιας και πρεπει να περιμενεις δικο τους installer

    θα προτιμήσω τον μπακαλιστικο δικό μου γιατι ...τωρα πια το να αλλαξω SDK ειναι απλα ένα sym link και τέλος!

    ReplyDelete