Το προφίλ μας στο Google Plus
24

Εγκατάσταση FreeBSD – Μέρος 2ο

Έχοντας ολοκληρώσει στο προηγούμενο μέρος την εγκατάσταση και αναβάθμιση του βασικού συστήματος, ερχόμαστε τώρα στο δεύτερο και πολύ σημαντικό κομμάτι της περιπέτειας μας στο FreeBSD: την εγκατάσταση εφαρμογών που θα κάνουν το σύστημά μας χρήσιμο.

Αν και θα μπορούσαμε να ασχολούμαστε για πολύ καιρό μόνο με το βασικό σύστημα, είναι πιστεύουμε προτιμότερο να δείξουμε κάποιες σημαντικές ρυθμίσεις σε αυτή την ενότητα, καθώς θα εγκαθιστούμε ταυτόχρονα σημαντικές εφαρμογές. Με την ολοκλήρωση αυτού του μέρους του άρθρου θα ξέρετε:

  • Πως να εγκαταστήσετε τη Συλλογή των Ports στο σύστημα σας.
  • Τις διαφορές μεταξύ πακέτων και Ports και γιατί έχουμε αυτή την περίεργη προτίμηση στα δεύτερα!
  • Πως να εγκαταστήσετε εφαρμογές από τα Ports.Πως να εγκαταστήσετε και να ρυθμίσετε το bash shell για κάθε χρήστη.
  • Ποια βασικά προγράμματα να εγκαταστήσετε για την γραμμή εντολών ώστε η ζωή σας να γίνει πιο εύκολη.
  • Πως λειτουργεί το σύστημα εκκίνησης του FreeBSD και πως να ρυθμίσετε τι ξεκινάει σε κάθε εκκίνηση.
  • Πως να φορτώνετε αρθρώματα στον πυρήνα και πως να ενεργοποιήσετε την κάρτα ήχου.
  • Διάφορες άλλες ρυθμίσεις για το βασικό σύστημα (NTP, SSH).

Σημειώστε ότι δεν θα αναφερθούμε καθόλου στο παρόν άρθρο σε εφαρμογές που απαιτούν γραφικό περιβάλλον! Θεωρούμε ότι θέλετε να δημιουργήσετε σιγά – σιγά ένα server. Επιφυλασσόμαστε ωστόσο για τη δημιουργία και τρίτου μέρους που να ασχολείται με την εγκατάσταση Xorg και GUI.

Εφαρμογές: Πακέτα και Ports

Στο FreeBSD υπάρχουν διάφοροι τρόποι για την εγκατάσταση εφαρμογών, αλλά όλοι βασίζονται είτε στη χρήση έτοιμων πακέτων είτε στη Συλλογή των Ports. Γενικά λοιπόν εγκατάσταση εφαρμογών μπορεί να γίνει:

  • Από έτοιμα πακέτα (packages) μέσω Internet.
  • Από έτοιμα πακέτα που περιέχονται στο επίσημο DVD του FreeBSD (με τον κίνδυνο οι εφαρμογές να μην είναι τελευταίες εκδόσεις).
  • Από έτοιμα πακέτα που έχουμε δημιουργήσει ή κατεβάσει σε άλλο σύστημα και τα έχουμε γράψει σε CD ή άλλο αποθηκευτικό μέσο (flash drive, σκληρό δίσκο κλπ).
  • Από τη Συλλογή των Ports. Στη διαδικασία αυτή χρησιμοποιείται απευθείας ο πηγαίος κώδικας της εφαρμογής (source code). Το σύστημα των Ports τον κατεβάζει και τον μετατρέπει κατάλληλα για λειτουργία στο FreeBSD (patch), τον μεταγλωττίζει μέσω του compiler (μέρος του βασικού συστήματος) και εγκαθιστά το τελικό binary που προκύπτει. Η διαδικασία είναι αυτοματοποιημένη και δεν απαιτεί να γνωρίζουμε λεπτομέρειες για τη διαδικασία μεταγλώττισης.
Η Συλλογή των Ports

Στην κοινότητα του FreeBSD είναι πολύ συνηθισμένο οι περισσότεροι να χρησιμοποιούν τα ports. Τα ports έχουν τα εξής πλεονεκτήματα:

  • Έχουν συνήθως τις τελευταίες εκδόσεις και ανανεώνονται συχνά.
  • Μπορούμε κατά τη διάρκεια της διαδικασίας μεταγλώττισης / εγκατάστασης να κάνουμε διάφορες ρυθμίσεις (configuration) που εμφανίζονται μπροστά μας με μορφή διαλόγων επιλογών.
  • Υπάρχει επίσης η δυνατότητα εφόσον το θέλουμε να επέμβουμε στις παραμέτρους της μεταγλώττισης για να κάνουμε π.χ. το τελικό πρόγραμμα πιο γρήγορο ανάλογα και με τις παραμέτρους του μηχανήματος μας (optimizations).

Από την άλλη, τα βασικά μειονεκτήματα των ports είναι:

  • Μεγάλα προγράμματα (π.χ. Gnome, KDE, Openoffice) χρειάζονται πολύ χρόνο για τη μεταγλώττιση. Σε αργό μηχάνημα μπορεί να χρειαστούν ακόμα και αρκετές μέρες! Επειδή η ανανέωση πολλών προγραμμάτων είναι συχνή, μπορεί να βρεθούμε σε ένα καθημερινό “κυνήγι αναβαθμίσεων” όπου οι μεταγλωττίσεις δεν τελειώνουν ποτέ…
  • Σε ορισμένες περιπτώσεις η αναβάθμιση κάποιου συγκεκριμένου port είναι τόσο ριζική που πρέπει να επαναμεταγλωττιστούν και όλα τα υπόλοιπα που βασίζονται σε αυτό. Αυτό επίσης μπορεί να διαρκέσει μεγάλο χρονικό διάστημα.
  • Σε κάποιες περιπτώσεις ορισμένα ports μπορεί να είναι προβληματικά και να μην μπορούν να μεταγλωττιστούν. Βέβαια αυτό ελέγχεται και διορθώνεται σύντομα.
  • Τα ports σε πολλές περιπτώσεις μας παρέχουν τις τελευταίες εκδόσεις των εφαρμογών. Όπως γνωρίζετε – και αν όχι θα το μάθετε σύντομα – latest δεν σημαίνει πάντα και greatest.
Τα Έτοιμα Πακέτα (Packages)

Η εγκατάσταση μέσω packages είναι ο εύκολος και γρήγορος τρόπος για να αποφύγετε την μεταγλώττιση μιας εφαρμογής που μπορεί να είναι ιδιαίτερα χρονοβόρα. Γενικά τα packages έχουν τα εξής πλεονεκτήματα:

  • Εγκαθίστανται σε σχετικά μικρό χρονικό διάστημα, αφού δεν υπάρχει μεταγλώττιση.
  • Μπορούμε να τα αποθηκεύσουμε σε CD ή μνήμη flash και να τα εγκαταστήσουμε και σε άλλα μηχανήματα χωρίς Internet.
  • Έχουν ελεγχθεί ότι δουλεύουν.

Τα μειονεκτήματα τους είναι:

  • Δεν μπορούμε να έχουμε τις προχωρημένες επιλογές (configure) που έχουμε στα ports. Επίσης δεν έχουμε την προχωρημένη δυνατότητα των optimizations.
  • Συνήθως είναι κάποιες εκδόσεις πίσω σε σχέση με τα αντίστοιχα ports.
  • Δεν είναι σίγουρο ότι θα βρείτε packages για όλες τις εφαρμογές που θα βρείτε στα ports.

Τα πακέτα γενικά εγκαθίστανται με την εντολή pkg_add. Εφόσον έχουμε Internet, χρησιμοποιούμε την εντολή pkg_add -r η οποία εγκαθιστά το πακέτο που ζητήσαμε και όλα τα dependencies.

Σημείωση: Στο παρόν άρθρο επικεντρωνόμαστε στην εγκατάσταση εφαρμογών μέσω ports. Για όσους ενδιαφέρονται για περισσότερες πληροφορίες σχετικά με την εγκατάσταση από πακέτα, μπορούν να διαβάσουν την αντίστοιχη ενότητα στο Εγχειρίδιο του FreeBSD.

Η Δομή της Συλλογής των Ports

Η Συλλογή των Ports, ή Ports Collection όπως ονομάζεται, αποτελεί τον πλέον δημοφιλή τρόπο για την εγκατάσταση εφαρμογών στο FreeBSD (αλλά και σε άλλα BSDs). Όπως είπαμε ήδη, με το σύστημα των ports το πρόγραμμα μεταγλωττίζεται από τον πηγαίο κώδικα αφού πρώτα γίνουν οι απαραίτητες αλλαγές (patches) για να μπορεί να εκτελεστεί στο FreeBSD. Η διαδικασία είναι αυτοματοποιημένη, αφού αν ένα port χρειάζεται κάποια άλλα για να εκτελεστεί, θα εγκατασταθούν και αυτά ως εξαρτήσεις (dependencies) αυτόματα.

Για να μπορέσουμε να εγκαταστήσουμε κάτι με το σύστημα των ports, πρέπει πρώτα να εγκαταστήσουμε τη Συλλογή στο μηχάνημα μας. Τι είναι όμως η Συλλογή των Ports; Στην πραγματικότητα, δεν είναι τίποτα περισσότερο από μια σειρά καταλόγων που αποθηκεύονται στο δίσκο μας, τυπικά κάτω από τον κατάλογο /usr/ports. Κάθε κατάλογος αντιστοιχεί σε μια εφαρμογή που μπορούμε να εγκαταστήσουμε. Για ευκολία στον εντοπισμό των εφαρμογών, υπάρχουν κατηγορίες – π.χ. στον κατάλογο /usr/ports/shells θα βρούμε υποκαταλόγους από διάφορα κελύφη που μπορούμε να προσθέσουμε στο σύστημα μας. Έτσι, αν θέλουμε να εγκαταστήσουμε το bash, θα μετακινηθούμε στον κατάλογο /usr/ports/shells/bash και θα δώσουμε εκεί τις κατάλληλες εντολές.

Τι περιέχει όμως ένας τέτοιος κατάλογος; Όχι και πολλά στα αλήθεια. Μη φανταστείτε ότι περιέχει τον πηγαίο κώδικα της εφαρμογής που θα εγκαταστήσετε. Αυτός μεταφορτώνεται αυτόματα τη στιγμή που θα ξεκινήσετε τη διαδικασία. Ο κατάλογος ενός port περιέχει τα απολύτως απαραίτητα: ένα Makefile που ορίζει πως θα γίνει η μεταγλώττιση, από που θα κατέβουν τα αρχεία του πηγαίου κώδικα και τι άλλα (ενδεχομένως) ports απαιτούνται για την εγκατάσταση (ή την εκτέλεση) του προγράμματος.

Ο κατάλογος του port περιέχει ακόμα συνήθως ένα αρχείο με μια σύντομη περιγραφή του προγράμματος (pkg_descr), ένα αρχείο με τη λίστα όλων των αρχείων που εγκαθιστά το port (pkg_plist) και ένα κατάλογο με τα patches που θα εφαρμοστούν στον πηγαίο κώδικα κατά τη διάρκεια της μεταγλώττισης (file). Καθώς φαντάζεστε, όλα αυτά δεν πιάνουν κάποιο σπουδαίο χώρο από μόνα τους. Αλλά πολλαπλασιάστε τα με τα 22000+ ports που περιέχει η Συλλογή και ίσως αλλάξετε γνώμη!

Από τη στιγμή που θα αρχίσετε να εγκαθιστάτε εφαρμογές από τα Ports, ο πηγαίος κώδικας για κάθε μια αποθηκεύεται στον κατάλογο /usr/ports/distfiles. Ο κατάλογος αυτός μπορεί να μεγαλώσει αρκετά, αλλά μπορείτε πάντα να σβήσετε τα περιεχόμενα χωρίς πρόβλημα με το τέλος της εγκατάστασης. Το σύστημα των ports θα κατεβάσει οποιοδήποτε από αυτά τα αρχεία χρειαστεί ξανά.

Πριν αρχίσετε να εγκαθιστάτε εφαρμογές από τα ports, θα πρέπει φυσικά να εγκαταστήσετε τη Συλλογή. Το βήμα αυτό το παραλείψαμε στην αρχική εγκατάσταση, καθώς βολεύει να εγκαταστήσουμε την τελευταία έκδοση από το Internet παρά να ανανεώσουμε μια παλιά έκδοση από το CD εγκατάστασης.

Εγκατάσταση της Συλλογής των Ports

O πιο απλός τρόπος για να ανακτήσουμε (και για να ανανεώνουμε μελλοντικά) την Συλλογή των Ports, είναι χρησιμοποιώντας την εντολή portsnap. Την πρώτη φορά θα χρειαστεί να γράψετε:

# portsnap fetch extract

Η ίδια εντολή χρησιμοποιείται και για την αναβάθμιση της Συλλογής, λίγο διαφορετικά:

# portsnap fetch update

Προσοχή: Αναβάθμιση της Συλλογής των Ports, δεν σημαίνει αναβάθμιση των εγκατεστημένων στο μηχάνημα σας εφαρμογών! Απλά σημαίνει ενημέρωση των καταλόγων της Συλλογής με νέες πληροφορίες, ώστε οι εφαρμογές που θα εγκαθιστάτε από το σημείο αυτό και μετά να είναι νεώτερες εκδόσεις. Η αναβάθμιση της Συλλογής είναι το πρώτο μόνο βήμα για να αναβαθμίσετε τις ήδη εγκαταστημένες εφαρμογές. Είναι συνηθισμένο να εκτελούμε το portsnap fetch update καθημερινά ή πριν την εγκατάσταση κάποιας εφαρμογής.

Μετά την εκτέλεση της εντολής, θα δείτε κάτι σαν αυτό:

Και με το τέλος της εκτέλεσης, τα αρχεία που αποτελούν τη Συλλογή θα έχουν πλέον εξαχθεί στην προκαθορισμένη τοποθεσία, /usr/ports:

Περιήγηση στη Συλλογή

Είναι αρκετά απλό να περιηγηθούμε στη Συλλογή, χρησιμοποιώντας μόνο δύο πολύ βασικά εργαλεία, τις γνωστές εντολές cd και ls:

# cd /usr/ports
# ls

Στο πρώτο επίπεδο, θα δούμε τους καταλόγους που αντιπροσωπεύουν τις κατηγορίες των προγραμμάτων:

Και μπαίνοντας σε κάποια κατηγορία, μπορούμε να δούμε τι ports υπάρχουν σε αυτή:

# cd shells
# ls

Αν βλέπουμε το port που θέλουμε να εγκαταστήσουμε, μπορούμε να μετακινηθούμε με την cd στον κατάλογο του και να ξεκινήσουμε την εγκατάσταση. Τι γίνεται όμως αν έχουμε χαθεί μέσα σε όλους αυτούς τους καταλόγους;

Εύρεση Ενός Port

Ναι, είναι απαραίτητο να πάμε στον κατάλογο που βρίσκεται το port για να το εγκαταστήσουμε! Ευτυχώς, υπάρχουν διάφοροι τρόποι για να βρούμε που βρίσκεται το port.

Αν ξέρουμε το όνομα του, μπορούμε να χρησιμοποιήσουμε την εντολή whereis. Ίσως η εντολή αυτή να σας είναι γνωστή από το Linux, αλλά στο FreeBSD έχει την έξτρα δυνατότητα να μας δίνει και τον κατάλογο του port ενός προγράμματος. Για παράδειγμα αν ρωτήσουμε που βρίσκεται το bash:

# whereis bash
bash: /usr/ports/shells/bash

Αν το bash ήταν εγκατεστημένο στο σύστημα μας, θα μας έδινε επίσης και τις γνωστές πληροφορίες για την τοποθεσία του εκτελέσιμου και του manpage (σελίδα βοήθειας).

Τι γίνεται όμως αν δεν ξέρουμε το ακριβές όνομα; Και πάλι, το σύστημα των ports έχει προβλέψει μια εξελιγμένη αναζήτηση. Ας υποθέσουμε ότι ψάχνουμε το port για το virtualbox:

# whereis virtualbox
virtualbox:

Προφανώς το port δεν ονομάζεται ακριβώς έτσι, αλλά ξέρουμε ότι υπάρχει. Ευτυχώς, υπάρχει και άλλος τρόπος να το αναζητήσουμε:

# cd /usr/ports
# make search name=virtualbox display=name,path,info |more
Port: virtualbox-ose-4.0.12
Path: /usr/ports/emulators/virtualbox-ose
Info: A general-purpose full virtualizer for x86 hardware
...

Θα θέλετε ενδεχομένως να χρησιμοποιήσετε το more καθώς πιθανόν να πάρετε πλήθος αποτελεσμάτων! Ελπίζουμε ότι θα καταφέρετε να εντοπίσετε μέσα στα αποτελέσματα το port που ψάχνετε. Αν όχι, υπάρχουν ακόμα πιο προχωρημένες διαδικασίες αναζήτησης, για τις οποίες μπορείτε να διαβάσετε στο manpage των ports.

Έχουμε πλέον μπει στο πνεύμα των ports, και μένει μόνο να δούμε πως γίνεται εγκατάσταση από αυτά. Και τι καλύτερο από το να χρησιμοποιήσουμε ένα σαν παράδειγμα. Και μιλάμε φυσικά για το προσφιλές μας κέλυφος bash.

Εγκατάσταση και Ρύθμιση Bash Shell

Ήδη από την προηγούμενη ενότητα εντοπίσαμε το port για το γνωστό κέλυφος bash και ήρθε η ώρα να το εγκαταστήσουμε. Αυτό μπορεί να γίνει πολύ απλά με τις παρακάτω εντολές:

# cd /usr/ports/shells/bash
# make install clean

Αυτό είναι όλο! Το σύστημα μας θα κατεβάσει τον πηγαίο κώδικα του bash, θα βάλει τα απαραίτητα patches, θα το μεταγλωττίσει και θα το εγκαταστήσει. Στην πορεία, θα μεταγλωττίσει και θα εγκαταστήσει και οποιοδήποτε άλλο πρόγραμμα απαιτείται για να λειτουργήσει το bash.

Στο FreeBSD (αλλά και στο Linux) τα προγράμματα που εγκαθίστανται μαζί με το δικό μας – επειδή είναι απαραίτητα για τη λειτουργία του – ονομάζονται γενικά dependencies ή αν το προτιμάτε, εξαρτήσεις. Υπάρχουν γενικά δύο είδη εξαρτήσεων:

  • Build dependencies: Προγράμματα που πρέπει να εγκατασταθούν προκειμένου να μπορέσει να γίνει η μεταγλώττιση του αρχικού προγράμματος. Π.χ. ένα πρόγραμμα που είναι γραμμένο σε γλώσσα modula2, χρειάζεται τον αντίστοιχο compiler για να μεταγλωττιστεί από το port. Άρα θα πρέπει πρώτα να γίνει η εγκατάσταση του modula2 compiler.
  • Run dependencies: Προγράμματα που χρησιμοποιεί το αρχικό πρόγραμμα την ώρα που εκτελείται.

Πολλές φορές, το πρόγραμμα που μεταγλωττίζουμε μας δίνει τη δυνατότητα να ενεργοποιήσουμε διάφορες επιλογές, οι οποίες εμφανίζονται μπροστά μας με τη μορφή διαλόγων. Το ίδιο μπορεί να συμβεί και με οποιοδήποτε από τα dependencies του προγράμματος μας. Ίσως να μην γνωρίζουμε τι κάνουν τι κάνουν οι περισσότερες (αν όχι όλες) αυτές οι επιλογές. Στην περίπτωση αυτή είναι ασφαλές να αφήσουμε τις προεπιλεγμένες, εκτός αν έχουμε διάθεση για πειράματα (και γιατί όχι, προβλήματα!). Για παράδειγμα, στη μεταγλώττιση του bash που ξεκινήσαμε, θα δείτε:

Και μετά από λίγο:

Δεν χρειάζεται να αλλάξετε κάτι εδώ. Απλώς χρησιμοποιήστε το TAB για να μετακινηθείτε στο ΟΚ και πιέστε Enter.

Στο τέλος της εγκατάστασης θα δείτε:

Αν θέλετε να αποφύγετε τη διακοπή της μεταγλώττισης με μάλλον άσκοπες ερωτήσεις, έχετε δύο επιλογές:

  1. Να δείτε όλους τους διαλόγους επιλογών για το port και όλα τα dependencies πριν ξεκινήσετε την εγκατάσταση.
  2. Να δηλώσετε από την αρχή την πρόθεση σας να χρησιμοποιήσετε τις προεπιλεγμένες επιλογές για το port που θα εγκαταστήσετε και όλα τα dependencies.

Αν επιλέξετε το (1), χρησιμοποιήστε την παρακάτω εντολή για τη μεταγλώττιση και εγκατάσταση:

# make config-recursive install clean

Αν επιλέξετε το (2), θα χρειαστεί να γράψετε:

# make install clean –DBATCH

Όπως φαντάζεστε, η Συλλογή των Ports έχει πολλά ακόμα κολπάκια. Μερικά από αυτά συνοψίζονται στον παρακάτω πίνακα:

make config

Θα εμφανίσει το διάλογο για την ρύθμιση των παραμέτρων του port (configuration)

make config-recursive

Θα εμφανίσει το διάλογο του configuration για το port και για όλα τα dependencies

make config-conditional

Θα εμφανίσει το διάλογο του configuration για το port και για τα dependencies, αλλά μόνο για τα dependencies που δεν έχουμε ξαναρυθμίσει στο παρελθόν.

make fetch

Θα κατεβάσει τα αρχεία του πηγαίου κώδικα που απαιτούνται για τη μεταγλώττιση και εγκατάσταση του port. Τα αρχεία αποθηκεύονται στον κατάλογο /usr/ports/distfiles

make fetch-recursive

Θα κατεβάσει τα αρχεία πηγαίου κώδικα για το port καθώς και για όλα τα dependencies στο φάκελο /usr/ports/distfiles

make rmconfig

Θα διαγράψει όλες τις αποθηκευμένες πληροφορίες configuration που έχουν γίνει μέσω του make config ή μετά από μια εγκατάσταση

make rmconfig-recursive

Όπως το παραπάνω, αλλά θα διαγράψει και τις αντίστοιχες πληροφορίες για όλα τα dependencies.

make deinstall

Απεγκαθιστά ένα εγκατεστημένο port

make reinstall

Εγκαθιστά ξανά ένα port που σβήσαμε με την pkg_delete

make clean

Καθαρίζει τα προσωρινά αρχεία που δημιουργούνται κατά τη φάση της μεταγλώττισης ενός port

make distclean

Καθαρίζει τον κατάλογο /usr/ports/distfiles από τα αρχεία πηγαίου κώδικα του port.

make package

Δημιουργεί ένα πακέτο (binary) το οποίο μπορούμε να το μεταφέρουμε και να εγκαταστήσουμε σε άλλο υπολογιστή με την pkg_add. Ωστόσο δεν δημιουργεί πακέτο για τα dependencies. Μετά την εκτέλεση της εντολής αυτής γίνεται και εγκατάσταση του αντίστοιχου port. Συνίσταται να δημιουργήσετε τον κατάλογο /usr/ports/packages όπου και αποθηκεύονται αυτόματα τα πακέτα που δημιουργούνται

make package-recursive

Όπως το παραπάνω, μόνο που δημιουργούνται και τα πακέτα για τα dependencies

Ρύθμιση του Bash

Με το bash εγκατεστημένο, είμαστε έτοιμοι να αρχίσουμε να το χρησιμοποιούμε ως το βασικό μας κέλυφος. Όχι όμως για το χρήστη root, αλλά για τον απλό χρήστη που δημιουργήσαμε στην εγκατάσταση.

Προσοχή: Δεν αλλάζουμε το shell για το χρήστη root από το προεπιλεγμένο csh. To csh ανήκει στο βασικό σύστημα που σημαίνει ότι μπορεί να χρησιμοποιηθεί ακόμα και αν χαλάσουμε τα προγράμματα που έχουμε εγκαταστήσει από τα ports (που βρίσκονται στο /usr/local). Αν βάλουμε το bash ως κέλυφος του root και για κάποιο λόγο χαλάσει, δεν θα μπορούμε να κάνουμε login!

Αποσυνδεθείτε λοιπόν από το root και συνδεθείτε ως απλός χρήστης. Έπειτα πληκτρολογήστε:

$ chsh -s bash
Password:
chsh: user information updated

Στο Linux θα βρίσκατε το bash εγκατεστημένο στο /bin/bash, αλλά αν κοιτάξετε με την whereis θα δείτε ότι εδώ είναι στο /usr/local/bin/bash. Όλα τα προγράμματα που εγκαθιστούμε από τα ports (ή από πακέτο) τοποθετούνται στο /usr/local.

Κάντε logout και ξανά login ως απλός χρήστης και θα παρατηρήσετε ότι η προτροπή (prompt) του κελύφους έχει αλλάξει σε κάτι σαν το παρακάτω:

[user@deltaBSD ~]$

Πολύ καλύτερα από πριν φυσικά, αλλά έχουμε ακόμα ρυθμίσεις να κάνουμε.

Αρχεία Ρυθμίσεων του Bash

Η ρύθμιση του bash γίνεται με τη βοήθεια κάποιων κρυφών αρχείων. Σε ένα σύστημα UNIX τα κρυφά αρχεία ξεκινάνε με μια τελεία (.) στο όνομα τους και πρέπει να χρησιμοποιήσουμε την ls -a για να τα δούμε. Στο bash τα αρχεία που μας ενδιαφέρουν είναι:

  • ~/.bash_profile ή ~/.bash_login ή ~/.profile
  • ~/.bashrc

όπου φυσικά το ~/ συμβολίζει ότι πρέπει να βρίσκονται στον κατάλογο μας. Το bash θα προσπαθήσει να διαβάσει κατά σειρά κάποιο από τα τρία πρώτα την στιγμή που κάνουμε login. Το .bashrc το διαβάζει όταν ξεκινάει όχι ως login shell, αλλά αν π.χ. το ξεκινήσουμε εμείς από κάποιο άλλο shell. Αν θέλουμε να έχουμε τις ίδιες ρυθμίσεις άσχετα με τον τρόπο εκκίνησης του bash βολεύει να βάλουμε όλες τις ρυθμίσεις στο .bashrc και να φροντίσουμε να φορτώνεται π.χ. μέσα από το .profile.

Το καλό είναι ότι έχουμε ήδη ένα αρχείο .profile και δεν χρειάζεται να το φτιάξουμε από την αρχή. Θα βρείτε μέσα τα εξής (έχουμε αφαιρέσει τα σχόλια):

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:$HOME/bin; export PATH

BLOCKSIZE=K; export BLOCKSIZE
EDITOR=vi; export EDITOR
PAGER=more; export PAGER

ENV=$HOME/.shrc; export ENV

if [ -x /usr/games/fortune ] ; then /usr/games/fortune freebsd-tips ; fi

Προσθέστε σε αυτό το αρχείο τις παρακάτω γραμμές στο τέλος (μπορείτε να χρησιμοποιήσετε το vi, το οποίο υπάρχει στο βασικό σύστημα ή, αν σας πέφτει δύσκολο, το απλό ee (easy editor)):

if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi

Κάθε φορά που εκτελείται το .profile, στο τέλος θα φορτώνει και τις ρυθμίσεις από το .bashrc, το οποίο θα φτιάξετε να μοιάζει με το παρακάτω:

# Set LANG variable for Greek ISO encoding
export LANG=el_GR.ISO8859-7

# Show color ls output
alias ls='ls -G'

# Show color prompt (σημείωση: μην αφήνετε κενό μετά από κάθε '\')
PS1='\ [\ 033[01;34m\ ]\ u@\ h\ [\ 033[00m\ ]:\ [\ 033[01;36m\ ]\ w\ [\ 033[00m\ ]\ $ '

Αν δεν σας ενδιαφέρει να γράφετε ελληνικά στην κονσόλα, μπορείτε να χρησιμοποιήσετε (καλύτερα) UTF-8:

export LANG=el_GR.UTF-8

Στην κονσόλα, τα ελληνικά/αγγλικά αλλάζουν με ALT+SPACE. Για να δοκιμάσετε τις ρυθμίσεις σας, κάντε logout και login. Θα καταλάβετε ότι λειτουργούν βλέποντας το χρωματιστό prompt. Επίσης η ls θα δείχνει χρώματα στα αρχεία ανάλογα με τον τύπο τους (απλά αρχεία, links, κατάλογοι, εκτελέσιμα κλπ). Πολιτισμός!

Η αρχική ρύθμιση μας για το bash έχει ολοκληρωθεί.

Εγκατάσταση και Ρύθμιση Sudo

Όσοι έρχεστε από το Ubuntu, θα γνωρίζετε το sudo. Στην πραγματικότητα πρόκειται για ένα αρκετά παλιό utility, αλλά έγινε ιδιαίτερα "της μόδας" από τη συγκεκριμένη διανομή. Το sudo είναι ένα πολύ χρήσιμο πρόγραμμα που μας επιτρέπει να εκτελέσουμε εντολές ως root χωρίς να χρειαστεί να κάνουμε login ως root ή να χρησιμοποιήσουμε την su. Αυτό δεν σημαίνει φυσικά ότι κάθε χρήστης μπορεί να χρησιμοποιεί το sudo, αφού τα δικαιώματα χρήσης μπορούν να ρυθμιστούν. Μπορούμε για παράδειγμα να δώσουμε σε συγκεκριμένους χρήστες τη δυνατότητα να εκτελούν συγκεκριμένες εντολές ως root. Από την άλλη η χρήση του απαιτεί προσοχή, καθώς με λάθος ρύθμιση μπορεί κάποιος να αποκτήσει περισσότερα δικαιώματα από αυτά που νομίζαμε ότι του δώσαμε!

Στη δική μας περίπτωση ωστόσο αυτό το πρόβλημα δεν θα υπάρξει, γιατί θα ρυθμίσουμε το sudo να δίνει πλήρη δικαιώματα root μόνο σε εμάς – για την ακρίβεια σε οποιονδήποτε βάλουμε στο wheel group. Λογικά, δεν θα βάλετε σε αυτό το group κανένα που δεν θέλετε να έχει δικαιώματα διαχείρισης!

Η εγκατάσταση του sudo είναι αρκετά απλή υπόθεση:

# whereis sudo
sudo: /usr/ports/security/sudo
# cd /usr/ports/security/sudo
# make install clean

Δεν χρειάζεται να κάνετε κάποια αλλαγή στις επιλογές που θα δείτε, αλλά αν θέλετε να είναι πιο διασκεδαστικό, μπορείτε να επιλέξετε τα insults. Κάθε φορά που θα γράφετε τον κωδικό σας λάθος, το sudo θα σας τη λέει άσχημα!

Με το τέλος της εγκατάστασης, θα πρέπει να ρυθμίσετε το sudo να δίνει δικαιώματα σε όσους ανήκουν στο wheel group (Αν δεν θέλετε αυτό, μπορείτε επίσης να βάλετε μόνο το λογαριασμό σας). Για την ρύθμιση του sudo, θα χρησιμοποιήσετε την εντολή visudo. Μια λεπτομέρεια: η εντολή αυτή χρησιμοποιεί ως editor το vi. Αν είστε από αυτούς που δεν μπορούν να το χρησιμοποιήσουν, μπορείτε να γράψετε το παρακάτω για να αλλάξετε τον προεπιλεγμένο editor στο ee:

setenv EDITOR ee

Μπορείτε μάλιστα να αλλάξετε τη σχετική γραμμή στο .profile σας ώστε να ισχύει πάντα. Μπορούμε τώρα να εκτελέσουμε τις εντολές:

# rehash
# visudo

Και στο αρχείο που θα ανοίξει στον editor, βρείτε τη γραμμή που δείχνει:

# %wheel ALL=(ALL) ALL

Και αφαιρέστε το σχόλιο (#) από την αρχή ώστε να ενεργοποιηθεί:

%wheel ALL=(ALL) ALL

Αποθηκεύστε και βγείτε από τον editor. Η ρύθμιση έχει ενεργοποιηθεί. Αποσυνδεθείτε από το λογαριασμό του root και εισέλθετε ως απλός χρήστης. Δοκιμάστε να εκτελέσετε κάτι (ακίνδυνο) με την sudo:

[user@deltaBSD:~]$ sudo ls
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
Password:
...αποτέλεσμα της ls...

Μετά το κήρυγμα, θα δείτε το αποτέλεσμα της ls. Η ρύθμιση έχει ολοκληρωθεί. Από εδώ και πέρα μπορείτε να χρησιμοποιείτε το sudo π.χ. για να εγκαθιστάτε προγράμματα. Έτσι δεν χρειάζεται να κάνετε login ως root.

Εγκατάσταση Βοηθητικών Προγραμμάτων

Στον παρακάτω πίνακα θα βρείτε μερικά προγράμματα που πιστεύουμε ότι είναι καλό να εγκαταστήσετε στο server σας. Πρόκειται για μικρά utilities κονσόλας. Ξέρετε πλέον πως να εγκαθιστάτε εφαρμογές, οπότε μην περιμένετε αναλυτικές οδηγίες. Για να σας γλυτώσουμε από μερικά whereis, σας δίνουμε τον αντίστοιχο κατάλογο port.

Port Κατάλογος
screen /usr/ports/sysutils/screen
zip /usr/ports/archivers/zip
rar /usr/ports/archivers/rar
unrar /usr/ports/archivers/unrar
cdrtools /usr/ports/sysutils/cdrtools
dvd+rw-tools /usr/ports/sysutils/dvd+rw-tools
portupgrade /usr/ports/ports-mgmt/portupgrade
rsync /usr/ports/net/rsync
nmap /usr/ports/security/nmap
wget /usr/ports/ftp/wget
figlet /usr/ports/misc/figlet
Εγκατάσταση Editor

Όπως έχετε καταλάβει, στο UNIX τα αρχεία κειμένου έχουν την τιμητική τους! Είναι σκόπιμο να έχετε κάποιο editor στο σύστημα σας που να σας εξυπηρετεί. Αν δεν γνωρίζετε κάποιο editor, θα σας λέγαμε να μάθετε τον vi (τα βασικά) καθώς θα τον βρείτε πρακτικά παντού εγκατεστημένο και μπορείτε να τον χρησιμοποιήσετε για γρήγορες αλλαγές (συνήθως σε αρχεία ρυθμίσεων). Αν πάλι δεν θέλετε να χρησιμοποιήσετε τον vi, μπορείτε να εγκαταστήσετε κάποιο από τους editors που θα βρείτε στο /usr/ports/editors. Προσοχή όμως, γιατί μερικοί (αρκετοί θα λέγαμε) από αυτούς χρησιμοποιούν γραφικό περιβάλλον και θα σας εγκαταστήσουν άφθονα πακέτα που δεν χρειάζεστε. Αν θέλετε ένα εύκολο editor μπορείτε να εγκαταστήσετε το nano το οποίο είναι γνωστό και από τις περισσότερες διανομές Linux:

# cd /usr/ports/editors/nano
# make install clean

Αν από την άλλη έχετε συνηθίσει με το vi, θα σας συνιστούσαμε να εγκαταστήσετε τη βελτιωμένη του έκδοση, το vim:

# cd /usr/ports/editors/vim
# make install clean -DWITHOUT_GUI -DWITHOUT_X11

Παρατηρήστε τα WITHOUT_GUI και WITHOUT_X11 που προσθέσαμε. Με αυτά εξασφαλίζουμε ότι το port θα μας εγκαταστήσει μόνο την έκδοση vim που προορίζεται για την κονσόλα και όχι τα γραφικά αντίστοιχα. Μάλιστα, για να είμαστε εξασφαλισμένοι ότι αυτό δεν θα συμβεί από… ατύχημα – για παράδειγμα κατά τη διάρκεια κάποιου upgrade, μπορείτε να προσθέσετε τις παρακάτω γραμμές στο τέλος του /etc/make.conf:

.if ${.CURDIR:M*/editors/vim}
WITHOUT_GUI=yes
WITHOUT_X11=yes
.endif

Έχοντας εγκαταστήσει είτε το nano είτε το vim, ανοίξτε το .profile (στον κανονικό λογαριασμό χρήστη) και αλλάξτε κατάλληλα τη γραμμή export EDITOR:

export EDITOR=vim

ή

export EDITOR=nano

Αν μάλιστα έχετε εγκαταστήσει το vim, μάλλον θα θέλετε να το χρησιμοποιείτε αντί για το vi του βασικού συστήματος. Μπορείτε λοιπόν να προσθέσετε την παρακάτω γραμμή στο .bashrc σας:

alias vi='vim'

Έχουμε τώρα εγκαταστήσει τα βασικά προγράμματα για το FreeBSD σύστημα μας και είμαστε έτοιμοι να εξερευνήσουμε λίγο ακόμα πως λειτουργεί. Η γνώση της εσωτερικής λειτουργίας ενός συστήματος μας βοηθάει να λύσουμε οποιοδήποτε πρόβλημα χρειαστεί, αφού το σύστημα μας δεν είναι απλώς ένα μαύρο κουτί που εκτελεί μια λειτουργία, αλλά ένα δικό μας δημιούργημα. Όσο καλύτερα γνωρίζουμε το σύστημα μας, τόσο πιο εύκολο είναι να του εμπιστευτούμε τα δεδομένα μας και να κοιμόμαστε ήσυχοι το βράδυ!

Το Σύστημα Εκκίνησης του FreeBSD

Όσοι έχετε κάποια εμπειρία με το σύστημα εκκίνησης που χρησιμοποιούν διάφορες διανομές Linux, θα γνωρίζετε ίσως τους καταλόγους /etc/rc2.d, /etc/rc3.d, τον κατάλογο /etc/init.d με τα scripts εκκίνησης, το /etc/inittab και μερικά ακόμα αρχεία που χρησιμοποιούνται στο κλασικό SysV σύστημα. Πράγματι, οι περισσότερες διανομές έχουν υιοθετήσει αυτό το σύστημα – και τελευταία σε μια προσπάθεια επιτάχυνσης της εκκίνησης το έχουν αντικαταστήσει με τελείως διαφορετικά συστήματα τα οποία μάλιστα αλλάζουν συχνά.

Είμαστε της άποψης ότι δεν μπορούμε να έχουμε τον πλήρη έλεγχο ενός συστήματος αν δεν κατανοούμε πως ξεκινάει και πως μπορούμε να ρυθμίζουμε με ακρίβεια τι υπηρεσίες θα εκτελούνται κατά την εκκίνηση. Ευτυχώς για μας το FreeBSD μας παρέχει ένα σύστημα εκκίνησης το οποίο μπορεί να ρυθμιστεί εξαιρετικά απλά και είναι σίγουρο ότι αν μάθετε να το χρησιμοποιείτε, δεν θα χρειαστεί να το ξε-μάθετε στην επόμενη έκδοση! Το BSD style init δεν περιέχει πολύπλοκες ρυθμίσεις και σύντομα θα έχετε την σιγουριά ότι ελέγχετε το σύστημα σας πλήρως.

Γενικά Χαρακτηριστικά του BSD Style Init

Μπορούμε γενικά να τα συνοψίσουμε παρακάτω:

  • Δεν υπάρχει το γνωστό από το Linux αρχείο /etc/inittab. Στο Linux το αρχείο αυτό καθορίζει τι θα εκτελεστεί στο κάθε runlevel, αλλά το FreeBSD δεν έχει runlevels. Ένα FreeBSD μπορεί να εκτελείται σε full multi-user mode ή σε single user mode. Δεν υπάρχουν ενδιάμεσες καταστάσεις.
  • Τα scripts που χρησιμοποιούνται για την εκκίνηση/διακοπή/επανεκκίνηση των υπηρεσιών βρίσκονται στους καταλόγους /etc/rc.d και /usr/local/etc/rc.d. Αν αναρωτιέστε γιατί υπάρχουν δύο κατάλογοι για scripts (για να μην πούμε γιατί υπάρχουν δύο /etc), μη ξεχνάτε ότι στο FreeBSD υπάρχει σαφής διαχωρισμός μεταξύ βασικού συστήματος και εφαρμογών. Το /etc/rc.d έχει τα scripts που ανήκουν στο βασικό σύστημα (π.χ. για το ssh server), ενώ στο /usr/local/etc/rc.d θα βρείτε τα scripts για υπηρεσίες που εγκαταστήσατε μέσω κάποιου port (π.χ. για τον apache web server).
  • Οι ρυθμίσεις που αφορούν τις υπηρεσίες που ξεκινάνε στην εκκίνηση του συστήματος βρίσκονται στο /etc/rc.conf και στο /etc/defaults/rc.conf. Στο ίδιο αρχείο περιγράφονται και άλλες ρυθμίσεις του συστήματος, π.χ. το δίκτυο, το όνομα του κλπ.
  • Το γνωστό από το Linux /etc/fstab υπάρχει και εδώ με αντίστοιχη λειτουργία.
Ρύθμιση του /etc/rc.conf

Θα κατανοήσετε εύκολα πως λειτουργεί το /etc/rc.conf βλέποντας ένα ένα παράδειγμα από το μηχάνημα που μόλις έχετε εγκαταστήσει:

# -- sysinstall generated deltas -- # Tue Jul 19 02:38:41 2011
# Created: Tue Jul 19 02:38:41 2011
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
defaultrouter="192.168.0.250"
font8x14="iso07-8x14"
font8x16="iso07-8x16"
font8x8="iso07-8x8"
hostname="deltaBSD.dyndns.org"
ifconfig_em0="inet 192.168.0.11 netmask 255.255.255.0"
keymap="gr.us101.acc"
nfs_client_enable="YES"
sshd_enable="YES"

Όπως θα παρατηρήσατε, οι επιλογές που κάναμε σχετικά με το πληκτρολόγιο, την κονσόλα και το δίκτυο (διεύθυνση, όνομα και πύλη) κατά την εγκατάσταση, βρίσκονται σε αυτό το αρχείο. Ας δούμε λίγο την γραμμή που αναφέρεται στη διεύθυνση δικτύου:

ifconfig_em0="inet 192.168.0.11 netmask 255.255.255.0"

Κάθε συσκευή στο FreeBSD χαρακτηρίζεται από το όνομα της. Οι κάρτες δικτύου δεν αποτελούν εξαίρεση. Δεν θα τις δείτε με ονόματα eth0, eth1 κ.λ.π. όπως ίσως έχετε συνηθίσει στο Linux, αλλά με το πραγματικό όνομα του driver που χρησιμοποιείται για την συγκεκριμένη κάρτα. Για παράδειγμα, το em αντιστοιχεί σε κάρτα δικτύου της Intel. Με ένα man em θα μπορέσετε να δείτε περισσότερες πληροφορίες (στο FreeBSD και τα προγράμματα οδήγησης διαθέτουν σελίδες βοήθειας). Πιστεύουμε είναι απόλυτα κατανοητό ότι αν το μηχάνημα σας είχε κάρτα δικτύου Realtek, η γραμμή θα έμοιαζε με την παρακάτω:

ifconfig_rl0="inet 192.168.0.11 netmask 255.255.255.0"

Η προεπιλεγμένη πύλη ορίζεται στην γραμμή defaultrouter και το όνομα του μηχανήματος στη γραμμή hostname. Τόσο απλό είναι!

Ας δούμε τώρα την εκκίνηση μια υπηρεσίας. Παρατηρήστε τη γραμμή:

sshd_enable="YES"

Θυμάστε ότι είχαμε ενεργοποιήσει τον ssh server κατά την εγκατάσταση. Στην πραγματικότητα το μόνο που κάναμε ήταν να προσθέσουμε αυτή τη γραμμή στο /etc/rc.conf.

Αν αλλάξετε τη γραμμή σε ΝΟ, στην επόμενη εκκίνηση η υπηρεσία δεν θα ξεκινήσει αυτόματα. Τι θα γίνει όμως αν σβήσετε τελείως τη γραμμή;

Για κάθε τέτοια παράμετρο που δεν ορίζουμε στο /etc/rc.conf, χρησιμοποιείται η αντίστοιχη οδηγία που περιέχεται στο /etc/defaults/rc.conf. Το αρχείο αυτό *δεν πρέπει* να το τροποποιήσετε. Όλες τις αλλαγές σας θα τις κάνετε στο αρχείο /etc/rc.conf. Όταν το FreeBSD ξεκινάει διαβάζει πρώτα όλες τις επιλογές από το /etc/defaults/rc.conf και μετά το /etc/rc.conf. Ότι οδηγία υπάρχει και στα δύο αρχεία, υπερισχύει αυτή που θα διαβαστεί από το δικό μας /etc/rc.conf.

To /etc/defaults/rc.conf μπορεί να σας οδηγήσει στο τι πρέπει να γράψετε στο /etc/rc.conf για να ενεργοποιήσετε όποια υπηρεσία του βασικού συστήματος θέλετε. Θα δείτε επίσης και τις υπόλοιπες ρυθμίσεις που μπορούν να γίνουν μέσω του /etc/rc.conf. Το αρχείο αυτό περιέχει αρκετά σχόλια και καλό θα είναι να του ρίξετε μια ματιά!

Γυρνώντας στον ssh server, καθώς έχουμε βάλει YES στην αντίστοιχη γραμμή του /etc/rc.conf, το σύστημα μας θα τον εκκινήσει αυτόματα στην εκκίνηση εκτελώντας το script εκκίνησης που βρίσκεται στον κατάλογο /etc/rc.d (μη ξεχνάμε ότι το ssh ανήκει στο βασικό σύστημα). Με μια ματιά σε αυτό τον κατάλογο θα δούμε ότι το script που θα εκτελεστεί είναι το /etc/rc.d/sshd.

Γνωρίζοντας το script που ξεκινάει μια υπηρεσία, μπορούμε εύκολα να διακόψουμε την εκτέλεση μιας υπηρεσίας, π.χ.:

# /etc/rc.d/sshd stop
Stopping sshd.
Waiting for PIDS: 1915.

Να την ξεκινήσουμε:

# /etc/rc.d/sshd start
Starting sshd.

Και φυσικά να την επανεκκινήσουμε:

# /etc/rc.d/sshd restart
Stopping sshd.
Starting sshd.

Ή και να ελέγξουμε την κατάσταση λειτουργίας της:

# /etc/rc.d/sshd status
sshd is running as pid 65183.

Στις πιο νέες εκδόσεις του FreeBSD, μπορούμε να χρησιμοποιήσουμε και την εντολή service για αυτή την εργασία, π.χ.:

# service sshd restart

Σημαντικό: Αν δεν υπάρχει η καταχώριση _enable="YES" στο /etc/rc.conf για την υπηρεσία που προσπαθούμε να εκκινήσουμε, δεν θα ξεκινήσει χειροκίνητα αν την καλέσουμε με start. Στην περίπτωση αυτή θα πρέπει αντί για start να χρησιμοποιήσετε το onestart. Όπως δηλώνει και η λέξη, η υπηρεσία θα ξεκινήσει για μια φορά, δηλ. δεν πρόκειται να εκκινήσει αυτόματα στην επόμενη επανεκκίνηση του μηχανήματος.

Για κάθε υπηρεσία του βασικού συστήματος που θέλετε να ξεκινάει αυτόματα στην εκκίνηση, θα βρείτε την αντίστοιχη οδηγία (στο /etc/defaults/rc.conf) που πρέπει να γράψετε στο /etc/rc.conf. Συνήθως είναι της μορφής:

servicename_enable="YES"

Από την άλλη, αν έχετε βρει το script της υπηρεσίας αλλά δεν ξέρετε τι πρέπει να γράψετε στο /etc/rc.conf, μπορείτε να το εκτελέσετε με την παράμετρο rcvar:

# /etc/rc.d/sshd rcvar
# sshd
#
sshd_enable="YES"
# (default: "")

Από το παραπάνω είναι φανερό τι πρέπει να γράψετε στο /etc/rc.conf!

Υπηρεσίες που δεν Ανήκουν στο Βασικό Σύστημα

Τι γίνεται αν έχετε εγκαταστήσει μια υπηρεσία από ένα port; Ας θεωρήσουμε ότι έχετε εγκαταστήσει τον apache web server, έκδοση 2.2. Ξέρετε ήδη ότι πρέπει να ψάξετε στο /usr/local/etc/rc.d για να βρείτε το script που τον εκκινεί. Με μια γρήγορη ματιά στον κατάλογο αυτό, ανακαλύπτετε ότι το script λέγεται apache22 (τι πρωτότυπο).

Καθώς ο apache22 δεν ανήκει στο βασικό σύστημα, δεν θα βρείτε κάτι για αυτόν στο /etc/defaults/rc.conf. Για να δείτε τι πρέπει να γράψετε στο /etc/rc.conf, έχετε κάποιες δυνατότητες:

  1. Διαβάστε το script που βρήκατε με τη more ή με κάποιο editor. Στις αρχικές γραμμές θα δείτε συνήθως κάτι σαν αυτό:
# Add the following lines to /etc/rc.conf to enable apache22
# apache22_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable apache22
  1. Εκτελέστε το script με την παράμετρο rcvar:
# /usr/local/etc/rc.d/apache22 rcvar
# apache22
$apache22_enable=NO
  1. Διαβάστε τις αντίστοιχες σελίδες βοήθειας (man pages) για το port που εγκαταστήσατε.

Αφού βάλετε την καταχώριση στο /etc/rc.conf:

apache22_enable="YES"

Η υπηρεσία θα ξεκινήσει αυτόματα στην επόμενη εκκίνηση. Μπορείτε φυσικά να την ξεκινήσετε και άμεσα, με το γνωστό χειροκίνητο τρόπο:

# /usr/local/etc/rc.d/apache22 start

ή αν προτιμάτε:

# service apache22 start

Να σημειώσουμε εδώ ότι η σειρά με την οποία θα γράψετε τις καταχωρίσεις τύπου enable στο /etc/rc.conf δεν έχει κάποια σημασία. Επίσης δεν σημαίνει ότι το σύστημα σας θα εκτελέσει τα αντίστοιχα scripts εκκίνησης με τη σειρά που τα βάλατε. Τα scripts θα εκτελεστούν με τη "σωστή" σειρά που εξασφαλίζει για παράδειγμα ότι μια υπηρεσία που χρειάζεται ενεργό το δίκτυο δεν θα ξεκινήσει πριν εκτελεστούν οι αντίστοιχες εντολές ενεργοποίησης δικτύου. Στην εισαγωγή αυτή δεν θα επεκταθούμε περισσότερο στο πως μπορούμε να δούμε ή να αλλάξουμε τη σειρά εκκίνησης (κάτι που ως επί το πλείστον δεν χρειάζεται), αλλά οι πιο… περίεργοι από εσάς μπορούν να διαβάσουν το man rcorder.

Περιληπτικά για το σύστημα εκκίνησης

Συνοψίζοντας, τόσο οι υπηρεσίες του βασικού συστήματος όσο και οι υπηρεσίες που εγκαθίστανται από τα ports έχουν καταχωρίσεις enable στο /etc/rc.conf. Διαφέρει όμως η θέση του script που τις ξεκινάει ή τις σταματάει:

  • Για υπηρεσίες του βασικού συστήματος, τα scripts βρίσκονται στον κατάλογο /etc/rc.d
  • Για υπηρεσίες που έχουν εγκατασταθεί μέσω ports, τα scripts βρίσκονται στον κατάλογο /usr/local/etc/rc.d
  • Παρόμοια, τα αρχεία ρυθμίσεων (.conf) των βασικών υπηρεσιών βρίσκονται στον κατάλογο /etc (ή σε κάποιο υποκατάλογο του) ενώ των πρόσθετων βρίσκονται στο /usr/local/etc (ή σε κάποιο υποκατάλογο του).
Πυρήνας και Αρθρώματα

Ο πυρήνας σε ένα λειτουργικό σύστημα αποτελεί το πλέον βασικό πρόγραμμα καθώς είναι αυτό που πρακτικά ελέγχει την λειτουργία όλων των άλλων προγραμμάτων του λειτουργικού αλλά και την επικοινωνία με το υλικό του υπολογιστή μας. Σε γενικές γραμμές, ο πυρήνας του FreeBSD είναι υπεύθυνος για τις παρακάτω λειτουργίες:

  • Διεργασίες: Κάθε πρόγραμμα που εκτελείται στο λειτουργικό μας δημιουργεί μια (τουλάχιστον) διεργασία. Τις διεργασίες μπορούμε να τις δούμε εύκολα με την εντολή ps ή την top. Ο πυρήνας είναι υπεύθυνος για τη δημιουργία, έλεγχο και τερματισμό των διεργασιών.
  • Σύστημα Αρχείων: Το σύστημα αρχείων του λειτουργικού ελέγχεται επίσης από τον πυρήνα. Στο FreeBSD το βασικό σύστημα είναι το UFS2, αλλά υποστηρίζεται επίσης το ZFS και άλλα συστήματα αρχείων (π.χ. FAT32). Όλα αυτά ανήκουν στην ευθύνη του πυρήνα. Προφανώς μπορούμε να έχουμε συστήματα αρχείων που να λειτουργούν μέσω προγραμμάτων χρήστη (π.χ. το NTFS υποστηρίζεται από το NTFS-3g) αλλά δεν έχουμε σε αυτά τις ίδιες δυνατότητες με τα εγγενώς υποστηριζόμενα συστήματα αρχείων.
  • Επικοινωνίες: Ο πυρήνας είναι υπεύθυνος για την επικοινωνία, είτε μεταξύ των διεργασιών μέσα στο μηχάνημα, είτε μέσω δικτύου.
  • Εκκίνηση: Ο πυρήνας είναι υπεύθυνος για την εκκίνηση του μηχανήματος, την αρχικοποίηση του επεξεργαστή (ή επεξεργαστών) και των συσκευών και τέλος την έναρξη της πρώτης διεργασίας (με αριθμό 1), της init η οποία και θα εκτελέσει τα τελικά scripts εκκίνησης που είδαμε στην προηγούμενη ενότητα.

Στο FreeBSD, ο πυρήνας βρίσκεται στον κατάλογο /boot/kernel και έχει το εξαιρετικά πρωτότυπο όνομα… kernel. Ο πυρήνας που έρχεται με το σύστημα μας έχει τον χαρακτηρισμό GENERIC. Αυτό απλά σημαίνει ότι έχει μεταγλωττιστεί με ένα συγκεκριμένο γενικό σετ χαρακτηριστικών (τα οποία μπορούμε να δούμε) για να καλύπτει τις περισσότερες περιπτώσεις χρήσης του συστήματος. Φυσικά, δεν είμαστε υποχρεωμένοι να χρησιμοποιήσουμε τον GENERIC, αφού μπορούμε να δημιουργήσουμε και να μεταγλωττίσουμε το δικό μας προσαρμοσμένο πυρήνα. Αυτό όμως δεν χρειάζεται να μας απασχολεί τώρα.

Στον ίδιο κατάλογο, /boot/kernel θα βρούμε και μια άλλη σειρά αρχείων με κατάληξη .ko, δηλ. kernel objects. Πρόκειται για τα modules ή αρθρώματα. Τα αρθρώματα είναι ένας εύκολος τρόπος να προσθέσουμε δυνατότητες σε ένα πυρήνα (π.χ. υποστήριξη μιας συσκευής) χωρίς να χρειαστεί να τον μεταγλωττίσουμε από την αρχή. Αντί να ενσωματώσουμε τον κώδικα για τη συσκευή μέσα στον πυρήνα, τον έχουμε στο module το οποίο μπορούμε να το φορτώσουμε στη μνήμη (συνήθως κατά την εκκίνηση) και να λειτουργεί σαν να ήταν μέσα στον πυρήνα.

Πολλά από τα modules που θα δείτε μέσα στον κατάλογο /boot/kernel δεν θα τα χρειαστείτε ποτέ. Ο ίδιος ο πυρήνας GENERIC έχει πολλές από αυτές τις συσκευές ήδη ενσωματωμένες. Αν προσπαθήσετε να φορτώσετε ένα module για μια συσκευή η οποία έχει ήδη υποστήριξη στον πυρήνα θα πάρετε ένα μήνυμα λάθους. Υπάρχουν όμως και συσκευές που… λάμπουν δια της απουσίας τους από τον πυρήνα GENERIC – όπως π.χ. οι κάρτες ήχου. Για να έχετε ήχο στο σύστημα σας θα πρέπει λοιπόν να βρείτε το κατάλληλο άρθρωμα και να το φορτώσετε. Μια διαδικασία που περιγράφεται φυσικά στο Κεφάλαιο 7 του Εγχειριδίου του FreeBSD. Μη βιάζεστε όμως, είναι κάτι που θα ξαναδούμε σε επόμενο άρθρο μας, στο desktop. Τι να κάνετε την κάρτα ήχου στο server;

Διαχείριση Αρθρωμάτων

Ας δούμε λίγο πως μπορούμε να φορτώσουμε ή να αποφορτώσουμε ένα άρθρωμα στον πυρήνα. Αλλά πρώτα πως μπορούμε να δούμε τι αρθρώματα είναι ήδη φορτωμένα. Στο μηχάνημα που μόλις εγκαταστήσαμε, δεν έχουμε κανένα άρθρωμα ακόμα. Μπορούμε να το δούμε εκτελώντας την εντολή:

# kldstat
 Id Refs Address            Size     Name
  1   42 0xffffffff80100000 9b4008   kernel

Όπως παρατηρείτε, ο ίδιος ο πυρήνας αναφέρεται ως άρθρωμα! Δεν υπάρχει ωστόσο κάτι άλλο φορτωμένο.

Φόρτωση Αρθρώματος atapicam

Αν εγκαταστήσατε – όπως σας ζητήσαμε – τα ports cdrtools και dvd+rw-tools, θα χρειαστείτε το άρθρωμα atapicam για να τα χρησιμοποιήσετε. Τα παραπάνω ports χρησιμοποιούνται για την εγγραφή σε CD και DVD (ναι, από την κονσόλα. Ξεχάστε τα γραφικά περιβάλλοντα επιτέλους!). Η διαδικασία προϋποθέτει ότι έχετε SCSI CD ή DVD recorder κάτι που δεν συμβαίνει στους περισσότερους από μας. Το άρθρωμα atapicam κάνει τις συσκευές τύπου ATAPI (IDE, SATA κλπ) να φαίνονται στο σύστημα μας ως συσκευές SCSI και να μπορούν να χρησιμοποιηθούν από τα παραπάνω προγράμματα.

Αν ψάξετε στον κατάλογο /boot/kernel θα βρείτε εύκολα το άρθρωμα:

# cd /boot/kernel
# ls atapi*
atapicam.ko atapicam.ko.symbols

Για να φορτώσουμε το άρθρωμα, χρησιμοποιούμε την εντολή kldload. Έπειτα μπορούμε ξανά να χρησιμοποιήσουμε την εντολή kldstat για να δούμε το αποτέλεσμα:

# kldload atapicam
... Μηνύματα από τη φόρτωση του module ...
# kldstat
 Id Refs Address            Size     Name
  1   42 0xffffffff80100000 9b4008   kernel
  2    1 0xffffffff80b24000 52d8     atapicam.ko

Για να αποφορτώσετε ένα άρθρωμα, χρησιμοποιήστε την εντολή kldunload:

# kldunload atapicam

Η αποφόρτωση δεν θα είναι δυνατή αν το άρθρωμα χρησιμοποιείτε τη δεδομένη στιγμή.

Φόρτωση Αρθρώματος Κατά την Εκκίνηση

Αν θέλετε το άρθρωμα να φορτώνεται αυτόματα στην εκκίνηση, ίσως φαντάζεστε ότι θα υπάρχει για τα αρθρώματα κάτι αντίστοιχο με το /etc/rc.conf για τις υπηρεσίες. Δεν έχετε πέσει έξω. Χρησιμοποιούμε όμως εδώ το αρχείο /boot/loader.conf. Τη δεδομένη στιγμή είναι άδειο, ανοίξτε το όμως με τον editor σας και γράψτε:

atapicam_load="YES"

Το atapicam θα φορτώνεται πλέον αυτόματα σε κάθε εκκίνηση του συστήματος μας. Όπως καταλάβατε, η όλη ιδέα είναι:

modulename_load="YES"

Το /boot/loader.conf χρησιμοποιείται και για άλλες ρυθμίσεις. Για να πάρετε μια ιδέα, δείτε το /boot/defaults/loader.conf (Άλλο ένα αρχείο που *δεν* αλλάζουμε). Για την ώρα αν θέλετε, προσθέστε και την παρακάτω γραμμή:

loader_logo="beastie"

Και θα έχετε μια ευχάριστη έκπληξη στην επόμενη εκκίνηση!

Αν θέλετε να μάθετε περισσότερα για το σύστημα εκκίνησης και τη λειτουργία του loader.conf, μπορείτε να διαβάσετε το αντίστοιχο κεφάλαιο στο Εγχειρίδιο του FreeBSD.

Τελικές Ρυθμίσεις

Έχοντας εγκαταστήσει τα βασικά προγράμματα για την κονσόλα μας, μπορούμε τώρα να κάνουμε τις τελικές μικρο-ρυθμίσεις στο σύστημα μας, μέχρι να αποφασίσουμε για τις υπόλοιπες εργασίες που θα αναλάβει. Τα προγράμματα που θα εγκαταστήσουμε από αυτό το σημείο και μετά, θα καθορίσουν αν το μηχάνημα μας θα γίνει desktop ή server (ή γιατί όχι, ένας συνδυασμός).

Ενεργοποίηση NTP

Σε όλα τα UNIX συστήματα, η τήρηση ακριβής ώρας είναι ιδιαίτερα σημαντική. Δεν είναι κάτι που θέλουμε να αφήσουμε στην τύχη και σίγουρα το hardware του PC δεν είναι και το πιο αξιόπιστο. Ευτυχώς για μας υπάρχουν ατομικά ρολόγια τα οποία μπορούν να μας βοηθήσουν να κρατάμε το ρολόι του υπολογιστή μας πάντα σε άψογο συγχρονισμό. Για να γίνει αυτό χρειαζόμαστε μια υπηρεσία που ονομάζεται NTP. Ενεργοποιήστε την, προσθέτοντας την παρακάτω γραμμή στο /etc/rc.conf:

ntpd_enable="YES"

Για να μην περιμένετε την επόμενη επανεκκίνηση του μηχανήματος, ενεργοποιήστε την υπηρεσία άμεσα:

# service ntpd start

Η συμπεριφορά της υπηρεσίας ορίζεται από το αρχείο /etc/ntp.conf, αλλά στις νέες εκδόσεις του FreeBSD δεν θα χρειαστεί να κάνετε κάποια αλλαγή. Οι προεπιλεγμένες ρυθμίσεις λειτουργούν μια χαρά.

Μια Ματιά στις Ρυθμίσεις του SSH

Αν και το ssh το ενεργοποιήσαμε ήδη από τη φάση της εγκατάστασης, δεν κάναμε στο μεταξύ καμιά άλλη αλλαγή στις ρυθμίσεις του. Σε γενικές γραμμές οι προεπιλεγμένες ρυθμίσεις του SSH είναι επαρκείς, αλλά δεν βλάπτει να ρίξουμε μια ματιά στο αρχείο ρυθμίσεων του. Το οποίο είναι φυσικά το /etc/ssh/sshd_config.

Μπορείτε να αλλάξετε την καταχώριση Banner από None σε κάποιο αρχείο που θα περιέχει ένα μήνυμα. Το μήνυμα αυτό εμφανίζεται πριν την διαδικασία login και συνήθως είναι μια προειδοποίηση προς επίδοξους… απρόσκλητους χρήστες:

Banner /etc/issue.ssh

Δημιουργήστε και το αρχείο /etc/issue.ssh με περιεχόμενο σαν το παρακάτω:

===================================
Welcome to deltahacker.dyndns.org
Don't even *THINK* to attempt login
if you don't have a valid account
here. 99 years of bad luck will
follow you!
===================================

Από προεπιλογή, ο ssh server δεν επιτρέπει τη σύνδεση του root χρήστη, για λόγους ασφαλείας. Αυτό είναι πολύ καλό, αλλά ίσως θέλετε να το περιορίσετε περισσότερο, ορίζοντας εσείς συγκεκριμένους λογαριασμούς στους οποίους θα επιτρέπεται η σύνδεση. Για την περίπτωση αυτή, χρησιμοποιήστε την καταχώριση AllowUsers:

AllowUsers user manolis nikos

Απλώς γράψτε τα ονόματα των λογαριασμών στους οποίους θα επιτρέπεται η σύνδεση, χωρισμένα μεταξύ τους με κενά διαστήματα.

Μπορείτε επίσης να αλλάξετε το Port στο οποίο ακούει ο ssh server. Το προεπιλεγμένο είναι φυσικά το επίσημο 22, αλλά αν βάλετε κάποιο άλλο θα γλυτώσετε από τα πολλά bot που συνέχεια σκανάρουν διευθύνσεις για να εντοπίσουν ssh servers. Αλλάξτε το στη γραμμή port, βγάζοντας και το # για να ενεργοποιηθεί:

Port 2222

Βέβαια πλέον θα πρέπει να συνδέεστε γράφοντας:

ssh -p2222 your.hostname.or.ip

Για να ισχύσουν οι αλλαγές που κάνατε, θα πρέπει να επανεκκινήσετε τον ssh server. Είναι ασφαλές να το κάνετε ακόμα και αν είστε συνδεδεμένος μέσω ssh! Η σύνδεση σας δεν θα διακοπεί. Πριν όμως την κλείσετε, δοκιμάστε από ένα άλλο τερματικό ότι μπορείτε να συνδεθείτε και με τις νέες ρυθμίσεις. Για την επανεκκίνηση του ssh φυσικά θα γράψετε:

# service sshd restart
Φτιάξτε το Δικό Σας Μήνυμα της Ημέρας (MOTD)

Το μήνυμα της ημέρας ή MOTD, Message of the Day, είναι το κείμενο που βλέπει ο χρήστης στην κονσόλα μόλις κάνει login. Ναι, είναι εκείνο το κατεβατό που είδατε την πρώτη φορά που κάνατε login στο σύστημα. Δεν χρειάζεται ωστόσο να βλέπετε αυτό που έβαλαν οι FreeBSD developers. Το μηχάνημα ανήκει πλέον σε σας, το ίδιο και το MOTD. Ανοίξτε λοιπόν το /etc/motd με τον editor σας, σβήστε το περιεχόμενο και γράψτε το δικό σας. Σε συνδυασμό με το πρόγραμμα figlet που εγκαταστήσαμε από τα ports μπορείτε να φτιάξετε κάτι ωραίο. Δείτε για παράδειγμα το μήνυμα στον joshua.FreeBSDgr.org:

Συνεχίστε τώρα διαβάζοντας το Εγχειρίδιο του FreeBSD και πειραματιζόμενοι στο νέο σας σύστημα. Σε επόμενα άρθρα μας θα δούμε πως μπορείτε αυτό το βασικό σύστημα να το μετατρέψετε σε ένα ισχυρό server ή σε ένα… διασκεδαστικό desktop. Until then, May the (FreeBSD) /usr/src be with you!

24 Responses to “Εγκατάσταση FreeBSD – Μέρος 2ο”

  1. giwrg98 | 10/09/2011 at 20:17

    Τελικά θα υπάρξει και τρίτο μέρος για ρύθμιση του Xorg;

  2. sonic2000gr | 10/09/2011 at 21:28

    Ναι θα υπάρξει φυσικά! Στο μεταξύ βέβαια μπορείς να διαβάσεις το κεφάλαιο 5 στο FreeBSD Handbook: http://www.freebsd.org/doc/el/books/handbook/x11.html

    • giwrg98 | 11/09/2011 at 00:03

      Το έχω διαβάσει :D αλλά για κάποιο λόγο μου έλεγε διάφορα και δεν μου πετύχαινε… Αλλά τώρα θα το στήσω το μηχάνημα!!!

    • subZraw | 11/09/2011 at 11:11

      Ααα, να τα λέμε: Άλλο το official Handbook, άλλο οι οδηγοί του @sonic2000gr! (We want the later :D)

      • sonic2000gr | 11/09/2011 at 12:44

        Haha, ok θα αρχίσω να το γράφω λοιπόν…
        Θα φτιάξω και μια σειρά πακέτα για το vbox image :)

        • subZraw | 11/09/2011 at 13:19

          Χεχε, αλίμονο, κανείς δεν είπε ότι πρέπει ν’ αρχίσεις να το γράφεις – τουλάχιστον όχι από τώρα! Για τώρα, αν δεν απατώμαι, μένει το 2ο μέρος του πωρωτικού θέματος που ξεκινάς στο τεύχος Οκτωβρίου :D

          • sonic2000gr | 11/09/2011 at 15:22

            Χαχά διακρίνω ένα άγχος. Μη ανησυχείς θα το έχεις αύριο απόγευμα :)

          • subZraw | 11/09/2011 at 17:13

            @sonic2000gr Κανένα άγχος! Απλά ενημερώνω τους παρευρισκόμενους για ό,τι έρχεται ;)

  3. ckar | 21/09/2011 at 03:59

    Περιμένουμε τη ρύθμιση για το γραφικό περιβάλλον! Πολύ καλη δουλειά

  4. MINDoSOFT | 27/09/2011 at 14:52

    Πολύ ωραίο άρθρο! Μετά από καιρό που ασχολούμαι με linux διανομές βλέπω και κάτι διαφορετικό και μ’αρέσει. Μου φαίνετε πολύ πιο κοντά στον developer το FreeBSD.
    Ανυπομονώ για τα επόμενα άρθρα σου sonic2000gr !

  5. Amazed | 14/11/2011 at 21:34

    Μετά από 2 + μήνες δεν είναι ώρα για το 3ο μέρος??

    • subZraw | 15/11/2011 at 08:26

      Μη μου καθυστερείς τον sonic2000gr, παρακαλώ :) Αυτόν τον καιρό είναι απασχολημένος με mini series που ετοιμάζει για το περιοδικό. Το πρώτο μέρος θα δημοσιευτεί στο τεύχος Δεκεμβρίου!

  6. sonic2000gr | 15/11/2011 at 08:59

    Ακριβώς! Λίγη υπομονή παρακαλώ. Επίσης όποιος βιάζεται να εγκαταστήσει γραφικό περιβάλλον, it’s all here:
    http://www.freebsd.org/doc/el/books/handbook/x11.html

  7. Amazed | 16/11/2011 at 12:14

    ok Δεκτό. Εξάλου έχουμε βάλει γραφικό, αλλά όπως γράφει και ο subzraw “Ααα, να τα λέμε: Άλλο το official Handbook, άλλο οι οδηγοί του @sonic2000gr! (We want the later :D)” Καλημέρα :D

  8. giwrg98 | 04/02/2012 at 21:09

    Σε VirtualBox, πώς μπορώ να κάνω copy paste; Έχω εγκαταστήσει τα Guest Additions αλλά όταν πατάω Shift + Insrt ή και τα δύο κουμπιά του ποντικιού, κάνει paste μόνο πράγματα μέσα από την ίδια την κονσόλα :/

    • sonic2000gr | 04/02/2012 at 22:31

      Άδικα ζορίζεσαι. Αν έχεις ενεργοποιήσει το ssh, απλώς εγκατέστησε το Putty* (αν το host είναι windows), συνδέσου μέσω ssh με το Virtual και κάνε paste στο Putty με ένα απλό δεξί κλικ.

      http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

    • giwrg98 | 05/02/2012 at 11:37

      Για host os linux τι γίνεται;
      Επίσης άλλαξα το loader.conf και του εβαλα το loader logo=”beastie” αλλά δεν είδα καμία αλλαγή :/ Μετά το beastie το άλλαξα σε beastiebw αλλά και πάλι δεν είδα αλλαγή, έχω κάνει καμιά γκάφα με το σύστημα;

      • sonic2000gr | 05/02/2012 at 12:47

        Για linux το ίδιο, απλά δεν χρειάζεσαι το putty γιατί το ssh το έχεις ήδη στο terminal :)
        To loader.conf αλλάζει την εικόνα που φαίνεται δεξιά στην οθόνη του loader. Δεν θα δεις κάτι αν δεν κάνεις επανεκκίνηση.

        • giwrg98 | 05/02/2012 at 13:45

          Έκανα επανεκκίνηση και μου δείχνει το σήμα του BSD όπως και στο πρώτο πρώτο boot :/

          • Dracmon | 05/02/2012 at 18:40

            Ουσιαστικα αμα το εχεις κανει σε virtual machine ειναι σαν να μην εχεις βγαλει το cd δηλαδη στο storage πηγαινε και απενεργοποιησε το.Διαφορετικα αμα δεν ειναι σε virtual machine ή βγαλε το cd ή σταματα το mount.Μετα ξεκινησε το BSD ξανα λογικα θα μπει

          • giwrg98 | 05/02/2012 at 18:55

            Το έχω κάνει ήδη :D

  9. giwrg98 | 11/04/2012 at 18:12

    Προσπαθώ να εγκαταστήδω Gnome, και μου βγάζει μετά από πολύ ώρα αυτό: http://pastebin.com/ezbnCDmg
    Στις ρυθμίσεις του devel/apr1 είχα κάνει disable το DEVRANDOM αλλά τώρα που ακολούθησα αυτές τις οδηγίες δεν έγινε τίποτα ( http://freebsd.1045724.n5.nabble.com/Apache22-instalation-ends-with-error-td5480339.html ). Τι να κάνω;

    • sonic2000gr | 11/04/2012 at 20:15

      Δύσκολο να σου πω σίγουρα. Η εγκατάσταση του Gnome θυμάμαι ότι εγκαθιστά τον apache από μόνη της. Μπορείς να εγκαταστήσεις το ports-mgmt/pkg_rmleaves να το τρέξεις και να κάνεις απεγκατάσταση τον apache μαζί με όλα τα dependencies (και το apr) και να αφήσεις το gnome να στα βάλει όλα. Αλλιώς πρέπει να δω πολλά πράγματα για να σου πω…

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων