May 14, 2014

Πρώτες εντυπώσεις από το FreeBSD

Κατά διαστήματα είναι χρήσιμο να εξετάζει κανείς διαφορετικές γλώσσες προγραμματισμού ή λογισμικό, όχι απαραίτητα συνεκτικά με το κύριο αντικείμενο εργασίας του, προκειμένου να παίρνει ιδέες και κυρίως να εμπλουτίζει τον τρόπο σκέψης του. Πιστεύω ακράδαντα πως ο προγραμματισμός έχει μια πολύ ισχυρή φύση "κοινωνικότητας" προκειμένου ένας επαγγελματίας να είναι αποδοτικός και ει δυνατόν, να βελτιώνεται.

Το τελευταίο χρονικό διάστημα βρήκα την ευκαιρία να ασχοληθώ σε μικρό βαθμό με το BSD. Υπήρξαν διάφοροι λόγοι για την περιέργεια μου. Ένας από αυτούς ήταν η συμπεριφορά του ως λειτουργικό σύστημα, μιας και διαθέτει την φήμη για ένα πολύ σταθερό σύνολο, που εξάλλου χρησιμοποιείται και από το Mac OS. Μια άλλη τεχνολογία που παρουσιάζει ενδιαφέρον είναι αυτή του lightweight virtualization που υλοποιείται με το jails (αντίπαλο δέος του lxc που έχω αναφερθεί στο παρελθόν) Μια τρίτη περιοχή είναι η υποστήριξη της Java και των εργαλείων της. Δεν είχα ιδιαίτερες φιλοδοξίες για το λογισμικό της Oracle, μιας και κανένα προϊόν δεν είναι certified με αυτήν την πλατφόρμα.

Στα πλαίσια μιας δοκιμής μικρής κλίμακας, αποφάσισα να χρησιμοποιήσω ένα έτοιμο virtual machine image του FreeBSD, που ονομάζεται VirtualBSD. Αυτό είναι διαθέσιμο τόσο για VirtualBox όσο και για VMWare και αφορά αρχιτεκτονικές 64-bit. Μέσα σε λίγα λεπτά προέκυψε ένα έτοιμο σύστημα προς χρήση! Να μια φωτογραφία από το web site των δημιουργών του VirtualBSD, έκδοση 10.0. Ένας οδηγός γρήγορης εισαγωγής και μάλιστα στα ελληνικά βρίσκεται εδώ.
Το VirtualBSD έρχεται με ένα μεγάλο πλήθος χρηστικών εφαρμογών (LibreOffice, Skype, Pidgin, VLC, κλπ) Το να αναβαθμίσει κανείς μια εφαρμογή ή να εγκαταστήσει μια καινούργια προκαλεί αρχικά έκπληξη, αφού κατά τον παραδοσιακό τρόπο, χρειάζεται να γίνεται άντληση από το internet του πηγαίου κώδικα της εφαρμογής και να ακολουθήσει compilation με την προτροπή για διάφορα flags. Ίσως με αυτόν τον τρόπο ενθαρρύνεται η σταθερότητα του συστήματος. Από την άλλη, μια νέα έκδοση του LibreOffice θα χρειάζεται τουλάχιστον ένα διώρο compilation με την CPU σε υψηλό φόρτο! Εντύπωση μου έκανε πάντως το package (ή καλύτερα ports) management στο BSD: μπόρεσα από διαφορετικά τερματικά να κάνω εγκατάσταση ταυτόχρονα δυο εφαρμογές. Διαχειριστές πακέτων στο Linux όπως στο Ubuntu (deb) και στο Oracle Linux/RedHat συνήθως βάζουν κλειδώματα στη βάση δεδομένων των εφαρμογών και επιτρέπουν μια ενημέρωση την φορά. Το σύστημα των αρχείων ακολουθεί μια μεγαλύτερη πειθαρχία με τις νέες εφαρμογές να τοποθετούνται στον κατάλογο /usr/local.

Ένα άλλο πολύ θετικό του BSD είναι η χαμηλή κατανάλωση πόρων και ιδίως της μνήμης (RAM), ακόμα και παρακάτω από το Linux. Αυτό σου δίνει την αίσθηση ενός στιβαρού, multitasking UNIX συστήματος.  Επίσης η διαχείριση των εργασιών κατά την εκκίνηση (startup jobs) είναι πολύ απλή, σε αντίθεση με πολύ σοφιστικέ προσεγγίσεις στο Linux (systemd, upstart)

To BSD ενσωματώνει μια τεχνολογία lightweight virtualization που ονομάζεται jails. Αντίστοιχα με το lxc, επιτρέπει να τρέχουν μέσα στον ίδιο kernel προστατευμένα αντίγραφα του λειτουργικού συστήματος. Η υλοποίηση μου άρεσε πάρα πολύ όπως και η ύπαρξη διαφορετικών, ισχυρών εργαλείων διαχείρισης (warden και ezjail) Υπάρχει ακόμα μια υποτυπώδης υποστήριξη για την εκκίνηση Debian μέσα σε ένα τέτοιο περιβάλλον! Όπως και στο lxc, ένας νέος container ξεκινά σε δυο-τρια δευτερόλεπτα.

Ως προς την Java, το VirtualBSD έρχεται με την προεγκατεστημένη έκδοση OpenJDK 1.6.0.32, ενώ στον κατάλογο ports θα βρούμε επίσης τις εκδόσεις OpenJDK 7/8, το NetBeans 8 και το Eclipse Indigo (3.7.1) H εγκατάσταση του OpenJDK8 και του NetBeans 8 ήταν δίχως προβλήματα (αν και πήρε πολύ ώρα λόγω του compilation) Για την ορθή λειτουργία, χρειάστηκε να προστεθεί στο αρχείο etc/netbeans.conf η σωστή αναφορά στο OpenJDK8 home καθώς και η παράμετρος nosplash για την εκκίνηση, δηλαδή:

netbeans_default_options="-J-client ... --nosplash"
netbeans_jdkhome="/usr/local/openjdk8"

No comments: