Οι «εκδόσεις» του FreeBSD μπορούν να μεταγλωττιστούν από οποιονδήποτε έχει ένα σχετικά γρήγορο μηχάνημα και πρόσβαση στο repository του πηγαίου κώδικα. (Όλοι έχουν αυτή τη δυνατότητα, αφού παρέχουμε πρόσβαση μέσω ανώνυμου CVS! Δείτε το Εγχειρίδιο του FreeBSD για περισσότερες λεπτομέρειες.) Η μόνη ειδική απαίτηση είναι να υπάρχει υποστήριξη στον πυρήνα σας για την συσκευή vn(4). (Στο -CURRENT, αυτή η συσκευή έχει αντικατασταθεί από την νέα συσκευή δίσκου βασισμένου σε μνήμη md(4).) Αν η συσκευή δεν είναι ενσωματωμένη στον πυρήνα σας, τότε ο κατάλληλος οδηγός θα φορτωθεί αυτόματα όταν εκτελεστεί η εντολή vnconfig(8) κατά τη διάρκεια της φάσης ετοιμασίας του μέσου εκκίνησης. Όλα τα εργαλεία που χρειάζονται για να μεταγλωττίσετε μια έκδοση είναι διαθέσιμα σε μορφή πηγαίου κώδικα στον κατάλογο src/release. Αυτά τα εργαλεία έχουν ως σκοπό να παρέχουν ότι χρειάζεται για να χτίζονται οι εκδόσεις του FreeBSD με ένα συνεπή και συγκεκριμένο τρόπο. Μια πλήρης έκδοση μπορεί να μεταγλωττιστεί χρησιμοποιώντας αυτά τα εργαλεία με μια και μόνο εντολή, συμπεριλαμβανομένης και της δημιουργίας ενός ISO αρχείου κατάλληλο για να καεί σε CDROM, οι δισκέττες εκκίνησης, καθώς και ο κατάλληλος εγκατάστασης μέσω FTP. Αυτή η εντολή είναι φυσική η make release.
Για να μεταγλωττίσετε επιτυχώς μια έκδοση, πρέπει πρώτα να υπάρχουν τα κατάλληλα αρχεία μέσα στον κατάλογο /usr/obj. Μπορείτε να τα δημιουργήσετε είτε με την εντολή make world ή απλά make buildworld. Για να πετύχει επίσης η μεταγλώττιση της έκδοσης πρέπει να δώσετε τις κατάλληλες τιμές και σε κάποιες μεταβλητές:
CHROOTDIR - Ο κατάλογος που θα χρησιμοποιηθεί σαν περιβάλλον chroot για όλη την μεταγλώττιση της έκδοσης.
BUILDNAME - Το όνομα της έκδοσης που θα μεταγλωττίσετε.
CVSROOT - Ο κατάλογος στον οποίο βρίσκεται το CVS repository.
RELEASETAG - Η ετικέτα CVS που αντιστοιχεί στην έκδοση την οποία θέλετε να μεταγλωττίσετε.
Αν δεν έχετε ήδη πρόσβαση σε κάποιο τοπικό CVS repository με τον κώδικα του FreeBSD, μπορείτε πάντα να φτιάξετε το δικό σας τοπικό CVS mirror με το CVSup. Υπάρχει ένα supfile, στο αρχείο /usr/share/examples/cvsup/cvs-supfile, το οποίο μπορείτε να χρησιμοποιήσετε για να αντιγράψετε το CVS repository του FreeBSD στο δικό σας τοπικό mirrror.
Αν παραλείψετε την ετικέτα RELEASETAG, τότε θα μεταγλωττιστεί μια πλήρης έκδοση από την κορυφή του HEAD (δηλ. του -CURRENT) κορμού. Οι εκδόσεις που φτιάχνονται από αυτόν τον κορμό, συνήθως αναφέρονται σαν «-CURRENT snapshots».
Υπάρχουν και πολλές άλλες μεταβλητές που μπορούν να χρησιμοποιηθούν για να παραμετροποιήσετε την έκδοσή σας. Οι πιο πολλές από αυτές τις μεταβλητές περιγράφονται στην κορυφή του αρχείου src/release/Makefile. Η ακριβής εντολή που χρησιμοποιήθηκε για να φτιαχτεί η επίσημη έκδοση 4.7 του FreeBSD (x86 πλατφόρμα) ήταν:
make release CHROOTDIR=/local3/release \ BUILDNAME=4.7-RELEASE \ CVSROOT=/host/cvs/usr/home/ncvs \ RELEASETAG=RELENG_4_7_0_RELEASE
Το Makefile που χρησιμοποιείται για να μεταγλωττίζονται οι εκδόσεις μπορεί να χωριστεί σε αρκετά ξεχωριστά μεταξύ τους βήματα.
Δημιουργία ενός καθαρού περιβάλλοντος σε μια ξεχωριστή ιεραρχία καταλόγων με την εντολή «make installworld».
Εξαγωγή από το CVS μιας καινούριας έκδοσης του πηγαίου κώδικα του συστήματος, της τεκμηρίωσης και των ports μέσα στην ιεραρχία καταλόγων μεταγλώττισης της έκδοσης.
Ρυθμίσεις των αρχείων στον κατάλογο /etc και /dev μέσα στο περιβάλλον chroot.
Εκτέλεση της εντολής chroot μέσα στην ιεραρχία καταλόγων που ετοιμάστηκε, για να μην μπορεί το εξωτερικό περιβάλλον να επηρεάσει τη μεταγλώττιση της έκδοσης.
Εκτέλεση της εντολής make world μέσα στο περιβάλλον chroot.
Μεταγλώττιση των εκτελέσιμων που είναι σχετικά με το σύστημα Kerberos.
Μεταγλώττιση του πυρήνα GENERIC.
Δημιουργία ενός τελικού καταλόγου στον οποίο θα μεταγλωττιστούν και θα αποθηκευθούν οι εκτελέσιμες μορφές των τελικών πακέτων.
Μεταγλώττιση και εγκατάσταση των εργαλείων που χρειάζονται για την προετοιμασία της έκδοσης και τη μετατροπή της τεκμηρίωσης από τον πηγαίο κώδικα (SGML) σε html και αρχεία κειμένου που θα συνοδεύουν την έκδοση.
Μετατροπή και εγκατάσταση της τεκμηρίωσης (εγχειρίδια χρήστη, εισαγωγικά κείμενα, σημειώσεις έκδοσης, λίστες συμβατότηταςς υλικού, κλπ.)
Μεταγλώττιση των «συμπιεσμένων» (crunched) εκτελέσιμων που θα χρησιμοποιηθούν στις δισκέττες εγκατάστασης.
Δημιουργία των πακέτων της εγκατάστασης και των πακέτων πηγαίου κώδικα.
Δημιουργία των μέσων εκκίνησης και της δισκέττας «fixit».
Δημιουργία της ιεραρχίας καταλόγων για την εγκατάσταση μέσω FTP.
(προαιρετικά) Δημιουργία των ISO αρχείων για μέσα CDROM/DVD media.
Για περισσότερες πληροφορίες σχετικά με την διαδικασία δημιουργίας μιας έκδοσης, δείτε την σελίδα τεκμηρίωσης release(7).
Το γραφικό περιβάλλον XFree86 είναι ένα σημαντικό κομμάτι κάθε έκδοσης για πολλούς χρήστες που θέλουν το FreeBSD για σταθμούς εργασίας. Πριν την έκδοση 4.6-RELEASE του FreeBSD, οι επίσημες εκδόσεις του FreeBSD χρησιμοποιούσαν την έκδοση 3.X των XFree86. Ο πιο εύκολος τρόπος να μεταγλωττίσετε αυτές τις εκδόσεις είναι να χρησιμοποιήσετε το πρόγραμμα src/release/scripts/X11/build_x.sh. Αυτό το πρόγραμμα απαιτεί να είναι ήδη στημένα στο σύστημά σας τόσο το περιβάλλον XFree86 όσο και η γλώσσα Tcl/Tk. Μετά την μεταγλώττιση των κατάλληλων X servers, το πρόγραμμα θα πακετάρει όλα τα αρχεία σε συλλογές αρχείων που περιμένει να βρει το sysinstall(8) μέσα στον κατάλογο XF86336 στο μέσο εγκατάστασης.
Ξεκινώντας με την έκδοση 4.6-RELEASE του FreeBSD, το sysinstall(8) εγκαθιστά την έκδοση 4.X των XFree86, σαν κανονικά πακέτα. Αυτά μπορεί να είναι είτε τα πακέτα που δημιούργησε το cluster των ports ή οποιαδήποτε άλλα πακέτα που έχουν δημιουργηθεί από ένα ports tree με την κατάλληλη ετικέτα.
Σημείωση: Είναι πολύ σημαντικό να αφαιρέσετε από το αρχείο /etc/make.conf οποιεσδήποτε τοπικές ρυθμίσεις έχετε κάνει. Για παράδειγμα, δεν είναι καλή ιδέα να διανέμετε εκτελέσιμα που έχουν μεταγλωττιστεί σε κάποιο συγκεκριμένο σύστημα με ορισμένη την τιμή της μεταβλητής
CPUTYPE
για βελτιστοποίηση των εκτελέσιμων για κάποιο συγκεκριμένο επεξεργαστή.
Η Συλλογή των Ports του
FreeBSD είναι μια συλλογή με περισσότερα από 24,000 προγράμματα από τρίτους, που
είναι διαθέσιμα για FreeBSD. Οι Ομάδα Διαχείρισης των Ports <portmgr@FreeBSD.org>
είναι υπεύθυνοι για
την συντήρηση ενός δέντρου από πηγαίο κώδικα για τα ports, που μπορεί να χρησιμοποιηθεί
για να δημιουργηθούν τα πακέτα με τα προγράμματα που συνοδεύουν τις επίσημες εκδόσεις του
FreeBSD.
Η διαδικασία συντήρησης της συλλογής των ports είναι κάτι που δεν μπορούμε να καλύψουμε εδώ. Ένα ξεχωριστό άρθρο, με τίτλο Η Οργάνωση Έκδοσης των Πακέτων Λογισμικού από Τρίτους, καλύπτει αυτό το θέμα.
Ξεκινώντας με την έκδοση 4.4 του FreeBSD, η Ομάδα Ανάπτυξης του FreeBSD αποφάσισε να διανέμει και τα τέσσερα ISO αρχεία που πρώτα πουλούσαν οι εταιρείες BSDi/Wind River Systems/FreeBSD Mall στις «επίσημες» διανομές CDROM που έκαναν. Κάθε ένα από τα τέσσερα ISO αρχεία πρέπει να περιέχει ένα αρχείο README.TXT που περιγράφει τα περιεχόμενα του δίσκου, κι ένα αρχείο CDROM.INF που περιέχει μετα-πληροφορίες για να μπορεί το πρόγραμμα sysinstall(8) να ελέγξει και να χρησιμοποιήσει αυτό το δίσκο, καθώς κι ένα αρχείο filename.txt που παρέχει μια λίστα αρχείων του CDROM. Αυτή η λίστα μπορεί να δημιουργηθεί πολύ απλά, ως εξής:
/stage/cdrom# find . -type f | sed -e 's/^\.\///' | sort > filename.txt
Οι συγκεκριμένες απαιτήσεις για κάθε ένα από αυτά τα CD περιγράφονται παρακάτω:
Ο πρώτος δίσκος είναι σχεδόν αποκλειστικά αποτέλεσμα της εντολής make release. Οι μόνες αλλαγές που πρέπει να γίνουν στον κατάλογο disc1 είναι η προσθήκη του κατάλογου tools, των XFree86, και όσο το δυνατόν περισσότερων πακέτων μπορούν να χωρέσουν στο δίσκο. Ο κατάλογος tools περιέχει εργαλεία που επιτρέπουν σε χρήστες άλλων λειτουργικών συστημάτων να φτιάξουν τις δισκέττες εκκίνησης. Αυτός ο πρώτος δίσκος πρέπει να φτιάχνεται bootable έτσι ώστε να μπορούν οι χρήστες των μοντέρνων υπολογιστών να αποφεύγουν το στάδιο δημιουργίας των δισκεττών εκκίνησης.
Αν μια διαφορετική έκδοση των XFree86 θα διανέμεται με την έκδοση αυτή, πρέπει να ενημερωθεί το πρόγραμμα sysinstall(8) για την νέα θέση και οι οδηγίες εγκατάστασης. Ο σχετικός κώδικας υπάρχει στον κατάλογο src/release/sysinstall στον -STABLE κορμό ή στον κατάλογο src/usr.sbin/sysinstall στον -CURRENT κορμό. Συγκεκριμένα, τα αρχεία dist.c, menus.c, και config.c θα χρειαστεί να ενημερωθούν.
Ο δεύτερος δίσκος είναι επίσης αποτέλεσμα της εντολής make release κατά ένα μεγάλο μέρος. Αυτός ο δίσκος περιέχει ένα «live filesystem» που μπορεί να χρησιμοποιηθεί από το sysinstall(8) για να εξεταστούν προβλήματα σε μια εγκατάσταση του FreeBSD. Κι αυτός ο δίσκος πρέπει να είναι bootable. Θα πρέπει επίσης να περιέχει ένα συμπιεσμένο αντίγραφο του CVS repository στον κατάλογο CVSROOT και δείγματα από εμπορικά προγράμματα στον κατάλογο commerce.
Οι υπόλοιποι δυο δίσκοι περιέχουν επιπρόσθετα πακέτα λογισμικού για το FreeBSD. Τα πακέτα θα πρέπει να είναι ομαδοποιημένα, έτσι ώστε κάθε πακέτο να είναι στον ίδιο δίσκο με όλα τα πακέτα από τα οποία εξαρτάται για να εγκατασταθεί και να τρέξει. Περισσότερες πληροφορίες για την δημιουργία αυτών των δίσκων αναφέρονται στο άρθρο Η Οργάνωση Έκδοσης των Πακέτων Λογισμικού από Τρίτους.
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.