

Η Οργάνωση των Εκδόσεων του FreeBSD


Murray Stokely

<murray@FreeBSD.org>
          
          
$FreeBSD: release/8.4.0/el_GR.ISO8859-7/articles/releng/article.xml 39632 2012-
10-01 11:56:00Z gabor $
$FreeBSD: release/8.4.0/el_GR.ISO8859-7/articles/releng/article.xml 39632 2012-
10-01 11:56:00Z gabor $
Αυτό το άρθρο περιγράφει την αντιμετώπιση και οργάνωση της ομάδας ανάπτυξης του
FreeBSD, όσον αφορά στην προετοιμασία ποιοτικών εκδόσεων του Λειτουργικού
Συστήματος FreeBSD. Εξηγεί με λεπτομέρεια την μεθοδολογία που χρησιμοποιείται
για τις επίσημες εκδόσεις του FreeBSD και περιγράφει τα εργαλεία που είναι
διαθέσιμα σε όσους ενδιαφέρονται να παράγουν παραμετροποιημένες εκδόσεις του
FreeBSD για εσωτερική ή εμπορική χρήση και ανάπτυξη προϊόντων.
-------------------------------------------------------------------------------

1 Εισαγωγή

Η ανάπτυξη του FreeBSD είναι μια πολύ ανοιχτή διαδικασία. Το FreeBSD
αποτελείται από συνεισφορές χιλιάδων ανθρώπων από όλο τον κόσμο. Η ομάδα του
FreeBSD παρέχει πρόσβαση μέσω ανώνυμου CVS[1] σε όλους, έτσι ώστε να μπορεί
όποιος θέλει να δει μηνύματα log, διαφορές (patches) που έχουν τα διάφορα
development branches, και άλλα χαρακτηριστικά που βοηθούν την ανάπτυξη, τα
οποία προκύπτουν από την χρήση ενός αυστηρού συστήματος διαχείρισης κώδικα.
Αυτό αποτέλεσε και τον πιο σημαντικό παράγοντα έλξης για ένα μεγάλο αριθμό από
ταλαντούχους προγραμματιστές από όλο τον κόσμο στο FreeBSD. Είναι προφανές,
βέβαια, πως πολύ σύντομα θα είχε γίνει εντελώς χαοτική η κατάσταση αν είχαν
όλοι, από όλο τον κόσμο, πρόσβαση να γράψουν στον κώδικα. Γι' αυτό, μόνο μια
«επιλεγμένη» ομάδα από περίπου 300 άτομα έχουν πρόσβαση να γράψουν στο CVS
repository. Αυτοί οι committers[6] είναι υπεύθυνοι για το μεγαλύτερο μέρος της
ανάπτυξηςς που γίνεται στο FreeBSD. Μια κεντρική-ομάδα[7] (core team) από
διακεκριμένους προγραμματιστές εκλέγεται για να παρέχει κάποιου είδους
καθοδήγηση και μια κατεύθυνση στο σύνολο των committers.
Οι ταχύτατοι ρυθμοί ανάπτυξης του FreeBSD δεν αφήνουν και πολύ χρόνο για το
ξεκαθάρισμα του συστήματος ανάπτυξης σε μια έκδοση με ποιότητα που να αξίζει να
χρησιμοποιείται ευρέως. Για να λυθεί αυτό το δίλλημα, η ανάπτυξη γίνεται
ταυτόχρονα σε δυο παράλληλα μονοπάτια. Ο κύριος κορμός ανάπτυξης είναι ο HEAD ή
trunk στο CVS repository μας, γνωστός και ως «FreeBSD-CURRENT», ή «-CURRENT» εν
συντομία.
Ένας πιο σταθερός κορμός συντηρείται, γνωστός με το όνομα «FreeBSD-STABLE» ή
πιο σύντομα «-STABLE». Και οι δυο κορμοί είναι αποθηκευμένοι στο κύριο CVS
repository, στην Καλιφόρνια, και αντιγράφονται μέσω CVSup[2] σε mirrors παντού
στον κόσμο. Το FreeBSD-CURRENT[8] είναι η «πρώτη σειρά» της ανάπτυξης του
FreeBSD καθώς σε αυτό γίνονται πρώτα όλες οι καινούριες αλλαγές. Το FreeBSD-
STABLE είναι ο κορμός ανάπτυξης από τον οποίο φτιάχνονται οι εκδόσεις. Οι
αλλαγές εισέρχονται σε αυτόν, τον δεύτερο κορμό ανάπτυξης, με πιο αργό ρυθμό,
αφού πρώτα (σύμφωνα με την πολιτική μας) δοκιμαστούν στο FreeBSD-CURRENT και
έχουν εξεταστεί πολύ καλά.
Κατά την περίοδο που μεσολαβεί από τη μια έκδοση στην επόμενη, φτιάχνονται
καθημερινά snapshots από τα μηχανήματα της ομάδας του FreeBSD και είναι
διαθέσιμες από τον εξυπηρετητή ftp://stable.FreeBSD.org/. Η μεγάλη
διαθεσιμότητα των εκτελέσιμων snapshots, καθώς και η τάση της κοινότητας των
χρηστών μας να ενημερώνουν τα μηχανήματά τους με τις πρόσφατες -STABLE εκδόσεις
μέσω CVSup και «make world»[8] βοηθούν να κρατιέται το FreeBSD-STABLE σε μια
πολύ αξιόπιστη κατάσταση ακόμα και πριν αρχίσει ο κύκλος των ελέγχων ποιότητας
ακριβώς πριν από την διάθεση μιας έκδοσης του FreeBSD.
Συνεχώς στέλνονται από τους χρήστες μας αναφορές προβλημάτων και αιτήσεις για
καινούρια χαρακτηριστικά, κατά τη διάρκεια του κύκλου της κάθε έκδοσης. Οι
αναφορές προβλημάτων εισάγονται στην βάση GNATS[9] μέσω e-mail, με την εφαρμογή
send-pr(1), ή μέσω του web-interface που παρέχεται στην διεύθυνση http://
www.FreeBSD.org/send-pr.html. Εκτός από τις διάφορες λίστες ηλεκτρονικού
ταχυδρομείου με θέμα τα τεχνικά χαρακτηριστικά του FreeBSD υπάρχει και η λίστα
FreeBSD_Quality_Assurance_mailing_list, η οποία παρέχει ένα φόρουμ για
συζητήσεις σχετικά με τις λεπτομέρειες της «οργάνωσης των εκδόσεων».
Για να εξυπηρετηθούν οι πιο συντηρητικοί χρήστες μας, με έκδοση του FreeBSD 4.3
αρχίσαμε να χρησιμοποιούμε ξεχωριστούς κορμούς εκδόσεων. Αυτοί οι κορμοί
δημιουργούνται λίγο πρίν φτιαχτεί η τελική έκδοση. Μετά την ανακοίνωση της
έκδοσης, μόνο πολύ σημαντικές αλλαγές και προσθήκες σχετικές με την ασφάλεια
γίνονται στον κορμό της έκδοσης. Εκτός από την δυνατότητα αναβάθμισης μέσω CVS,
εκτελέσιμα patchkits φτιάχνονται για να μπορούν να αναβαθμίσουν τα συστήματά
τους όσοι χρησιμοποιούν τις εκδόσεις RELENG_X_Y.
Το Τμήμα_2 εξηγεί με λεπτομέρειες τα διάφορα στάδια της διαδικασίας που
βρίσκεται πίσω από κάθε έκδοση, μέχρι και τα βήματα που οδηγούν στην
μεταγλώττιση του συστήματος και το Τμήμα_3 εξηγεί την ίδια τη διαδικασία της
μεταγλώττισης. Το Τμήμα_5 περιγράφει πως μπορεί να επεκταθεί το βασικό σύστημα
από τρίτους και το Τμήμα_6 περιγράφει κάποια από τα πράγματα που μάθαμε από την
διαδικασία έκδοσης του FreeBSD 4.4. Τέλος, το Τμήμα_7 παρουσιάζει κάποιες από
τις κατευθύνσεις που θέλουμε να πάρει η ανάπτυξη στο μέλλον.
-------------------------------------------------------------------------------

2 Η Διαδικασία Δημιουργίας μιας Έκδοσης

Οι νέες εκδόσεις του FreeBSD φτιάχνονται από τον -STABLE κορμό ανάπτυξης
περίπου κάθε τέσσερεις μήνες. Η διαδικασία προετοιμασίας μιας έκδοσης ξεκινάει
σχεδόν 45 μέρες πριν την αναμενόμενη ημερομηνία έκδοσης, όταν ο υπεύθυνος
εκδόσεων του FreeBSD στέλνει ένα γράμμα στις λίστες των προγραμματιστών για να
υπενθυμίσει στους προγραμματιστές ότι έχουν 15 μέρες καιρό να κάνουν όποιες
αλλαγές θέλουν, πριν το πάγωμα του κώδικα. Μέσα σε αυτό τον καιρό, πολλοί
προγραμματιστές κάνουν μια σειρά από αλλαγές που έχουν μείνει πλέον γνωστές ως
«ξεκαθαρίσματα MFC». Ο όρος MFC σημαίνει «Merge From CURRENT» και περιγράφει
την διαδικασία προσαρμογής του κώδικα μιας δοκιμασμένης αλλαγής από τον -
CURRENT πειραματικό κορμό ανάπτυξης στον σταθερό -STABLE κορμό.
-------------------------------------------------------------------------------

2.1 Έλεγχος Κώδικα

Τριάντα ημέρες πριν την αναμενόμενη ημερομηνία έκδοσης, ο κώδικας του
repository εισέρχεται σε μια περίοδο «καθυστέρησης». Κατά τη διάρκεια αυτής της
περιόδου, όλες οι αλλαγές στον -STABLE κορμό πρέπει να έχουν την έγκριση της
Ομάδα Οργάνωσης των Εκδόσεων <re@FreeBSD.org>. Οι αλλαγές που επιτρέπονται σε
αυτή την περίοδο που διαρκεί 15 ημέρες είναι:

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

Μετά τις πρώτες 15 μέρες καθυστέρησης, φτιάχνεται μια δοκιμαστική έκδοση για να
χρησιμοποιηθεί σαν δοκιμή της τελικής έκδοσης και ο κώδικας εισέρχεται σε μια
περίοδο «παγώματος». Πλέον είναι πολύ πιο δύσκολο να γίνουν νέες αλλαγές στο
σύστημα, εκτός κι αν διορθώνουν κάποιο πολύ σοβαρό bugή κάποιο πρόβλημα
ασφάλειας. Κατά τη διάρκεια του παγώματος του κώδικα, τουλάχιστον μία
δοκιμαστική έκδοση φτιάχνεται κάθε εβδομάδα, μέχρι να είναι έτοιμη η τελική
έκδοση. Τις ημέρες ακριβώς πριν την τελική έκδοση, η ομάδα που είναι υπεύθυνη
για τις εκδόσεις είναι σε συνεχή επικοινωνία με την ομάδα ασφάλειας, την ομάδα
συντήρησης της τεκμηρίωσης, και την ομάδα συντήρησης των ports, για να
βεβαιωθούν πως όλα τα απαραίτητα κομμάτια για μια πλήρη έκδοση είναι διαθέσιμα.
-------------------------------------------------------------------------------

2.2 Λίστα Ελέγχου της Τελικής Έκδοσης

Όταν αρκετές δοκιμαστικές εκδόσεις έχουν γίνει διαθέσιμες, έχουν δοκιμαστεί από
αρκετό κόσμο και όλα τα σοβαρά θέματα έχουν αναλυθεί, η τελική έκδοση μπορεί να
αρχίσει.
-------------------------------------------------------------------------------

2.2.1 Δημιουργία του Κορμού Έκδοσης

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

  /usr/src# cvs update -rRELENG_4 -P -d

Το επόμενο βήμα είναι να δημιουργήσετε μια ετικέτα (tag) στο σημείο εκκίνησης
του κορμού, ώστε να μπορείτε να δείτε τις διαφορές με την αρχή του κορμού
εύκολα στο μέλλον με το CVS:

  /usr/src# cvs rtag -rRELENG_4 RELENG_4_8_BP src

Και τότε μπορείτε να δημιουργήσετε το νέο κορμό με:

  /usr/src# cvs rtag -b -rRELENG_4_8_BP RELENG_4_8 src


     Σημείωση:Οι ετικέτες RELENG_* είναι δεσμευμένες για χρήση από τους
     CVS-meisters και την ομάδα των εκδόσεων.

 _____________________________________________________________________________
|Ο όρος «ετικέτα» είναι ορολογία του CVS. Σημαίνει ένα όνομα που καθορίζει μια|
|συγκεκριμένη έκδοση του κώδικα στο χρόνο. Χρησιμοποιώντας ετικέτες στον      |
|πηγαίο κώδικα βοηθάμε όποιον φτιάξει στο μέλλον εκδόσεις του FreeBSD να      |
|βρίσκει και να χρησιμοποιεί ακριβώς τον ίδιο κώδικα που χρησιμοποιήθηκε για  |
|τις_επίσημες_εκδόσεις_της_Ομάδας_του_FreeBSD.________________________________|

-------------------------------------------------------------------------------

2.2.2 Αυξάνοντας τον Αριθμό Έκδοσης

Πριν μπει η ετικέτα, μεταγλωττιστεί και ετοιμαστεί η τελική έκδοση, πρέπει να
γίνουν αλλαγές στα παρακάτω αρχεία για να περιέχουν τον σωστό αριθμό έκδοσης
για το FreeBSD:

* doc/en_US.ISO8859-1/books/handbook/mirrors/chapter.xml
* doc/en_US.ISO8859-1/books/porters-handbook/book.xml
* doc/share/xml/freebsd.ent
* src/Makefile.inc1
* src/UPDATING
* src/gnu/usr.bin/groff/tmac/mdoc.local
* src/release/Makefile
* src/release/doc/en_US.ISO8859-1/share/xml/release.dsl
* src/release/doc/share/examples/Makefile.relnotesng
* src/release/doc/share/xml/release.ent
* src/share/examples/cvsup/standard-supfile
* src/sys/conf/newvers.sh
* src/sys/sys/param.h
* src/usr.sbin/pkg_install/add/main.c
* www/en/docs.xml
* www/en/cgi/ports.cgi
* ports/Tools/scripts/release/config

Οι σημειώσεις έκδοσης και τα αρχεία με τις διορθώσεις της τελευταίας στιγμής
πρέπει επίσης να προσαρμοστούν στην νέα έκδοση (στον κορμό της έκδοσης) και να
επεξεργαστούν κατάλληλα (στους δύο κορμούς stable και current):

* src/release/doc/en_US.ISO8859-1/relnotes/common/new.xml
* src/release/doc/en_US.ISO8859-1/errata/article.xml

Η εφαρμογή sysinstall πρέπει επίσης να ενημερωθεί με τον σωστό αριθμό των ports
και το χώρο του δίσκου που απαιτείται για την Συλλογή των Ports. Αυτές οι
πληροφορίες υπάρχουν στο αρχείο src/release/sysinstall/dist.c.
Αφού ολοκληρωθεί η προετοιμασία της νέας επίσημης έκδοσης, πρέπει να
ενημερώσετε μερικά αρχεία για να ενημερώσετε τον κόσμο για τη νέα έκδοση του
FreeBSD.

* www/en/includes.xsl
* www/en/includes.xml
* www/es/includes.xml
* www/en/releases/*
* src/share/misc/bsd-family-tree

-------------------------------------------------------------------------------

2.2.3 Δημιουργία των Ετικετών της Έκδοσης

Όταν η τελική έκδοση είναι έτοιμη, η παρακάτω εντολή θα δημιουργήσει την
ετικέτα RELENG_4_8_0_RELEASE.

  /usr/src# cvs rtag -rRELENG_4_8 RELENG_4_8_0_RELEASE src

Οι υπεύθυνοι της Τεκμηρίωσης και των Ports είναι αυτοί που πρέπει να
δημιουργήσουν τις ετικέτες RELEASE_4_8_0 στα κατάλληλα δέντρα πηγαίου κώδικα.
Μερικές φορές, μπορεί να χρειαστεί να γίνουν κάποιες αλλαγές τελευταία στιγμή
μετά την τοποθέτηση των ετικετών. Γενικά, δεν είναι δύσκολο να γίνει κάτι
τέτοιο αφού το CVS επιτρέπει να μετακινήσει κάποιος τις ετικέτες με εντολές
όπως cvs tag -d tagname filename. Είναι πολύ σημαντικό όμως αυτές οι αλλαγές
της τελευταίας στιγμής να σημειωθούν με τις σωστές ετικέτες για την
συγκεκριμένη έκδοση. Οι επίσημες εκδόσεις του FreeBSD πρέπει να είναι πάντα
εύκολο να αναπαραχθούν. Τοπικές αλλαγές στο περιβάλλον του μηχανικού των
εκδόσεων δεν επιτρέπονται.
-------------------------------------------------------------------------------

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

Οι «εκδόσεις» του 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) κορμού. Οι εκδόσεις που φτιάχνονται
από αυτόν τον κορμό, συνήθως αναφέρονται σαν «-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).
-------------------------------------------------------------------------------

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 Προγράμματα Τρίτων («ports»)

Η Συλλογή_των_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 στις «επίσημες» διανομές 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 κατά ένα
μεγάλο μέρος. Αυτός ο δίσκος περιέχει ένα «live filesystem» που μπορεί να
χρησιμοποιηθεί από το sysinstall(8) για να εξεταστούν προβλήματα σε μια
εγκατάσταση του FreeBSD. Κι αυτός ο δίσκος πρέπει να είναι bootable. Θα πρέπει
επίσης να περιέχει ένα συμπιεσμένο αντίγραφο του CVS repository στον κατάλογο
CVSROOT και δείγματα από εμπορικά προγράμματα στον κατάλογο commerce.
-------------------------------------------------------------------------------

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

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

4 Διανομή των Εκδόσεων


4.1 Εξυπηρετητές FTP

Όταν η έκδοση είναι έτοιμη, έχει δοκιμαστεί εκτενώς, και έχει πακεταριστεί για
διανομή, ο κύριος FTP εξυπηρετητής πρέπει να ενημερωθεί. Οι επίσημοι
εξυπηρετητές FTP του FreeBSD είναι όλοι mirrors ενός κύριου εξυπηρετητή στον
οποίο έχουν πρόσβαση μόνο άλλοι FTP εξυπηρετητές. Αυτός ο εξυπηρετητής είναι
γνωστός ως ftp-master. Όταν η έκδοση είναι έτοιμη, πρέπει να ενημερωθούν τα
παρακάτω αρχεία στον ftp-master:


  /pub/FreeBSD/index.html
      Μια απλή web σελίδα που περιέχει δείκτες σε διάφορους σημαντικούς FTP
      καταλόγους για την τρέχουσα έκδοση του FreeBSD.

  /pub/FreeBSD/releases/arch/X.Y-RELEASE/
      Ο κατάλογος από τον οποίο μπορούν να γίνουν εγκαταστάσεις μέσω FTP, όπως
      τον έχει προετοιμάσει η εντολή make release.

  /pub/FreeBSD/ports/arch/packages/packages-X.Y-release/
      Όλα τα προμεταγλωττισμένα πακέτα για την τρέχουσα έκδοση.

  /pub/FreeBSD/releases/arch/X.Y-RELEASE/tools
      Μια συμβολική συντόμευση για τον κατάλογο ../../../tools.

  /pub/FreeBSD/releases/arch/X.Y-RELEASE/packages
      Μια συμβολική συντόμευση για τον κατάλογο ../../../ports/i386/packages-
      X.Y-release.

  /pub/FreeBSD/releases/arch/ISO-IMAGES/X.Y/X.Y-*.iso
      Τα αρχεία ISO.

Για περισσότερες πληροφορίες σχετικά με την οργάνωση των mirror διανομής FTP
του FreeBSD, παρακαλώ δείτε το άρθρο Φτιάχνοντας_ένα_FreeBSD_mirror.
Μπορεί να πάρει αρκετές ώρες από την στιγμή που θα ενημερωθεί ο ftp-master
μέχρι να ενημερωθούν στην πλειοψηφία τους τα πρώτου επιπέδου FTP mirror με την
νέα έκδοση. Επιβάλλεται οι υπεύθυνοι έκδοσης να συνεννοηθούν με την ηλεκτρονική
λίστα_των_mirror_sites_του_FreeBSD πριν ανακοινώσουν την γενική διαθεσιμότητα
της νέας έκδοσης στους εξυπηρετητές FTP.
-------------------------------------------------------------------------------

4.2 Μαζική Αναπαραγωγή των CD-ROM

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

5 Επεκτασιμότητα

Παρόλο που το FreeBSD είναι ένα πλήρες λειτουργικό σύστημα, δεν υπάρχει κάτι
που να σας αναγκάζει να χρησιμοποιήσετε το σύστημα ακριβώς όπως το έχουμε
πακετάρει εμείς για διανομή. Έχουμε προσπαθήσει να σχεδιάσουμε το σύστημα έτσι
που να είναι όσο το δυνατόν πιο επεκτάσιμο, για να είναι εύκολο να
χρησιμοποιηθεί σαν βάση πάνω στην οποία άλλα εμπορικά προϊόντα να μπορούν να
στηριχθούν. Ο μόνος «κανόνας» που έχουμε σχετικά με αυτό είναι πως αν
σχεδιάζετε να διανείμετε το FreeBSD με μεγάλης κλίμακας αλλαγές, σας
ενθαρρύνουμε να τεκμηριώσετε τις αλλαγές σας. Η κοινότητα του FreeBSD μπορεί
μόνο να βοηθήσει στην υποστήριξη αυτών που χρησιμοποιούν το λογισμικό ακριβώς
όπως το διανέμουμε εμείς. Ενθαρρύνουμε και δεχόμαστε κάθε αλλαγή που προωθεί
την ανάπτυξη πιο εξελιγμένων εργαλείων εγκατάστασης και διαχείρισης, για
παράδειγμα, αλλά δεν θα πρέπει να περιμένει κανείς να μπορούμε να απαντήσουμε
και ερωτήσεις σχετικά με κάτι τέτοιο.
-------------------------------------------------------------------------------

5.1 Δημιουργία Προσαρμοσμένων Δισκεττών Εκκίνησης.

Πολλές εγκαταστάσεις έχουν πολύπλοκες απαιτήσεις που μπορεί με τη σειρά τους να
απαιτούν την προσθήκη περισσότερων οδηγών ή εργαλείων χρήστη στις δισκέττες
εγκατάστασης. Ο «μπακάλικος» τρόπος να το κάνετε αυτό είναι να κάνετε τις
αλλαγές σας στον κατάλογο που έχει ετοιμάσει μετά το τέλος της η διαδικασία
make release:

* Περάστε τα patches σας ή προσθέστε τα επιπλέον αρχεία μέσα στον κατάλογο
  chroot της έκδοσης.
* rm ${CHROOTDIR}/usr/obj/usr/src/release/release.[59]
* Μεταγλωττίστε πάλι το sysinstall(8), τον πυρήνα, ή όποια άλλα προγράμματα
  έχουν επηρεαστεί από τις αλλαγές σας.
* chroot ${CHROOTDIR} ./mk floppies

Οι νέες δισκέττες εγκατάστασης θα δημιουργηθούν στον κατάλογο ${CHROOTDIR}/R/
stage/floppies.
Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το make target boot.flp, ή μπορείτε να
τρέξετε απευθείας το script που δημιουργεί τα συστήματα αρχείων src/release/
scripts/doFS.sh.
Μπορείτε επίσης να κανονίσετε ώστε δικές σας αλλαγές να περαστούν με μορφή
patch στην έκδοση όπως θα φτιάχνεται, δίνοντας τιμή στην μεταβλητή LOCAL_PATCH
όταν τρέξετε την εντολή make release.
-------------------------------------------------------------------------------

5.2 Προγραμματίζοντας το sysinstall

Το εργαλείο εγκατάστασης και ρύθμισης του FreeBSD, το sysinstall(8), μπορεί να
προγραμματιστεί για να κάνει πιο εύκολες τις αυτοματοποιημένες εγκαταστάσεις σε
πολλά μηχανήματα. Αυτό το χαρακτηριστικό του προγράμματος μπορεί να
χρησιμοποιηθεί σε συνδυασμό με το PXE[13] της Intel για να ξεκινήσει η
εγκατάσταση από το δίκτυο, ή σε συνδυασμό με προσαρμοσμένες δισκέττες εκκίνησης
κι ένα sysinstall script. Ένα παράδειγμα από τέτοιο sysinstall script μπορείτε
να βρείτε στο αρχείο src/release/sysinstall/install.cfg.
-------------------------------------------------------------------------------

6 Μαθήματα που Πήραμε από την Έκδοση 4.4 του FreeBSD

Η διαδικασία ετοιμασίας της έκδοσης 4.4 του FreeBSD ξεκίνησε επίσημα την 1η
Αυγούστου 2001. Μετά από αυτή την ημερομηνία, όλες οι αλλαγές στον κορμό
RELENG_4 του FreeBSD έπρεπε να έχουν έγκριση από την Ομάδα Οργάνωσης των
Εκδόσεων <re@FreeBSD.org>. Η πρώτη δοκιμαστική έκδοση για την αρχιτεκτονική x86
έγινε διαθέσιμη στις 16 Αυγούστου, κι ακολουθήθηκε από 4 ακόμα δοκιμαστικές
εκδόσεις που οδήγησαν στην τελική έκδοση στις 18 του Σεπτέμβρη. Ο υπεύθυνος
ασφάλειας έπαιξε σημαντικό ρόλο κατά την διάρκεια της τελευταίας εβδομάδας
καθώς κάποια προβλήματα ασφάλειας βρέθηκαν σε προηγούμενες, δοκιμαστικές
εκδόσεις. Συνολικά, πάνω από 500 email στάλθηκαν στην Ομάδα Οργάνωσης των
Εκδόσεων <re@FreeBSD.org> σε διάστημα μικρότερο από ένα μήνα.
Η κοινότητα των χρηστών μας έκανε σαφές ότι η ασφάλεια και η σταθερότητα μιας
έκδοσης δεν θά 'πρεπε να θυσιάζεται για κανενός είδους προθεσμίες ή ημερομηνίες
που έχουν τεθεί σαν στόχοι από πριν. Το FreeBSD έχει μεγαλώσει δραματικά κατά
τη διάρκεια της ζωής του σαν σύστημα, και η ανάγκη για συγκεκριμένη πολιτική
και οργάνωση για την δημιουργία νέων εκδόσεων είναι πλέον φανερή περισσότερο
από ποτέ. Αυτή η ανάγκη θα γίνει ακόμα πιο σημαντική καθώς το FreeBSD θα
αρχίσει να μεταφέρεται σε νέες πλατφόρμες.
-------------------------------------------------------------------------------

7 Μελλοντικές Κατευθύνσεις

Είναι ζωτικής σημασίας οι πρακτικές και η οργάνωση της διαδικασίας δημιουργίας
των εκδόσεών μας να συμβαδίζουν με την συνεχώς αυξανόμενη βάση των χρηστών μας.
Με βάση αυτή τη σκέψη εργαζόμαστε σκληρά για να τεκμηριώσουμε την διαδικασία
παραγωγής των εκδόσεων του FreeBSD.

* Παράλληλη εκτέλεση - Μερικά μέρη της μεταγλώττισης μιας εγκατάστασης μπορούν
  να γίνουν «πολύ παράλληλα». Τα πιο πολλά από τα στάδια είναι I/O intensive,
  οπότε η ύπαρξη πολλών υψηλής-ταχύτητας δίσκων είναι πιο σημαντική από τηνν
  χρήση πολλών επεξεργαστών για να επιταχυνθεί κάπως η διαδικασία του make
  release. Αν διαφορετικοί δίσκοι χρησιμοποιηθούν για τμήματα της ιεραρχίας του
  chroot(2) περιβάλλοντος, τότε το CVS checkout των καταλόγων ports και doc
  μπορεί να γίνει ταυτόχρονα με την εντολή make world στον άλλο δίσκο.
  Χρησιμοποιώντας μια RAID λύση (hardware ή software) μπορεί να μειώσει
  δραστικά τον συνολικό χρόνο που χρειάζεται να μεταγλωττιστεί μια πλήρης
  έκδοση.
* Μεταγλώττιση εκδόσεων για διαφορετικές αρχιτεκτονικές - Θέλετε να
  μεταγλωττίσετε μια έκδοση για IA-64 ή Alpha σε κάποιον x86 επεξεργαστή? make
  TARGET=ia64 release.
* Δοκιμές για λάθη - Χρειαζόμαστε καλύτερα εργαλεία για αυτόματο έλεγχο
  ορθότητας στο FreeBSD.
* Εργαλεία Εγκατάστασης - Το πρόγραμμά μας για την εγκατάσταση του FreeBSD έχει
  ξεπεράσει προ πολλού τον αναμενόμενο χρόνο ζωής του. Υπάρχουν διάφορες ομάδες
  που εργάζονται για να υλοποιήσουν κάποιον άλλο, πιο μοντέρνο μηχανισμό
  εγκατάστασης. Μια από τις πιο υποσχόμενες, είναι η ομάδα libh[5] που στοχεύει
  στην υλοποίηση ενός έξυπνου, νέου τρόπου πακεταρίσματος λογισμικού και ενός
  GUI προγράμματος εγκατάστασης.

-------------------------------------------------------------------------------

8 Ευχαριστίες

Θα ήθελα να ευχαριστήσω τον Jordan Hubbard, που μου έδωσε την ευκαιρία να πάρω
κάποια από την ευθύνη της έκδοσης 4.4 του FreeBSD, καθώς και για όλη την
δουλειά που έχει κάνει εδώ και χρόνια για να είναι το FreeBSD αυτό που είναι
σήμερα. Φυσικά, η έκδοση δεν θα ήταν ποτέ δυνατόν να ολοκληρωθεί χωρίς όλη την
σχετική με την έκδοση δουλειά που έκαναν οι Satoshi Asami <asami@FreeBSD.org>,
Steve Price <steve@FreeBSD.org>, Bruce A. Mah <bmah@FreeBSD.org>, Nik Clayton
<nik@FreeBSD.org>, David O'Brien <obrien@FreeBSD.org>, Kris Kennaway
<kris@FreeBSD.org>, John Baldwin <jhb@FreeBSD.org> και όλοι οι υπόλοιποι που
ασχολούνται με την ανάπτυξη του FreeBSD. Θέλω επίσης να ευχαριστήσω τους Rodney
Grimes <rgrimes@FreeBSD.org>, Poul-Henning Kamp <phk@FreeBSD.org>, και όλους
τους άλλους που εργάστηκαν για να φτιάξουν τα εργαλεία για τις εκδόσεις στις
πρώτες μέρες της δημιουργίας του FreeBSD. Αυτό το άρθρο έχει επηρεαστεί από
κείμενα σχετικά με την οργάνωση των εκδόσεων από το CSRG[14], την Ομάδα του
NetBSD[11], και την πρόταση για μια διαδικασία οργάνωσης των εκδόσεων του John
Baldwin[12].
-------------------------------------------------------------------------------

9 Αναφορές

[1] CVS - Concurrent Versions System http://www.cvshome.org
[2] CVSup - The CVS-Optimized General Purpose Network File Distribution System
http://www.polstra.com/projects/freeware/CVSup
[3] http://bento.FreeBSD.org
[4] FreeBSD Ports Collection http://www.FreeBSD.org/ports
[5] The libh Project http://www.FreeBSD.org/projects/libh.html
[6] FreeBSD Committers http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/
contributors/staff-committers.html
[7] FreeBSD Core-Team http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/
contributors/staff-core.html
[8] FreeBSD Handbook http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook
[9] GNATS: The GNU Bug Tracking System http://www.gnu.org/software/gnats
[10] FreeBSD PR Statistics http://www.FreeBSD.org/prstats/index.html
[11] NetBSD Developer Documentation: Release Engineering http://www.NetBSD.org/
developers/releng/index.html
[12] John Baldwin's FreeBSD Release Engineering Proposal http://
people.FreeBSD.org/~jhb/docs/releng.txt
[13] PXE Jumpstart Guide http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/
pxe/index.html
[14] Marshall Kirk McKusick, Michael J. Karels, and Keith Bostic: The_Release
Engineering_of_4.3BSD
-------------------------------------------------------------------------------
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/
                               pub/FreeBSD/doc/.
     Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να
                επικοινωνήσετε με την <questions@FreeBSD.org>.
       Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην
                              <doc@FreeBSD.org>.
