3. Μεταγλώττιση της Έκδοσης
Προηγ |  | Επόμενο

## 3. Μεταγλώττιση της Έκδοσης

Οι &#x201C;εκδόσεις&#x201D; του FreeBSD μπορούν να μεταγλωττιστούν από οποιονδήποτε έχει ένα σχετικά γρήγορο μηχάνημα και πρόσβαση στο repository του πηγαίου κώδικα. (Όλοι έχουν αυτή τη δυνατότητα, αφού παρέχουμε πρόσβαση μέσω ανώνυμου CVS! Δείτε το Εγχειρίδιο του FreeBSD για περισσότερες λεπτομέρειες.) Η μόνη ειδική απαίτηση είναι να υπάρχει υποστήριξη στον πυρήνα σας για την συσκευή vn(4). (Στο -CURRENT, αυτή η συσκευή έχει αντικατασταθεί από την νέα συσκευή δίσκου βασισμένου σε μνήμη md(4).) Αν η συσκευή δεν είναι ενσωματωμένη στον πυρήνα σας, τότε ο κατάλληλος οδηγός θα φορτωθεί αυτόματα όταν εκτελεστεί η εντολή vnconfig(8) κατά τη διάρκεια της φάσης ετοιμασίας του μέσου εκκίνησης. Όλα τα εργαλεία που χρειάζονται για να μεταγλωττίσετε μια έκδοση είναι διαθέσιμα σε μορφή πηγαίου κώδικα στον κατάλογο `src/release`. Αυτά τα εργαλεία έχουν ως σκοπό να παρέχουν ότι χρειάζεται για να χτίζονται οι εκδόσεις του FreeBSD με ένα συνεπή και συγκεκριμένο τρόπο. Μια πλήρης έκδοση μπορεί να μεταγλωττιστεί χρησιμοποιώντας αυτά τα εργαλεία με μια και μόνο εντολή, συμπεριλαμβανομένης και της δημιουργίας ενός ISO αρχείου κατάλληλο για να καεί σε CDROM, οι δισκέττες εκκίνησης, καθώς και ο κατάλληλος εγκατάστασης μέσω FTP. Αυτή η εντολή είναι φυσική η `make release`.

### 3.1. Η εντολή `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) κορμού. Οι εκδόσεις που φτιάχνονται από αυτόν τον κορμό, συνήθως αναφέρονται σαν &#x201C;-CURRENT snapshots&#x201D;.

Υπάρχουν και πολλές άλλες μεταβλητές που μπορούν να χρησιμοποιηθούν για να παραμετροποιήσετε την έκδοσή σας. Οι πιο πολλές από αυτές τις μεταβλητές περιγράφονται στην κορυφή του αρχείου `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` που χρησιμοποιείται για να μεταγλωττίζονται οι εκδόσεις μπορεί να χωριστεί σε αρκετά ξεχωριστά μεταξύ τους βήματα.

- Δημιουργία ενός καθαρού περιβάλλοντος σε μια ξεχωριστή ιεραρχία καταλόγων με την εντολή &#x201C;`make `installworld``&#x201D;.

- Εξαγωγή από το CVS μιας καινούριας έκδοσης του πηγαίου κώδικα του συστήματος, της τεκμηρίωσης και των ports μέσα στην ιεραρχία καταλόγων μεταγλώττισης της έκδοσης.

- Ρυθμίσεις των αρχείων στον κατάλογο `/etc` και `/dev` μέσα στο περιβάλλον chroot.

- Εκτέλεση της εντολής `chroot` μέσα στην ιεραρχία καταλόγων που ετοιμάστηκε, για να μην μπορεί το εξωτερικό περιβάλλον να επηρεάσει τη μεταγλώττιση της έκδοσης.

- Εκτέλεση της εντολής `make world` μέσα στο περιβάλλον chroot.

- Μεταγλώττιση των εκτελέσιμων που είναι σχετικά με το σύστημα Kerberos.

- Μεταγλώττιση του πυρήνα `GENERIC`.

- Δημιουργία ενός τελικού καταλόγου στον οποίο θα μεταγλωττιστούν και θα αποθηκευθούν οι εκτελέσιμες μορφές των τελικών πακέτων.

- Μεταγλώττιση και εγκατάσταση των εργαλείων που χρειάζονται για την προετοιμασία της έκδοσης και τη μετατροπή της τεκμηρίωσης από τον πηγαίο κώδικα (SGML) σε html και αρχεία κειμένου που θα συνοδεύουν την έκδοση.

- Μετατροπή και εγκατάσταση της τεκμηρίωσης (εγχειρίδια χρήστη, εισαγωγικά κείμενα, σημειώσεις έκδοσης, λίστες συμβατότηταςς υλικού, κλπ.)

- Μεταγλώττιση των &#x201C;συμπιεσμένων&#x201D; (crunched) εκτελέσιμων που θα χρησιμοποιηθούν στις δισκέττες εγκατάστασης.

- Δημιουργία των πακέτων της εγκατάστασης και των πακέτων πηγαίου κώδικα.

- Δημιουργία των μέσων εκκίνησης και της δισκέττας &#x201C;fixit&#x201D;.

- Δημιουργία της ιεραρχίας καταλόγων για την εγκατάσταση μέσω FTP.

- (προαιρετικά) Δημιουργία των ISO αρχείων για μέσα CDROM/DVD media.

Για περισσότερες πληροφορίες σχετικά με την διαδικασία δημιουργίας μιας έκδοσης, δείτε την σελίδα τεκμηρίωσης release(7).

### 3.2. Μεταγλώττιση των XFree86

Το γραφικό περιβάλλον 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` για βελτιστοποίηση των εκτελέσιμων για κάποιο συγκεκριμένο επεξεργαστή.

### 3.3. Προγράμματα Τρίτων (&#x201C;ports&#x201D;)

Η Συλλογή των Ports του FreeBSD είναι μια συλλογή με περισσότερα από 24,000 προγράμματα από τρίτους, που είναι διαθέσιμα για FreeBSD. Οι Ομάδα Διαχείρισης των Ports `<portmgr@FreeBSD.org>` είναι υπεύθυνοι για την συντήρηση ενός δέντρου από πηγαίο κώδικα για τα ports, που μπορεί να χρησιμοποιηθεί για να δημιουργηθούν τα πακέτα με τα προγράμματα που συνοδεύουν τις επίσημες εκδόσεις του FreeBSD.

Η διαδικασία συντήρησης της συλλογής των ports είναι κάτι που δεν μπορούμε να καλύψουμε εδώ. Ένα ξεχωριστό άρθρο, με τίτλο Η Οργάνωση Έκδοσης των Πακέτων Λογισμικού από Τρίτους, καλύπτει αυτό το θέμα.

### 3.4. Αρχεία ISO της Έκδοσης

Ξεκινώντας με την έκδοση 4.4 του FreeBSD, η Ομάδα Ανάπτυξης του FreeBSD αποφάσισε να διανέμει και τα τέσσερα ISO αρχεία που πρώτα πουλούσαν οι εταιρείες BSDi/Wind River Systems/FreeBSD Mall στις &#x201C;επίσημες&#x201D; διανομές CDROM που έκαναν. Κάθε ένα από τα τέσσερα ISO αρχεία πρέπει να περιέχει ένα αρχείο `README.TXT` που περιγράφει τα περιεχόμενα του δίσκου, κι ένα αρχείο `CDROM.INF` που περιέχει μετα-πληροφορίες για να μπορεί το πρόγραμμα sysinstall(8) να ελέγξει και να χρησιμοποιήσει αυτό το δίσκο, καθώς κι ένα αρχείο `filename.txt` που παρέχει μια λίστα αρχείων του CDROM. Αυτή η λίστα μπορεί να δημιουργηθεί πολύ απλά, ως εξής:

/stage/cdrom`#` `find . -type f | sed -e 's/^\.\///' | sort > filename.txt`

Οι συγκεκριμένες απαιτήσεις για κάθε ένα από αυτά τα CD περιγράφονται παρακάτω:

#### 3.4.1. Δίσκος 1

Ο πρώτος δίσκος είναι σχεδόν αποκλειστικά αποτέλεσμα της εντολής `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` θα χρειαστεί να ενημερωθούν.

#### 3.4.2. Δίσκος 2

Ο δεύτερος δίσκος είναι επίσης αποτέλεσμα της εντολής `make release` κατά ένα μεγάλο μέρος. Αυτός ο δίσκος περιέχει ένα &#x201C;live filesystem&#x201D; που μπορεί να χρησιμοποιηθεί από το sysinstall(8) για να εξεταστούν προβλήματα σε μια εγκατάσταση του FreeBSD. Κι αυτός ο δίσκος πρέπει να είναι bootable. Θα πρέπει επίσης να περιέχει ένα συμπιεσμένο αντίγραφο του CVS repository στον κατάλογο `CVSROOT` και δείγματα από εμπορικά προγράμματα στον κατάλογο `commerce`.

#### 3.4.3. Δίσκοι 3 και 4

Οι υπόλοιποι δυο δίσκοι περιέχουν επιπρόσθετα πακέτα λογισμικού για το FreeBSD. Τα πακέτα θα πρέπει να είναι ομαδοποιημένα, έτσι ώστε κάθε πακέτο να είναι στον ίδιο δίσκο με όλα τα πακέτα από τα οποία εξαρτάται για να εγκατασταθεί και να τρέξει. Περισσότερες πληροφορίες για την δημιουργία αυτών των δίσκων αναφέρονται στο άρθρο Η Οργάνωση Έκδοσης των Πακέτων Λογισμικού από Τρίτους.

Προηγ |  | Επόμενο
2. Η Διαδικασία Δημιουργίας μιας Έκδοσης | Αρχή | 4. Διανομή των Εκδόσεων

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.