diff --git a/el_GR.ISO8859-7/books/handbook/cutting-edge/chapter.sgml b/el_GR.ISO8859-7/books/handbook/cutting-edge/chapter.sgml
index 9ad9e453de..ca6f83ed18 100644
--- a/el_GR.ISO8859-7/books/handbook/cutting-edge/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/cutting-edge/chapter.sgml
@@ -1,2626 +1,2626 @@
JimMockΑναδομήθηκε, αναδιοργανώθηκε, και τμήματα του ανανεώθηκαν
από τον JordanHubbardΑρχική συνεισφορά από τους Poul-HenningKampJohnPolstraNikClaytonΕνημέρωση και Αναβάθμιση του &os;ΣύνοψηΤο &os; βρίσκεται υπό συνεχή εξέλιξη μεταξύ των επίσημων εκδόσεων
του. Μερικοί άνθρωποι προτιμούν να χρησιμοποιούν τις επίσημες εκδόσεις,
ενώ άλλοι προτιμούν να κρατούν το σύστημα τους ενημερωμένο με τις
τελευταίες εξελίξεις. Ωστόσο, ακόμα και οι επίσημες εκδόσεις
ενημερώνονται συχνά με διορθώσεις κρίσιμων σφαλμάτων και ασφαλείας.
Όποια έκδοση και να χρησιμοποιήσετε, το &os; παρέχει όλα τα
απαραίτητα εργαλεία για να κρατήσετε το σύστημα σας ενημερωμένο, και
επίσης σας επιτρέπει να αναβαθμιστείτε εύκολα σε κάποια επόμενη
έκδοση. Το κεφάλαιο αυτό θα σας βοηθήσει να αποφασίσετε αν θέλετε να
παρακολουθείτε το σύστημα ανάπτυξης, ή αν θα προτιμήσετε να παραμείνετε
σε μια από τις παγιωμένες εκδόσεις. Θα παρουσιάσουμε επίσης τα βασικά
εργαλεία που απαιτούνται για την ενημέρωση και αναβάθμιση του
συστήματος.Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:Ποια βοηθητικά προγράμματα μπορείτε να χρησιμοποιήσετε για να
ενημερώσετε το σύστημα και την Συλλογή των Ports.Πως να διατηρείτε το σύστημα σας ενημερωμένο με τα προγράμματα
freebsd-updateCVSup,
CVS, ή
CTM.Πως να συγκρίνετε την κατάσταση ενός εγκατεστημένου συστήματος,
με αναφορά ένα γνωστό και εγγυημένα σωστό σύστημα.Τη διαφορά μεταξύ των δύο κλάδων που βρίσκονται σε εξέλιξη: του
&os.stable; και του &os.current;.Πως να ξαναφτιάξετε και να επανεγκαταστήσετε ολόκληρο
το βασικό σύστημα με την make buildworld
(κλπ).Πριν διαβάσετε αυτό το κεφάλαιο, θα πρέπει:Να ρυθμίσετε σωστά τη σύνδεση σας στο δίκτυο ().Να γνωρίζετε πως να εγκαταστήσετε πρόσθετο λογισμικό
τρίτου κατασκευαστή ().Στο κεφάλαιο αυτό γίνεται συχνά χρήση της εντολής
cvsup για την ανάκτηση ή ενημέρωση των αρχείων
πηγαίου κώδικα του &os;. Για να την χρησιμοποιήσετε, θα πρέπει να
εγκαταστήσετε ένα πακέτο ή port όπως το
net/cvsup-without-gui.
Αν χρησιμοποιείτε &os; 6.2-RELEASE ή νεώτερο, μπορείτε να
αντικαταστήσετε αυτή την εντολή με την &man.csup.1; η οποία ανήκει
πλέον στο βασικό σύστημα.TomRhodesΓράφηκε από τον ColinPercivalΒασίστηκε σε σημειώσεις που παρείχε ο Ενημερώνοντας το &os;Updating and Upgrading FreeBSDfreebsd-updateupdating-upgradingΗ εφαρμογή ενημερώσεων ασφαλείας αποτελεί ένα σημαντικό τμήμα της
συντήρησης λογισμικού, ειδικά όταν πρόκειται για το λειτουργικό σύστημα.
Για μεγάλο διάστημα, η διαδικασία αυτή δεν ήταν εύκολη στο &os;.
Έπρεπε να εφαρμοστούν patches στον πηγαίο κώδικα, να γίνει μεταγλώττιση
του από την αρχή, και να εγκατασταθούν ξανά τα νέα εκτελέσιμα.Αυτό δεν είναι πλέον αναγκαίο, καθώς το &os; διαθέτει τώρα ένα
βοηθητικό πρόγραμμα, το freebsd-update. Το πρόγραμμα
παρέχει δύο διαφορετικές λειτουργίες. Η πρώτη είναι η δυνατότητα
δυαδικής (binary) ενημέρωσης του βασικού συστήματος με τις τελευταίες
διορθώσεις ασφάλειας και λαθών, χωρίς να χρειάζεται ξανά μεταγλώττιση
και εγκατάσταση. Η δεύτερη είναι η δυνατότητα αναβάθμισης του
συστήματος σε μια νέα μικρή ή μεγάλη επίσημη έκδοση (release).Δυαδικές διορθώσεις λαθών και ασφάλειας, διατίθενται για όλες
τις αρχιτεκτονικές και εκδόσεις που υποστηρίζονται από την ομάδα
ασφάλειας. Ωστόσο, ορισμένα χαρακτηριστικά όπως η δυνατότητα
αναβάθμισης του λειτουργικού σε μια νέα έκδοση, απαιτούν την
τελευταία έκδοση του &man.freebsd-update.8; και του &os; 6.3.
Πριν προχωρήσετε στην αναβάθμιση σε μια νέα έκδοση, θα πρέπει να
διαβάσετε τις σχετικές με αυτήν ανακοινώσεις, καθώς μπορεί να
περιέχουν σημαντικές πληροφορίες. Μπορείτε να δείτε τις
ανακοινώσεις εκδόσεων στην παρακάτω τοποθεσία:
.Αν υπάρχει κάποιο crontab που χρησιμοποιεί τις
δυνατότητες του freebsd-update, θα πρέπει να
απενεργοποιηθεί πριν ξεκινήσει η παρακάτω διαδικασία. Μπορείτε να
εγκαταστήσετε την τελευταία έκδοση του
freebsd-update κατεβάζοντας το συμπιεσμένο πακέτο
από το παραπάνω URL και εκτελώντας τις παρακάτω
εντολές:&prompt.root; gunzip -c freebsd-update-upgrade.tgz | tar xvf -
&prompt.root; mv freebsd-update.sh /usr/sbin/freebsd-update
&prompt.root; mv freebsd-update.conf /etcΔεν απαιτείται να κατεβάσετε την τελευταία έκδοση, αν χρησιμοποιείτε
κάποια από τις τρέχουσες εκδόσεις του &os;.Το Αρχείο ΡυθμίσεωνΚάποιοι χρήστες ίσως θέλουν να αλλάξουν το αρχείο ρυθμίσεων, ώστε
να έχουν καλύτερο έλεγχο της διαδικασίας. Οι επιλογές είναι γενικά
αρκετά καλά τεκμηριωμένες, αλλά οι παρακάτω ίσως να χρειάζονται
κάποιες επιπλέον επεξηγήσεις:# Components of the base system which should be kept updated.
Components src world kernelΑυτή η παράμετρος ελέγχει ποια τμήματα του &os; θα διατηρούνται
ενημερωμένα. Η προεπιλογή είναι να ενημερώνεται ο πηγαίος κώδικας,
όλο το βασικό σύστημα, και ο πυρήνας. Τα τμήματα είναι τα ίδια
που διατίθενται και κατά την εγκατάσταση, για παράδειγμα αν βάλετε
την επιλογή world/games θα εγκαθίστανται ενημερώσεις
για τα παιχνίδια. Αν βάλετε src/bin θα επιτρέψετε
την ενημέρωση του πηγαίου κώδικα του καταλόγου
src/bin.Η καλύτερη επιλογή είναι να αφήσετε εδώ την προεπιλεγμένη τιμή,
καθώς αν την αλλάξετε ώστε να περιέχει συγκεκριμένα μόνο τμήματα,
θα αναγκαστείτε να αναφέρετε χωριστά μέσα στο αρχείο ρυθμίσεων κάθε
τμήμα που θέλετε να ενημερώνεται. Αυτό ίσως έχει καταστροφικά
αποτελέσματα, καθώς είναι πιθανό ο πηγαίος κώδικας και τα εκτελέσιμα
προγράμματα να μην είναι πλέον σε συγχρονισμό μεταξύ τους.# Paths which start with anything matching an entry in an IgnorePaths
# statement will be ignored.
IgnorePathsΠροσθέστε διαδρομές σε καταλόγους, όπως
/bin ή
/sbin για να αφήσετε
απείραχτους τους συγκεκριμένους καταλόγους κατά την διαδικασία
ενημέρωσης. Η επιλογή αυτή μπορεί να χρησιμοποιηθεί για να αποτρέψει
το freebsd-update να γράψει πάνω σε πιθανόν
δικές σας τοπικές αλλαγές.# Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profileΗ επιλογή αυτή θα ενημερώσει τα αρχεία ρυθμίσεων στους καταλόγους
που καθορίζονται, μόνο αν αυτά δεν έχουν μεταβληθεί από το χρήστη.
Αν υπάρχουν τοπικές αλλαγές, δεν θα γίνει ενημέρωση. Υπάρχει μια
ακόμα επιλογή, η KeepModifiedMetadata, η οποία
οδηγεί το freebsd-update να αποθηκεύσει τις αλλαγές
μεταξύ των δύο εκδόσεων κατά τη διάρκεια της συγχώνευσης
(merge).# When upgrading to a new &os; release, files which match MergeChanges
# will have any local changes merged into the version from the new release.
MergeChanges /etc/ /var/named/etc/Πρόκειται για τη λίστα των καταλόγων που περιέχουν αρχεία
ρυθμίσεων, και στα οποία το freebsd-update θα
επιχειρεί την διαδικασία συγχώνευσης αλλαγών. Η διαδικασία
συγχώνευσης γίνεται με μια σειρά από patches τύπου &man.diff.1;
παρόμοια με το &man.mergemaster.8; αλλά με λιγότερες επιλογές. Οι
συγχωνεύσεις είτε γίνονται δεκτές, είτε προκαλούν το άνοιγμα κάποιου
συντάκτη κειμένου, διαφορετικά η εκτέλεση του
freebsd-update ακυρώνεται. Αν δεν είστε
σίγουρος, κρατήστε αντίγραφο ασφαλείας του καταλόγου
/etc και απλώς δεχθείτε τις
αλλαγές. Δείτε το για
περισσότερες πληροφορίες σχετικά με την εντολή
mergemaster.# Directory in which to store downloaded updates and temporary
# files used by &os; Update.
# WorkDir /var/db/freebsd-updateΣτον κατάλογο αυτό φυλάσσονται όλα τα patches και τα προσωρινά
αρχεία. Σε περιπτώσεις όπου ο χρήστης εκτελεί αναβάθμιση σε μια
νεότερη έκδοση του &os;, θα πρέπει να διαθέτει τουλάχιστον ένα
gigabyte ελεύθερου χώρου.# When upgrading between releases, should the list of Components be
# read strictly (StrictComponents yes) or merely as a list of components
# which *might* be installed of which &os; Update should figure out
# which actually are installed and upgrade those (StrictComponents no)?
# StrictComponents noΑν θέσετε την παραπάνω επιλογή στο yes,
το freebsd-update θα υποθέσει ότι η λίστα
Components είναι πλήρης και δεν θα επιχειρήσει
να προχωρήσει σε αλλαγές εκτός λίστας. Ουσιαστικά, το
freebsd-update θα προσπαθήσει να ενημερώσει κάθε
αρχείο που ανήκει στη λίστα Components.Patches Σχετικά με την ΑσφάλειαΤα patches που σχετίζονται με την ασφάλεια, αποθηκεύονται σε
ένα απομακρυσμένο μηχάνημα και μπορούν να μεταφορτωθούν και να
εγκατασταθούν με την ακόλουθη εντολή:&prompt.root; freebsd-update fetch
&prompt.root; freebsd-update installΑν με την παραπάνω εντολή εγκατασταθούν ενημερώσεις στον πυρήνα,
θα χρειαστεί να επανεκκινήσετε το σύστημα. Αν όλα πάνε καλά, το
σύστημα θα είναι πλέον ενημερωμένο και μπορείτε να εκτελείτε το
freebsd-update αυτόματα με την βοήθεια του
&man.cron.8;. Μια απλή καταχώριση στο αρχείο
/etc/crontab είναι επαρκής για αυτό
το σκοπό:@daily root freebsd-update cronΗ παραπάνω καταχώριση ορίζει ότι το
freebsd-update θα εκτελείται μια φορά την ημέρα.
Με τον τρόπο αυτό, και όταν η εκτέλεση είναι μέσω της επιλογής
, το freebsd-update απλώς
θα ελέγχει για ενημερώσεις. Αν υπάρχουν, η εφαρμογή θα τις
κατεβάζει, αλλά δεν θα τις εγκαθιστά. Θα στέλνει όμως ένα email
στο χρήστη root ώστε να τις εγκαταστήσει
χειροκίνητα.Αν οτιδήποτε πάει στραβά, το freebsd-update
έχει την ικανότητα να επιστρέφει στην προηγούμενη σταθερή κατάσταση,
αναιρώντας το τελευταίο σετ αλλαγών με την ακόλουθη εντολή:&prompt.root; freebsd-update rollbackΜε την ολοκλήρωση της εντολής, θα πρέπει να επανεκκινήσετε το
σύστημα αν έχουν γίνει αλλαγές στον πυρήνα ή σε κάποιο από τα
αρθρώματα του. Αυτό θα επιτρέψει στο &os; να φορτώσει τα νέα
εκτελέσιμα στη μνήμη.Το βοηθητικό πρόγραμμα freebsd-update μπορεί
να ενημερώσει αυτόματα μόνο τον πυρήνα GENERIC.
Αν χρησιμοποιείται προσαρμοσμένος πυρήνας, θα πρέπει να
μεταγλωττιστεί ξανά, όταν το freebsd-update
τελειώσει με την εγκατάσταση των υπόλοιπων ενημερώσεων. Ωστόσο, το
freebsd-update θα ανιχνεύσει και θα ενημερώσει
τον πυρήνα GENERIC στο /boot/GENERIC (αν υπάρχει), ακόμα
και αν δεν είναι ο ενεργός πυρήνας του συστήματος (αυτός που
εκτελείται τη συγκεκριμένη στιγμή).Είναι γενικά καλή ιδέα να έχετε πάντα ένα αντίγραφο του
πυρήνα GENERIC στον κατάλογο /boot/GENERIC. Θα σας βοηθήσει στην
διάγνωση διάφορων προβλημάτων, καθώς και στην αναβάθμιση σε επόμενες
εκδόσεις του &os;, μέσω του freebsd-update.
Η διαδικασία αυτή περιγράφεται στο
.Αν δεν έχουν γίνει αλλαγές στις προεπιλεγμένες ρυθμίσεις στο
αρχείο /etc/freebsd-update.conf, το
freebsd-update θα εγκαταστήσει τα ανανεωμένα αρχεία
πηγαίου κώδικα μαζί με τις υπόλοιπες ενημερώσεις. Μπορείτε έπειτα να
προχωρήσετε στη μεταγλώττιση και εγκατάσταση νέου προσαρμοσμένου
πυρήνα, με το συνήθη τρόπο.Οι ενημερώσεις που διανέμονται μέσω του
freebsd-update δεν περιλαμβάνουν πάντοτε αλλαγές
στον πυρήνα. Δεν είναι απαραίτητο να επαναμεταγλωττίσετε τον
προσαρμοσμένο πυρήνα σας, αν η εκτέλεση του
freebsd-update install δεν επέφερε αλλαγές στα
αρχεία πηγαίου κώδικα του πυρήνα. Ωστόσο, το
freebsd-update ενημερώνει πάντοτε το αρχείο
/usr/src/sys/conf/newvers.sh. Το αρχείο αυτό
περιέχει το τρέχον επίπεδο ενημερώσεων (patch level) το οποίο και
αναφέρεται ως αριθμός -p από εντολές όπως η
uname -r. Μεταγλωττίζοντας ξανά τον
προσαρμοσμένο πυρήνα σας (ακόμα και αν δεν υπάρχουν άλλες αλλαγές)
θα δώσετε τη δυνατότητα στην &man.uname.1; να αναφέρει με ακρίβεια
το επίπεδο ενημερώσεων. Αυτό μπορεί να είναι ιδιαίτερα χρήσιμο
όταν συντηρείτε πολλαπλά συστήματα, καθώς σας επιτρέπει να
αξιολογήσετε με μια ματιά τι ενημερώσεις έχουν εγκατασταθεί στο
καθένα.Αναβαθμίσεις σε Μικρές και Μεγάλες ΕκδόσειςΗ διαδικασία αυτή θα απομακρύνει τα παλιά αρχεία αντικειμενικού
κώδικα (object files) καθώς και τις παλιές βιβλιοθήκες, κάνοντας
τις περισσότερες εφαρμογές τρίτων κατασκευαστών να μη λειτουργούν.
Σας συνιστούμε είτε να απεγκαταστήσετε όλα τα εγκατεστημένα ports και
να τα εγκαταστήσετε ξανά, ή να τα αναβαθμίσετε αργότερα,
χρησιμοποιώντας το βοηθητικό πρόγραμμα
ports-mgmt/portupgrade.
Οι περισσότεροι χρήστες θα θέλουν να κάνουν μια δοκιμαστική
μεταγλώττιση χρησιμοποιώντας την ακόλουθη εντολή:&prompt.root; portupgrade -afΜε αυτό τον τρόπο εξασφαλίζεται ότι τα πάντα θα επανεγκατασταθούν
σωστά. Σημειώστε ότι αν θέσετε την μεταβλητή περιβάλλοντος
BATCH στην τιμή yes, όλες οι
πιθανές ερωτήσεις που θα εμφανιστούν κατά τη διαδικασία, θα
απαντηθούν αυτόματα με yes. Έτσι δεν υπάρχει πλέον
ανάγκη για παρέμβαση του χρήστη κατά τη διάρκεια της διαδικασίας
μεταγλώττισης.Αν χρησιμοποιείται προσαρμοσμένος πυρήνας, η διαδικασία
αναβάθμισης είναι ελαφρά πιο πολύπλοκη. Θα χρειαστείτε ένα αντίγραφο
του πυρήνα GENERIC στον κατάλογο /boot/GENERIC. Αν δεν υπάρχει ήδη ο
πυρήνας GENERIC στο σύστημα σας, μπορείτε να τον
ανακτήσετε χρησιμοποιώντας μια από τις παρακάτω μεθόδους:Αν έχετε μεταγλωττίσει προσαρμοσμένο πυρήνα μόνο μια φορά, ο
πυρήνας στον κατάλογο /boot/kernel.old είναι στην
πραγματικότητα ο GENERIC. Απλώς μετονομάστε
τον κατάλογο σε /boot/GENERIC.Αν έχετε φυσική πρόσβαση στο μηχάνημα, μπορείτε να
εγκαταστήσετε ένα αντίγραφο του πυρήνα GENERIC
από το CD-ROM της εγκατάστασης. Τοποθετήστε το CD-ROM στον οδηγό
και χρησιμοποιήστε τις παρακάτω εντολές:&prompt.root; mount /cdrom
&prompt.root; cd /cdrom/X.Y-RELEASE/kernels
&prompt.root; ./install.sh GENERICΑντικαταστήστε το X.Y-RELEASE
με τους πραγματικούς αριθμούς της έκδοσης που χρησιμοποιείτε.
Ο πυρήνας GENERIC θα εγκατασταθεί από
προεπιλογή στον κατάλογο /boot/GENERIC.Αν δεν έχετε κάποια από τις παραπάνω επιλογές, μπορείτε να
μεταγλωττίσετε και να εγκαταστήσετε τον πυρήνα
GENERIC μέσω του πηγαίου κώδικα:&prompt.root; cd /usr/src/
&prompt.root; env DESTDIR=/boot/GENERIC make kernel
&prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC
&prompt.root; rm -rf /boot/GENERIC/bootΓια να αναγνωριστεί αυτός ο πυρήνας ως
GENERIC από το
freebsd-update, δεν θα πρέπει να έχουν γίνει
αλλαγές στο αρχείο ρυθμίσεων του GENERIC.
Συνίσταται επίσης η μεταγλώττιση να γίνει χωρίς άλλες
εξειδικευμένες ρυθμίσεις (κατά προτίμηση με κενό το
/etc/make.conf).Δεν χρειάζεται τη δεδομένη στιγμή να επανεκκινήσετε με τον πυρήνα
GENERIC.Είναι δυνατές οι αναβαθμίσεις τόσο σε μικρές όσο και σε μεγάλες
εκδόσεις, δίνοντας στην εντολή freebsd-update τον
επιθυμητό αριθμό έκδοσης. Για παράδειγμα, η ακόλουθη εντολή θα
αναβαθμίσει το σύστημα σε &os; 6.4:&prompt.root; freebsd-update -r 6.4-RELEASE upgradeΜετά τη λήψη της εντολής, το
freebsd-update θα αξιολογήσει την κατάσταση του
συστήματος και του αρχείου ρυθμίσεων του, σε μια απόπειρα να μαζέψει
τις απαραίτητες πληροφορίες για την αναβάθμιση του συστήματος.
Οι πληροφορίες που ανιχνεύθηκαν θα εμφανιστούν στην οθόνη με τη μορφή
μιας λίστας εγκατεστημένων προγραμμάτων. Για παράδειγμα:Looking up update.FreeBSD.org mirrors... 1 mirrors found.
Fetching metadata signature for 6.3-RELEASE from update1.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games
src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
world/base world/info world/lib32 world/manpages
The following components of FreeBSD do not seem to be installed:
kernel/generic world/catpages world/dict world/doc world/games
world/proflibs
Does this look reasonable (y/n)? yΣτο σημείο αυτό, το freebsd-update θα
κατεβάσει όλα τα αρχεία που απαιτούνται για την αναβάθμιση. Σε
μερικές περιπτώσεις, ο χρήστης θα κληθεί να απαντήσει σε ερωτήσεις
σχετικά με το τι θα εγκατασταθεί ή πως πρέπει να προχωρήσει η
διαδικασία.Όταν χρησιμοποιείται προσαρμοσμένος πυρήνας, το παραπάνω βήμα
θα προκαλέσει την εμφάνιση της παρακάτω προειδοποίησης:WARNING: This system is running a "MYKERNEL" kernel, which is not a
kernel configuration distributed as part of FreeBSD 6.3-RELEASE.
This kernel will not be updated: you MUST update the kernel manually
before running "/usr/sbin/freebsd-update install"Μπορείτε να αγνοήσετε αυτή την προειδοποίηση. Θα χρησιμοποιήσουμε
τον ενημερωμένο πυρήνα GENERIC ως ενδιάμεσο βήμα
στη διαδικασία αναβάθμισης.Αφού μεταφορτωθούν όλα τα patches στο τοπικό σύστημα, θα γίνει
και η εφαρμογή τους. Η διαδικασία αυτή ίσως πάρει λίγο χρόνο,
ανάλογα με την ταχύτητα και το φορτίο του μηχανήματος. Έπειτα θα
γίνει η συγχώνευση των αρχείων ρυθμίσεων. Αυτό το μέρος της
διαδικασίας απαιτεί παρέμβαση του χρήστη, καθώς σε κάποια αρχεία θα
χρειαστεί η συγχώνευση να γίνει χειροκίνητα με τη βοήθεια κάποιου
συντάκτη κειμένου. Ο χρήστης θα ενημερώνεται για το αποτέλεσμα κάθε
επιτυχημένης συγχώνευσης καθώς εξελίσσεται η διαδικασία. Σε
περίπτωση αποτυχημένης συγχώνευσης (ή αγνόησης της), η διαδικασία
αναβάθμισης θα διακοπεί. Ενδεχομένως να θέλετε να κρατήσετε αντίγραφο
ασφαλείας του καταλόγου /etc
και να συγχωνεύσετε αργότερα (χειροκίνητα) κάποια σημαντικά αρχεία,
όπως το master.passwd ή το
group.Στο σημείο αυτό δεν έχει γίνει ακόμα καμιά αλλαγή στο σύστημα,
καθώς όλη η διαδικασία της αναβάθμισης και συγχώνευσης γίνεται σε
διαφορετικό κατάλογο. Όταν εφαρμοστούν επιτυχώς όλα τα patches
και ολοκληρωθεί με επιτυχία η διαδικασία της συγχώνευσης όλων των
αρχείων ρύθμισης, ο χρήστης θα πρέπει να επιβεβαιώσει την τελική
εγκατάσταση.Με το τέλος αυτής τη διαδικασίας, η αναβάθμιση μπορεί να
οριστικοποιηθεί στο δίσκο, με τη χρήση της ακόλουθης εντολής:&prompt.root; freebsd-update installΣτην πρώτη φάση, θα αλλαχθεί ο πυρήνας και τα σχετικά αρθρώματα.
Στο σημείο αυτό, θα πρέπει να γίνει επανεκκίνηση του μηχανήματος.
Σε μηχάνημα με προσαρμοσμένο πυρήνα, χρησιμοποιήστε την εντολή
&man.nextboot.8; ώστε να θέσετε τον πυρήνα για την επόμενη εκκίνηση
στον /boot/GENERIC (ο οποίος
έχει ήδη αναβαθμιστεί):&prompt.root; nextboot -k GENERICΠριν επανεκκινήσετε με τον πυρήνα GENERIC,
βεβαιωθείτε ότι περιέχει όλα τα προγράμματα οδήγησης που απαιτούνται
για την επιτυχή εκκίνηση του συστήματος σας (και τη λειτουργία του
δικτύου, αν αναβαθμίζετε κάποιο απομακρυσμένο μηχάνημα).
Ειδικότερα, αν ο προηγούμενος προσαρμοσμένος πυρήνας περιείχε
λειτουργίες που συνήθως παρέχονται από αρθρώματα (modules),
βεβαιωθείτε ότι φροντίσατε να φορτωθούν προσωρινά στον πυρήνα
GENERIC χρησιμοποιώντας τις δυνατότητες του
αρχείου /boot/loader.conf. Ίσως επίσης να
θέλετε να απενεργοποιήσετε υπηρεσίες, προσαρτήσεις δίσκων και
δικτύου κ.λ.π. που δεν είναι απαραίτητες, μέχρι την ολοκλήρωση της
διαδικασίας αναβάθμισης.Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να
επανεκκινήσετε το μηχάνημα με τον νέο πυρήνα:&prompt.root; shutdown -r nowΜόλις το σύστημα επανέλθει σε λειτουργία, θα πρέπει να εκτελέσετε
ξανά το freebsd-update. Η προηγούμενη λειτουργία
έχει αποθηκευθεί, και έτσι το freebsd-update δεν θα
ξεκινήσει από την αρχή, αλλά θα απομακρύνει όλες τις παλιές
κοινόχρηστες βιβλιοθήκες και τα αρχεία αντικειμενικού κώδικα. Για να
συνεχίσετε σε αυτό το στάδιο, δώστε την ακόλουθη εντολή:&prompt.root; freebsd-update installΑνάλογα με το αν υπήρξαν αλλαγές στους αριθμούς εκδόσεων των
βιβλιοθηκών, ίσως να υπάρχουν μόνο δύο φάσεις εγκατάστασης αντί για
τρεις.Όλο το λογισμικό τρίτου κατασκευαστή θα πρέπει τώρα να
μεταγλωττιστεί και να επανεγκατασταθεί από την αρχή. Αυτό απαιτείται
καθώς το εγκατεστημένο λογισμικό ίσως εξαρτάται από βιβλιοθήκες οι
οποίες αφαιρέθηκαν κατά τη διαδικασία της αναβάθμισης. Μπορείτε να
χρησιμοποιήσετε την εντολή
ports-mgmt/portupgrade
για να αυτοματοποιήσετε αυτή τη διαδικασία. Για να ξεκινήσετε, δώστε
τις παρακάτω εντολές:&prompt.root; portupgrade -f ruby
&prompt.root; rm /var/db/pkg/pkgdb.db
&prompt.root; portupgrade -f ruby18-bdb
&prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
&prompt.root; portupgrade -afΜόλις ολοκληρωθεί το παραπάνω, ολοκληρώστε τη διαδικασία
αναβάθμισης με μια τελευταία κλήση της εντολής
freebsd-update. Δώστε την παρακάτω εντολή για να
ολοκληρώσετε οτιδήποτε έχει απομείνει στη διαδικασία
αναβάθμισης:&prompt.root; freebsd-update installΑν χρησιμοποιούσατε προσωρινά τον πυρήνα
GENERIC, αυτή είναι η κατάλληλη στιγμή για να
μεταγλωττίσετε και να εγκαταστήσετε νέο προσαρμοσμένο πυρήνα, με το
συνήθη τρόπο.Επανεκκινήστε το μηχάνημα σας στην νέα έκδοση του &os;.
Η διαδικασία έχει ολοκληρωθεί.Σύγκριση Κατάστασης του ΣυστήματοςΤο βοηθητικό πρόγραμμα freebsd-update μπορεί να
χρησιμοποιηθεί για να ελέγξετε την κατάσταση της εγκατεστημένης
έκδοσης του &os; σε σχέση με μια γνωστή και σωστή εγκατάσταση.
Η επιλογή αυτή συγκρίνει και αξιολογεί την τρέχουσα έκδοση των
προγραμμάτων συστήματος, των βιβλιοθηκών και των αρχείων ρύθμισης.
Για να ξεκινήσετε τη σύγκριση, δώστε την ακόλουθη εντολή:&prompt.root; freebsd-update IDS >> outfile.idsΑν και το όνομα της εντολής είναι IDS, δεν
θα πρέπει σε καμιά περίπτωση να θεωρηθεί υποκατάστατο ενός
συστήματος ανίχνευσης εισβολέα (intrusion detection system) όπως
είναι για παράδειγμα το
security/snort.
Καθώς το freebsd-update αποθηκεύει τα δεδομένα
του στο δίσκο, υπάρχει πάντα η πιθανότητα να έχει γίνει αλλοίωση
τους. Αν και η πιθανότητα αυτή μπορεί να μειωθεί χρησιμοποιώντας
τη ρύθμιση kern.securelevel και αποθηκεύοντας
τα δεδομένα της εντολής freebsd-update σε ένα
σύστημα αρχείων μόνο για ανάγνωση, μια ακόμα καλύτερη λύση θα ήταν
να συγκρίνετε το σύστημα με κάποιο δίσκο που θεωρείτε σίγουρα
ασφαλή. Μπορείτε να χρησιμοποιήσετε ένα δίσκο
DVD ή ένα εξωτερικό δίσκο USB
που φυλάσσετε σε ασφαλή τοποθεσία.Θα γίνει τώρα μια επιθεώρηση του συστήματος και θα εκτυπωθεί
μια λίστα από αρχεία και τιμές hash του τύπου &man.sha256.1;,
τόσο για το εγκατεστημένο όσο και για το γνωστό σύστημα. Επειδή
πρόκειται για μεγάλη λίστα, την ανακατευθύνουμε στο αρχείο
outfile.ids. Στην οθόνη το κείμενο θα κυλούσε
πολύ γρήγορα, και σύντομα θα γέμιζε την προσωρινή μνήμη απεικόνισης
της κονσόλας.Οι γραμμές αυτές έχουν γενικά μεγάλο μήκος, αλλά είναι εύκολο
να επεξεργαστούμε την έξοδο. Για παράδειγμα, για να δείτε μια λίστα
όλων των αρχείων που διαφέρουν από αυτά της επίσημης έκδοσης, δώστε
την ακόλουθη εντολή:&prompt.root; cat outfile.ids | awk '{ print $1 }' | more
/etc/master.passwd
/etc/motd
/etc/passwd
/etc/pf.confΤα παραπάνω είναι μόνο ένα μέρος της εξόδου, υπάρχουν ακόμα
πολλά διαφορετικά αρχεία. Κάποια από αυτά τα αρχεία είναι φυσιολογικό
να έχουν τροποποιηθεί. Για παράδειγμα, το
/etc/passwd έχει τροποποιηθεί, καθώς έχουν
προστεθεί χρήστες στο σύστημα. Σε μερικές περιπτώσεις, μπορεί να
υπάρχουν και άλλα αρχεία, όπως π.χ. αρθρώματα πυρήνα τα οποία
διαφέρουν αφού έχουν ενημερωθεί μέσω της
freebsd-update. Για να εξαιρέσετε συγκεκριμένα
αρχεία ή καταλόγους, προσθέστε τα στην επιλογή
IDSIgnorePaths στο αρχείο ρυθμίσεων
/etc/freebsd-update.conf.Εκτός από την χρήση που αναφέραμε προηγουμένως, το σύστημα αυτό
μπορεί να χρησιμοποιηθεί και ως τμήμα μιας λεπτομερούς διαδικασίας
αναβάθμισης.TomRhodesΓράφηκε από τον ColinPercivalΒασισμένο σε σημειώσεις που παρείχε ο Portsnap: Ένα Εργαλείο Ενημέρωσης της Συλλογής των PortsUpdating and UpgradingPortsnapUpdating and UpgradingΤο βασικό σύστημα του &os; περιλαμβάνει επίσης ένα βοηθητικό
πρόγραμμα για την ενημέρωση της Συλλογής των Ports. Πρόκειται για το
&man.portsnap.8;. Όταν το εκτελέσετε, θα συνδεθεί σε ένα απομακρυσμένο
διακομιστή, θα επαληθεύσει το κλειδί του πηγαίου κώδικα, και θα
κατεβάσει ένα νέο αντίγραφο της Συλλογής των Ports. Το κλειδί
χρησιμοποιείται για να επαληθεύσει την ακεραιότητα όλων των αρχείων
που μεταφορτώνονται, εξασφαλίζοντας ότι δεν έχουν αλλοιωθεί κατά
την μεταφορά. Για να κατεβάσετε τα τελευταία αρχεία της Συλλογής των
Ports, εκτελέστε την ακόλουθη εντολή:&prompt.root; portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found.
Fetching snapshot tag from portsnap1.FreeBSD.org... done.
Fetching snapshot metadata... done.
Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... done.
Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done.
Applying patches... done.
Fetching 133 new ports or files... done.Το παραπάνω παράδειγμα δείχνει ότι το &man.portsnap.8;
βρήκε και επαλήθευσε αρκετά patches τα οποία πρέπει να εφαρμοστούν
στο υπάρχον δέντρο των ports. Αυτό δείχνει επίσης ότι το πρόγραμμα
έχει εκτελεστεί κατά το παρελθόν. Αν αυτή ήταν η πρώτη φορά που
εκτελούνταν, θα γίνονταν απλώς κατέβασμα της συλλογής.Όταν το &man.portsnap.8; εκτελέσει επιτυχώς της λειτουργία
fetch, η Συλλογή των Ports και τα
αντίστοιχα patches έχουν αποθηκευθεί στο τοπικό σύστημα και έχει γίνει
η επαλήθευση τους. Τα ενημερωμένα αρχεία μπορούν να εγκατασταθούν
γράφοντας:&prompt.root; portsnap extract
/usr/ports/.cvsignore
/usr/ports/CHANGES
/usr/ports/COPYRIGHT
/usr/ports/GIDs
/usr/ports/KNOBS
/usr/ports/LEGAL
/usr/ports/MOVED
/usr/ports/Makefile
/usr/ports/Mk/bsd.apache.mk
/usr/ports/Mk/bsd.autotools.mk
/usr/ports/Mk/bsd.cmake.mk
...Η διαδικασία έχει πλέον ολοκληρωθεί, και μπορείτε να εγκαταστήσετε
ή να αναβαθμίσετε εφαρμογές χρησιμοποιώντας την ενημερωμένη Συλλογή των
Ports.Παρακολούθηση Ενός Κλάδου Ανάπτυξης-CURRENT-STABLEΥπάρχουν δύο κλάδοι ανάπτυξης στο &os;, το &os.current; και το
&os.stable;. Στην ενότητα αυτή, θα εξηγήσουμε κάποια πράγματα σχετικά
με αυτούς τους κλάδους, και θα περιγράψουμε πως μπορείτε να διατηρήσετε
το σύστημα σας ενημερωμένο σε κάποιον από αυτούς. Θα μιλήσουμε αρχικά
για το &os.current; και έπειτα για το &os.stable;.Παρακολουθώντας το &os.current;Καθώς διαβάζετε αυτό το κείμενο, να έχετε υπόψιν σας ότι το
&os.current; είναι πράγματι η κόψη του ξυραφιού στην
ανάπτυξη του &os;. Οι χρήστες του &os.current; αναμένεται να έχουν
αυξημένες τεχνικές γνώσεις, και να είναι ικανοί να επιλύουν δύσκολα
προβλήματα του συστήματος τους, χωρίς βοήθεια. Αν είστε καινούριος
στο &os;, μάλλον θα πρέπει να το ξανασκεφτείτε πριν το
εγκαταστήσετε.Τι Είναι το &os.current;;snapshotΤο &os.current; αποτελείται από τον πλέον πρόσφατο λειτουργικό
πηγαίο κώδικα του &os;. Περιλαμβάνει αλλαγές που βρίσκονται σε
εξέλιξη, πειραματικές αλλαγές, και μηχανισμούς μετάβασης οι οποίοι
δεν είναι σίγουρο ότι θα περιλαμβάνονται στην επόμενη επίσημη
έκδοση του λογισμικού. Αν και πολλά μέλη της ομάδας ανάπτυξης του
&os; μεταγλωττίζουν καθημερινά τον πηγαίο κώδικα του &os.current;,
υπάρχουν χρονικές περίοδοι που η μεταγλώττιση του είναι αδύνατη.
Τα προβλήματα αυτά γενικά επιλύονται όσο πιο γρήγορα γίνεται, αλλά
το αν το &os.current; θα σας φέρει την καταστροφή ή κάποιο
πολυπόθητο χαρακτηριστικό, είναι περισσότερο θέμα της χρονικής
στιγμής που θα επιλέξετε να ανακτήσετε τον πηγαίο κώδικα!Ποιος Χρειάζεται το &os.current;;Το &os.current; διατίθεται και ενδιαφέρει κυρίως τις παρακάτω
τρεις ομάδες:Μέλη της κοινότητας του &os; που δουλεύουν ενεργά σε κάποιο
τμήμα του πηγαίου κώδικα, και για τους οποίους η παρακολούθηση
του &os.current; είναι απόλυτα απαραίτητη.Μέλη της κοινότητας του &os; που είναι ενεργοί testers
και είναι πρόθυμοι να αναλώσουν το χρόνο τους για να λύσουν
προβλήματα, ώστε να εξασφαλίσουν ότι το &os.current;
θα παραμείνει όσο το δυνατόν πιο σωστό. Συνήθως, τα μέλη αυτά
κάνουν προτάσεις για τοπικές αλλαγές και για την γενική
κατεύθυνση του &os;, και στέλνουν patches για την
πραγματοποίηση τους.Αυτοί που απλώς θέλουν να βλέπουν τις τελευταίες
ενημερώσεις, ή να χρησιμοποιούν τον τελευταίο πηγαίο κώδικα ως
αναφορά (π.χ. για μελέτη και όχι για
εκτέλεση). Μέλη αυτής της ομάδας μπορεί επίσης περιστασιακά να
συνεισφέρουν σχόλια ή κώδικα.Τι Δεν Είναι το &os.current;;Δεν είναι ένας γρήγορος τρόπος να πάρετε κώδικα ο
οποίος δεν έχει κυκλοφορήσει ακόμα σε κάποια έκδοση, με την
ελπίδα ότι περιέχει κάποια νέα εκπληκτική δυνατότητα και
θέλετε να είστε ο πρώτος που τη χρησιμοποιεί. Αν είστε
πράγματι ο πρώτος που την χρησιμοποιεί, θα είστε επίσης και ο
πρώτος που θα συναντήσετε τα νέα προβλήματα και bugs.Δεν είναι ένας γρήγορος τρόπος για να ανακτήσετε
διορθώσεις προβλημάτων. Κάθε νέα έκδοση του &os.current;
μπορεί να εισάγει τόσα νέα bugs όσα και αυτά που
διορθώνει.Το &os.current; δεν αποτελεί
επίσημα υποστηριζόμενο κώδικα. Αν και
καταβάλλουμε κάθε δυνατή προσπάθεια να βοηθήσουμε όσους
ανήκουν πραγματικά σε κάποια από τις τρεις
ομάδες που αναφέραμε, ωστόσο δεν έχουμε το
χρόνο να παρέχουμε τεχνική υποστήριξη. Αυτό δεν
συμβαίνει επειδή είμαστε κακοήθεις και δύσκολοι και δεν θέλουμε
να βοηθάμε τους ανθρώπους (δεν θα είχαμε καν δημιουργήσει το
&os; αν σκεφτόμασταν έτσι). Πολύ απλά, δεν μπορούμε να
απαντάμε εκατοντάδες μηνύματα την ημέρα και
ταυτόχρονα να δουλεύουμε στο &os;! Αν
δώσετε σε οποιοδήποτε μέλος της ομάδας ανάπτυξης την επιλογή
να απαντάει σε πολλές ερωτήσεις σχετικά με πειραματικό κώδικα
ή να δουλεύει για τη βελτίωση του &os;, θα επιλέξει σίγουρα το
δεύτερο.Χρησιμοποιώντας το &os.current;-CURRENTusingΓραφτείτε στις λίστες &a.current.name; και
&a.svn-src-head.name;. Δεν είναι απλώς καλή ιδέα, είναι
βασικό να το κάνετε. Αν δεν είστε
γραμμένος στη λίστα &a.current.name;, δεν
θα βλέπετε τα σχόλια σχετικά με την τρέχουσα κατάσταση του
συστήματος από όσους το χρησιμοποιούν, και έτσι πιθανώς θα
καταλήξετε να αντιμετωπίζετε πολλά προβλήματα που άλλοι έχουν
ήδη ανακαλύψει και λύσει. Ακόμα πιο σημαντικό είναι ότι θα
χάνετε σημαντικές ανακοινώσεις, οι οποίες μπορεί να είναι
κρίσιμες για την διατήρηση του συστήματος σας σε υγιή
κατάσταση.Η λίστα &a.svn-src-head.name; θα σας επιτρέψει να βλέπετε
τις καταχωρήσεις στο commit log για κάθε αλλαγή που γίνεται,
καθώς και πληροφορίες για πιθανές παρενέργειες που μπορεί να
έχει.Για να γραφτείτε σε αυτές, ή σε οποιεσδήποτε από τις
υπάρχουσες λίστες, επισκεφθείτε την τοποθεσία
&a.mailman.lists.link; και επιλέξτε τη λίστα στην οποία θέλετε
να γίνετε συνδρομητής. Οδηγίες για την υπόλοιπη διαδικασία
θα βρείτε επιτόπου. Αν σας ενδιαφέρει να παρακολουθείτε τις
αλλαγές σε όλο το δέντρο πηγαίου κώδικα, σας συνιστούμε να
εγγραφείτε στη λίστα &a.svn-src-all.name;.Ανακτήστε τον πηγαίο κώδικα από ένα
mirror site του &os;. Αυτό
μπορεί να γίνει με δύο τρόπους:cvsupcron-CURRENTSyncing with CVSupΧρησιμοποιήστε το πρόγραμμα cvsup σε συνδυασμό με το
supfile με την ονομασία
standard-supfile το οποίο θα βρείτε
στον κατάλογο
/usr/share/examples/cvsup.
Αυτή είναι και η πλέον συνιστώμενη μέθοδος, καθώς σας
επιτρέπει να ανακτήσετε όλη τη συλλογή με μια κίνηση, και
στις επόμενες ανανεώσεις θα παίρνετε μόνο τις αλλαγές.
Πολλοί χρήστες εκτελούν το cvsup μέσω
του cron ώστε να κρατάνε τον πηγαίο
κώδικα του συστήματος τους πάντα ανανεωμένο αυτόματα. Θα
πρέπει να προσαρμόσετε το υπόδειγμα του
supfile που δίνουμε παραπάνω, και να
ρυθμίσετε το cvsup για το
περιβάλλον σας.Το υπόδειγμα του αρχείου
standard-supfile προορίζεται για
χρήση με κάποιο συγκεκριμένο κλάδο ασφάλειας (security
branch) του &os;, και όχι με το &os.current;. Θα πρέπει
να επεξεργαστείτε το αρχείο και να αντικαταστήσετε την
παρακάτω γραμμή:*default release=cvs tag=RELENG_X_Yμε την ακόλουθη:*default release=cvs tag=.Για περισσότερες πληροφορίες σχετικά με τα tags που
μπορείτε να χρησιμοποιήσετε, παρακαλούμε διαβάστε στο
Εγχειρίδιο την ενότητα Ετικέτες (Tags) για το CVS.-CURRENTSyncing with CTMΧρησιμοποιήστε την υπηρεσία CTM. Αν έχετε πολύ κακή
συνδεσιμότητα (υψηλό κόστος σύνδεσης ή πρόσβαση μόνο μέσω
email) το CTM αποτελεί για σας
μια εναλλακτική λύση. Μπορεί ωστόσο να σας δημιουργήσει
διάφορα προβλήματα και να καταλήξετε με χαλασμένα αρχεία.
Για το λόγο αυτό, το CTM
χρησιμοποιείται σπάνια, κάτι το οποίο αυξάνει ακόμα
περισσότερο την πιθανότητα να μη δουλεύει σωστά για μεγάλα
χρονικά διαστήματα. Σας συνιστούμε να χρησιμοποιήσετε το
CVSup
αν διαθέτετε modem 9600 bps ή ταχύτερο.Αν σκοπεύετε να ανακτήσετε τον πηγαίο κώδικα για κανονική
χρήση (εκτέλεση) και όχι απλώς για να τον δείτε, τότε
ανακτήστε ολόκληρο το &os.current; και όχι
κάποια επιλεγμένα τμήματα. Σε διαφορετική περίπτωση, είναι
αρκετά πιθανό να συναντήσετε προβλήματα, καθώς πολλά κομμάτια
του κώδικα εξαρτώνται από ανανεώσεις σε άλλα, και δεν μπορούν
να μεταγλωττιστούν αυτόνομα.-CURRENTcompilingΠριν μεταγλωττίσετε το &os.current;, διαβάστε προσεκτικά το
Makefile στον κατάλογο
/usr/src. Θα πρέπει να μεταγλωττίσετε τον πυρήνα και όλο το
βασικό σύστημα (world) την πρώτη φορά, ως μέρος της
διαδικασίας αναβάθμισης. Διαβάζοντας την &a.current;
και το /usr/src/UPDATING θα είστε
ενημερωμένοι για νέες διαδικασίες όσο αφορά την εκκίνηση στο νέο
σας σύστημα. Οι διαδικασίες αυτές είναι συχνά απαραίτητες όσο
πλησιάζουμε σε μια νέα επίσημη έκδοση.Γίνετε ενεργό μέλος! Αν χρησιμοποιείτε το &os.current;,
θέλουμε να ξέρουμε τη γνώμη σας για αυτό, ειδικά αν έχετε
προτάσεις για βελτιώσεις ή διορθώσεις λαθών. Προτάσεις που
συνοδεύονται και από κώδικα γίνονται δεκτές με
ενθουσιασμό!Χρησιμοποιώντας το &os;-STABLEΤι Είναι το &os.stable;;-STABLEΤο &os.stable; είναι ένας κλάδος ανάπτυξης από τον οποίο
προκύπτουν οι μεγάλες (major) εκδόσεις. Οι αλλαγές
εισάγονται σε αυτό τον κλάδο με διαφορετικό ρυθμό, και με τη γενική
παραδοχή ότι έχουν πρώτα περάσει από το &os.current; για δοκιμή.
Ωστόσο, δεν παύει να είναι ένας κλάδος
ανάπτυξης, και αυτό σημαίνει ότι ο κώδικας του &os.stable; μπορεί
μια δεδομένη χρονική στιγμή να είναι ακατάλληλος για συγκεκριμένες
εφαρμογές. Πρόκειται για μια ακόμα γραμμή ανάπτυξης για τους
προγραμματιστές, και δεν είναι απαραίτητα κατάλληλη για τους
τελικούς χρήστες.Ποιος Χρειάζεται το &os.stable;;Αν σας ενδιαφέρει να παρακολουθείτε ή να συμβάλλετε στην
ανάπτυξη του &os;, και ειδικά όσο αφορά την επόμενη επίσημη
έκδοση του από τον ίδιο κλάδο (point release), είναι καλή ιδέα να
παρακολουθείτε το &os.stable;.Αν και είναι αλήθεια ότι οι διορθώσεις ασφάλειας γίνονται και
στον κλάδο &os.stable;, ωστόσο δεν χρειάζεται
να παρακολουθείτε το &os.stable; μόνο για αυτό το λόγο. Κάθε
αναφορά προβλήματος ασφάλειας του &os; εξηγεί πως να διορθώσετε το
πρόβλημα για κάθε επίσημη έκδοση η οποία επηρεάζεται από αυτό
Αυτό βέβαια δεν είναι απόλυτα αληθινό. Δεν μπορούμε
να συνεχίσουμε να υποστηρίζουμε τις παλιές εκδόσεις του &os; για
πάντα, αν και τις υποστηρίζουμε για πολλά χρόνια. Για πλήρη
περιγραφή της τρέχουσας πολιτικής όσο αφορά την ασφάλεια των
παλιών εκδόσεων του &os;, δείτε http://www.FreeBSD.org/security/.,
και η παρακολούθηση ενός κλάδου ανάπτυξης μόνο για λόγους
ασφαλείας, πιθανόν να φέρει επίσης και άλλες ανεπιθύμητες αλλαγές
μαζί της.Αν και καταβάλλουμε κάθε δυνατή προσπάθεια ώστε να εξασφαλίσουμε
ότι ο κλάδος &os.stable; μπορεί να μεταγλωττιστεί και να εκτελεστεί
σε κάθε δεδομένη χρονική στιγμή, δεν μπορούμε ωστόσο να το
εγγυηθούμε. Επιπρόσθετα, αν και ο κώδικας αναπτύσσεται στο
&os.current; πριν περάσει στο &os.stable;, ο κόσμος που εκτελεί το
&os.stable; είναι περισσότερος, και έτσι είναι αναπόφευκτο να
ανακαλύπτονται πιο πολλά σφάλματα και ακραίες περιπτώσεις στο
&os.stable; τα οποία δεν έχουν γίνει εμφανή στο &os.current;.Για τους λόγους αυτούς, δεν συνιστούμε να
παρακολουθείτε τυφλά το &os.stable;, και ειδικότερα είναι σημαντικό
να μην αναβαθμίζετε σε αυτό εξυπηρετητές σε περιβάλλοντα παραγωγής,
χωρίς να έχετε πρώτα ελέγξει αναλυτικά τον κώδικα στο δικό σας
περιβάλλον ανάπτυξης.Αν δεν διαθέτετε τους πόρους για να το κάνετε αυτό, σας
συνιστούμε να χρησιμοποιείτε την τελευταία επίσημη έκδοση του &os;,
και να αναβαθμίζεστε από τη μια έκδοση στην επόμενη μέσω του
μηχανισμού δυαδικών ενημερώσεων.Χρησιμοποιώντας το &os.stable;-STABLEusingΓραφτείτε συνδρομητής στη λίστα &a.stable.name;. Θα είστε
έτσι ενημερωμένοι για εξαρτήσεις μεταγλώττισης που ίσως
εμφανιστούν στο &os.stable;, ή για άλλα προβλήματα που χρήζουν
ειδικής προσοχής. Στη λίστα αυτή θα βρίσκετε επίσης
ανακοινώσεις από μέλη της ομάδας ανάπτυξης, όταν πρόκειται να
συμπεριληφθεί κάποια αμφιλεγόμενη ανανέωση ή διόρθωση, δίνοντας
έτσι στους χρήστες την ευκαιρία να εκφέρουν γνώμη σχετικά με τα
προβλήματα που θα προκαλέσει η προτεινόμενη αλλαγή.Θα πρέπει να εγγραφείτε στην κατάλληλη λίστα
SVN ανάλογα με τον κλάδο που
παρακολουθείτε. Για παράδειγμα, αν παρακολουθείτε τον κλάδο
7-STABLE, η κατάλληλη λίστα είναι η &a.svn-src-stable-7.name;.
Αυτό θα σας επιτρέψει να βλέπετε τις
καταχωρήσεις στο commit log για κάθε αλλαγή που γίνεται, καθώς
και πληροφορίες για πιθανές παρενέργειες που μπορεί να
έχει.Για να γραφτείτε σε αυτές, ή σε οποιεσδήποτε από τις
υπάρχουσες λίστες, επισκεφθείτε την τοποθεσία
&a.mailman.lists.link; και επιλέξτε τη λίστα στην οποία θέλετε
να γίνετε συνδρομητής. Οδηγίες για την υπόλοιπη διαδικασία
θα βρείτε επιτόπου. Αν σας ενδιαφέρει να παρακολουθείτε τις
αλλαγές σε όλο το δέντρο πηγαίου κώδικα, σας συνιστούμε να
εγγραφείτε στη λίστα &a.svn-src-all.name;.Αν πρόκειται να εγκαταστήσετε ένα νέο σύστημα με σκοπό να
εκτελείτε τα μηνιαία snapshot του &os.stable;, παρακαλούμε να
ελέγξετε την τοποθεσία Snapshots για
περισσότερες πληροφορίες. Εναλλακτικά, είναι δυνατόν να
εγκαταστήσετε το πιο πρόσφατο &os.stable; από κάποιο
mirror site ακολουθώντας τις
παρακάτω οδηγίες ώστε να αναβαθμίσετε το σύστημα σας στην πλέον
πρόσφατη έκδοση πηγαίου κώδικα του &os.stable;.Αν διαθέτετε ήδη κάποια προηγούμενη έκδοση του &os; και
επιθυμείτε να αναβαθμιστείτε μέσω του πηγαίου κώδικα, μπορείτε
εύκολα να χρησιμοποιήσετε κάποιο mirror site του &os;. Υπάρχουν δύο
τρόποι για να γίνει αυτό:cvsupcron-STABLEsyncing with CVSupΧρησιμοποιήστε το πρόγραμμα cvsup σε συνδυασμό με το
supfile με την ονομασία
stable-supfile το οποίο θα βρείτε
στον κατάλογο
/usr/share/examples/cvsup.
Αυτή είναι και η πλέον συνιστώμενη μέθοδος, καθώς σας
επιτρέπει να ανακτήσετε όλη τη συλλογή με μια κίνηση, και
στις επόμενες ανανεώσεις θα παίρνετε μόνο τις αλλαγές.
Πολλοί χρήστες εκτελούν το cvsup μέσω
του cron ώστε να κρατάνε τον πηγαίο
κώδικα του συστήματος τους πάντα ανανεωμένο αυτόματα. Θα
πρέπει να προσαρμόσετε το υπόδειγμα του
supfile που δίνουμε παραπάνω, και να
ρυθμίσετε το cvsup για το
περιβάλλον σας.-STABLEsyncing with CTMΧρησιμοποιήστε την υπηρεσία CTM. Αν δεν έχετε
γρήγορη και φτηνή σύνδεση με το Internet, αυτή είναι η
συνιστώμενη μέθοδος.Ουσιαστικά, αν χρειάζεστε γρήγορη και κατά απαίτηση
πρόσβαση στον πηγαίο κώδικα, και το εύρος ζώνης της σύνδεσης
δεν αποτελεί πρόβλημα, χρησιμοποιήστε το
cvsup ή το ftp.
Διαφορετικά, χρησιμοποιήστε το
CTM.-STABLEcompilingΠριν μεταγλωττίσετε το &os.stable;, διαβάστε προσεκτικά το
Makefile στον κατάλογο
/usr/src. Θα πρέπει να μεταγλωττίσετε τον πυρήνα και όλο το
βασικό σύστημα (world) την πρώτη φορά, ως μέρος της
διαδικασίας αναβάθμισης. Διαβάζοντας την &a.stable;
και το /usr/src/UPDATING θα είστε
ενημερωμένοι για νέες διαδικασίες όσο αφορά την εκκίνηση στο νέο
σας σύστημα. Οι διαδικασίες αυτές είναι συχνά απαραίτητες όσο
πλησιάζουμε σε μια νέα επίσημη έκδοση.Συγχρονίζοντας τον Πηγαίο σας ΚώδικαΥπάρχουν διάφοροι τρόποι να χρησιμοποιήσετε μια σύνδεση Internet
(ή email) για να ενημερώνετε οποιοδήποτε τμήμα πηγαίου
κώδικα του &os; Project σας ενδιαφέρει, ή και όλα αν το
επιθυμείτε. Οι βασικές υπηρεσίες που προσφέρουμε είναι το
Ανώνυμο CVS, το
CVSup, και το CTM.Αν και είναι δυνατόν να ενημερώσετε μόνο κάποια τμήματα του
δέντρου πηγαίου κώδικα, η μόνη διαδικασία ενημέρωσης που
υποστηρίζεται αφορά την ενημέρωση ολόκληρου του δέντρου. Μετά την
ενημέρωση, θα πρέπει να μεταγλωττίσετε ξανά τόσο το userland (δηλ. τα
προγράμματα που εκτελούνται στην περιοχή χρήστη, όπως αυτά που
βρίσκονται στους καταλόγους /bin και
/sbin) όσο και τον πηγαίο κώδικα του πυρήνα.
Αν ενημερώσετε μόνο ένα τμήμα του πηγαίου κώδικα, μόνο τον πυρήνα ή
μόνο το userland, θα αντιμετωπίσετε προβλήματα. Τα προβλήματα αυτά
μπορεί να κυμαίνονται από σφάλματα μεταγλώττισης μέχρι kernel panic
και καταστροφή δεδομένων.CVSanonymousΤο Ανώνυμο CVS και το
CVSup χρησιμοποιούν τη μέθοδο
pull για την ενημέρωση του πηγαίου κώδικα. Στην
περίπτωση του CVSup, ο χρήστης (η κάποιο
script που εκτελείται μέσω cron) εκτελεί το πρόγραμμα
cvsup το οποίο αλληλεπιδρά με ένα αντίστοιχο
εξυπηρετητή cvsupd ώστε να ενημερώσει τα σχετικά
αρχεία. Οι ενημερώσεις που λαμβάνετε είναι πάντοτε οι τελευταίες
διαθέσιμες, και θα τις λάβετε μόνο όταν τις ζητήσετε. Μπορείτε εύκολα
να περιορίσετε τις ενημερώσεις σε συγκεκριμένα αρχεία ή καταλόγους τα
οποία σας ενδιαφέρουν. Οι ενημερώσεις δημιουργούνται δυναμικά από τον
εξυπηρετητή, ανάλογα με το τι έχετε εγκατεστημένο και τι επιθυμείτε να
λάβετε. Το Ανώνυμο CVS είναι κάπως πιο
απλοϊκό από το CVSup, δεδομένου ότι είναι
απλώς μια επέκταση του CVS που επιτρέπει την
ανάκτηση αλλαγών απευθείας από κάποιο απομακρυσμένο CVS repository. Το
CVSup είναι αρκετά πιο αποτελεσματικό σε
αυτόν το τομέα, αλλά το Ανώνυμο CVS είναι
απλούστερο στη χρήση.CTMΑπό την άλλη μεριά, το CTM δεν συγκρίνει
άμεσα τον πηγαίο κώδικα που έχετε με αυτόν που υπάρχει στον κεντρικό
εξυπηρετητή ώστε να ανακτήσει μόνο τις αλλαγές. Αντίθετα, στο κεντρικό
μηχάνημα CTM, εκτελείται αρκετές φορές την ημέρα ένα script. Το script
αυτό αναγνωρίζει τις αλλαγές στα αρχεία σε σχέση με την προηγούμενη
εκτέλεση του, και έπειτα πακετάρει και συμπιέζει τις αλλαγές με τρόπο
κατάλληλο για αποστολή μέσω email (μόνο εκτυπώσιμοι ASCII χαρακτήρες).
Σε κάθε τέτοιο πακέτο αλλαγών αντιστοιχίζεται ένας μοναδιαίος αριθμός
ακολουθίας (sequence number) που το αναγνωρίζει. Μετά τη λήψη τους,
μπορείτε να δώσετε αυτά τα αρχεία διαφορών του
CTM (CTM deltas) στο βοηθητικό
πρόγραμμα &man.ctm.rmail.1; το οποίο αυτόματα θα τα αποκωδικοποιήσει,
θα τα επαληθεύσει, και θα εφαρμόσει τις αλλαγές στο αντίγραφο πηγαίου
κώδικα του χρήστη. Η διαδικασία αυτή είναι πολύ πιο αποδοτική από το
CVSup, και επιβαρύνει λιγότερο τους
εξυπηρετητές μας, καθώς είναι μια διαδικασία τύπου
push αντί για pull.Υπάρχουν φυσικά κάποια σημεία που υστερεί. Αν από λάθος διαγράψετε
κάποια τμήματα του πηγαίου σας κώδικα, το
CVSup θα ανιχνεύσει και θα διορθώσει αυτόματα
τη βλάβη για σας. Το CTM δεν θα το κάνει
αυτό, και αν σβήσετε κάποιο τμήμα του δέντρου σας (και δεν έχετε
αντίγραφο ασφαλείας) θα πρέπει να ξεκινήσετε από την αρχή (από το πιο
πρόσφατο CVS base delta) και να το ξανακτίσετε από την
αρχή με το CTM. Με το
Ανώνυμο CVS, μπορείτε απλώς να διαγράψετε
τα προβληματικά αρχεία και να συγχρονίσετε ξανά τον πηγαίο σας
κώδικα.Μεταγλωττίζοντας το Βασικό Σύστημα (world)Rebuilding worldΈχοντας συγχρονίσει το τοπικό σας δέντρο πηγαίου κώδικα σε κάποια
συγκεκριμένη έκδοση του &os; (&os.stable;, &os.current;, κ.ο.κ.),
μπορείτε έπειτα να το χρησιμοποιήσετε για να μεταγλωττίσετε το
σύστημα σας από την αρχή.Δημιουργήστε Ένα Αντίγραφο ΑσφαλείαςΔεν μπορούμε παρά να τονίσουμε πόσο σημαντικό είναι να
δημιουργήσετε ένα αντίγραφο ασφαλείας του συστήματος σας
πριν ξεκινήσετε αυτή τη διαδικασία. Αν και η
μεταγλώττιση του βασικού συστήματος είναι (όσο τουλάχιστον ακολουθείτε
αυτές τις οδηγίες) μια σχετικά απλή διαδικασία, αναμφίβολα θα υπάρξουν
και περιπτώσεις που λάθη δικά σας, ή άλλων (στο δέντρο πηγαίου
κώδικα), θα σας οδηγήσουν σε ένα σύστημα που δεν θα μπορεί να
εκκινήσει.Βεβαιωθείτε ότι έχετε ενημερωμένο αντίγραφο ασφαλείας. Καλό θα
είναι να έχετε επίσης πρόχειρη μια δισκέτα fixit ή ένα CD εκκίνησης.
Ίσως να μην χρειαστεί ποτέ να τα χρησιμοποιήσετε, αλλά καλύτερα να
είστε ασφαλής παρά να το μετανοιώνετε αργότερα!Γίνετε Συνδρομητής στη Σωστή Λίστα Ηλ. Ταχυδρομείουmailing listΑπό τη φύση τους, οι κλάδοι &os.stable; και &os.current;
βρίσκονται σε συνεχή ανάπτυξη. Όσοι συνεισφέρουν
στο &os; είναι απλώς άνθρωποι, και περιστασιακά λάθη απλώς
συμβαίνουν.Ορισμένες φορές τα λάθη αυτά είναι μάλλον ακίνδυνα, και το μόνο
που κάνουν είναι να εμφανίζουν μερικές διαγνωστικές προειδοποιήσεις
στο σύστημα σας. Ή μπορεί η αλλαγή να είναι καταστροφική, και να
οδηγήσει το σύστημα σας σε αδυναμία εκκίνησης ή ακόμα και να
καταστρέψει τα συστήματα αρχείων σας (ή και ακόμα χειρότερες
συνέπειες).Αν συμβούν τέτοια προβλήματα, σύντομα θα εμφανιστεί ένα μήνυμα
τύπου heads up στις σχετικές λίστες ταχυδρομείου, το
οποίο θα εξηγεί το πρόβλημα και ποια συστήματα επηρεάζει. Όταν το
πρόβλημα λυθεί, θα γίνει μια αντίστοιχη all clear
ανακοίνωση.Αν προσπαθείτε να ακολουθήσετε το &os.stable; ή το &os.current;,
και δεν διαβάζετε τις αντίστοιχες λίστες &a.stable.name; και
&a.current.name;, ψάχνετε για μπελάδες.Μην Χρησιμοποιήσετε την εντολή
make worldΜεγάλο μέρος της παλαιότερης τεκμηρίωσης, συνιστά τη χρήση της
εντολής make world. Αν την χρησιμοποιήσετε, θα
παραλειφθούν ορισμένα σημαντικά βήματα της διαδικασίας.
Χρησιμοποιήστε τη μόνο αν είστε απόλυτα σίγουροι για αυτό που κάνετε.
Για τις περισσότερες περιπτώσεις, η εντολή
make world είναι λανθασμένη, και αντί για αυτή
θα πρέπει να ακολουθήσετε τη διαδικασία που περιγράφουμε
παρακάτω.Ο Κανονικός Τρόπος να Ενημερώσετε το Σύστημα σαςΠριν ενημερώσετε το σύστημα σας, θα πρέπει να ελέγξετε το
/usr/src/UPDATING για τυχόν βήματα που θα πρέπει
να εκτελέσετε πριν την εκκίνηση της μεταγλώττισης. Τα βήματα αυτά
εξαρτώνται από την έκδοση του πηγαίου κώδικα που πρόκειται να
χρησιμοποιήσετε. Έπειτα, ακολουθήστε την παρακάτω διαδικασία:&prompt.root; cd /usr/src
&prompt.root; make buildworld
&prompt.root; make buildkernel
&prompt.root; make installkernel
&prompt.root; shutdown -r nowΥπάρχουν κάποιες μάλλον σπάνιες περιπτώσεις, που απαιτείται
μια επιπλέον εκτέλεση του mergemaster -p πριν
το βήμα buildworld. Οι περιπτώσεις αυτές
περιγράφονται στο UPDATING. Σε γενικές
γραμμές πάντως, μπορείτε με ασφάλεια να παραλείψετε αυτό το βήμα,
αν δεν αναβαθμίζετε το σύστημα σας μεταξύ πολλαπλών εκδόσεων του
&os;.Μετά την επιτυχή ολοκλήρωση του
installkernel, θα πρέπει να επανεκκινήσετε
σε κατάσταση ενός χρήστη (π.χ. χρησιμοποιώντας την εντολή
boot -s στην προτροπή του φορτωτή εκκίνησης).
Έπειτα εκτελέστε:&prompt.root; mount -a -t ufs
&prompt.root; mergemaster -p
&prompt.root; cd /usr/src
&prompt.root; make installworld
&prompt.root; mergemaster
&prompt.root; rebootΔιαβάστε τις Επιπλέον ΕξηγήσειςΗ διαδικασία που περιγράψαμε παραπάνω είναι μια απλή περίληψη
για να σας βοηθήσει να ξεκινήσετε. Θα πρέπει ωστόσο να διαβάσετε
τις παρακάτω ενότητες για να κατανοήσετε πλήρως κάθε βήμα, ειδικά
αν θέλετε να χρησιμοποιήσετε δικό σας προσαρμοσμένο πυρήνα.Διαβάστε το /usr/src/UPDATINGΠριν κάνετε οτιδήποτε άλλο, διαβάστε το
/usr/src/UPDATING (ή το αντίστοιχο αρχείο, αν
έχετε αποθηκεύσει τον πηγαίο κώδικα σε άλλο κατάλογο). Το αρχείο
αυτό περιέχει σημαντικές πληροφορίες σχετικά με προβλήματα που μπορεί
να συναντήσετε ή ίσως να καθορίζει τη σειρά με την οποία πρέπει να
εκτελεστούν κάποιες εντολές. Αν το αρχείο
UPDATING έρχεται σε σύγκρουση με κάτι που
διαβάσατε εδώ, προτεραιότητα έχει το αρχείο
UPDATING.Η ανάγνωση του αρχείου UPDATING δεν είναι
αποδεκτό υποκατάστατο της συνδρομής στη σωστή λίστα ηλεκτρονικού
ταχυδρομείου, όπως περιγράψαμε προηγουμένως. Οι δύο απαιτήσεις
είναι συμπληρωματικές, δεν αλληλοαναιρούνται.Ελέγξτε το /etc/make.confmake.confΕξετάστε τα αρχεία
/usr/share/examples/etc/make.conf
και
/etc/make.conf. Το πρώτο περιέχει κάποιες
προεπιλεγμένες μεταβλητές (defines), οι περισσότερες από τις οποίες
είναι ως σχόλια. Για να τα χρησιμοποιήσετε όταν μεταγλωττίζετε το
σύστημα σας, προσθέστε τα στο /etc/make.conf.
Να έχετε υπόψη σας, πως οτιδήποτε προσθέτετε στο αρχείο
/etc/make.conf χρησιμοποιείτε επίσης κάθε φορά
που εκτελείτε την εντολή make, έτσι είναι γενικά
καλή ιδέα να βάλετε τιμές που είναι λογικές για το
σύστημα σας.Ένας τυπικός χρήστης θα θέλει πιθανώς να αντιγράψει τις γραμμές
CFLAGS και
NO_PROFILE από το αρχείο
/usr/share/examples/etc/make.conf
στο
/etc/make.conf αφαιρώντας ταυτόχρονα και το
σύμβολο του σχολίου.Εξετάστε και τις άλλες μεταβλητές (COPTFLAGS,
NOPORTDOCS κ.ο.κ.) και αποφασίστε αν σχετίζονται
με το επιθυμητό για σας αποτέλεσμα.Ενημερώστε τα Αρχεία στο /etcΟ κατάλογος /etc περιέχει μεγάλο μέρος των
πληροφοριών ρύθμισης του συστήματος σας, όπως επίσης και scripts που
εκτελούνται κατά την εκκίνηση του συστήματος. Μερικά από τα scripts
αυτά αλλάζουν από έκδοση σε έκδοση του &os;.Ορισμένα από τα αρχεία ρυθμίσεων χρησιμοποιούνται επίσης κατά την
καθημερινή χρήση του συστήματος. Το /etc/group
είναι ένα από αυτά.Έχουν υπάρξει περιπτώσεις στο παρελθόν, όπου το
make installworld ανέμενε από πριν την ύπαρξη
συγκεκριμένων ονομάτων χρηστών (usernames) ή ομάδων (groups). Κατά
τη διαδικασία της αναβάθμισης ήταν αρκετά πιθανό αυτοί οι χρήστες ή
ομάδες να μην υπήρχαν. Αυτό δημιουργούσε προβλήματα στην
διαδικασία. Σε κάποιες περιπτώσεις, το
make buildworld θα ελέγξει αν υπάρχουν αυτοί οι
χρήστες ή ομάδες.Μια τέτοια περίπτωση παρουσιάστηκε όταν προστέθηκε ο χρήστης
smmsp. Η διαδικασία αναβάθμισης αποτύγχανε σε
πολλούς χρήστες, τη στιγμή που το &man.mtree.8; προσπαθούσε να
δημιουργήσει τον κατάλογο
/var/spool/clientmqueue.Η λύση είναι να εκτελέσετε το &man.mergemaster.8; σε κατάσταση
προ-εγκατάστασης, δίνοντας την επιλογή . Αυτή
θα συγκρίνει μόνο τα αρχεία που είναι απαραίτητα για την επιτυχία
εκτέλεσης του buildworld ή του
installworld. Αν η έκδοση του
mergemaster που έχετε είναι παλιά και δεν
υποστηρίζει το , χρησιμοποιήστε την νέα έκδοση
από το δέντρο του πηγαίου κώδικα όταν την εκτελέσετε για πρώτη
φορά:&prompt.root; cd /usr/src/usr.sbin/mergemaster
&prompt.root; ./mergemaster.sh -pΑν αισθάνεστε ιδιαίτερα παρανοϊκός, μπορείτε να ελέγξετε το
σύστημα σας για να δείτε ποια αρχεία ανήκουν στην ομάδα που
μετονομάζετε ή διαγράφετε:&prompt.root; find / -group GID -printΗ παραπάνω εντολή θα σας δείξει όλα τα αρχεία τα οποία ανήκουν
στην ομάδα GID (μπορείτε να δώσετε όνομα
ή αριθμητικό αναγνωριστικό της ομάδας).Μεταβείτε σε Κατάσταση Ενός Χρήστηsingle-user modeΊσως προτιμάτε να μεταγλωττίσετε το σύστημα σε κατάσταση ενός
χρήστη. Εκτός από το προφανές πλεονέκτημα της ελαφρά μεγαλύτερης
ταχύτητας, η επανεγκατάσταση του συστήματος θα επηρεάσει πολλά
σημαντικά αρχεία του συστήματος, όλα τα εκτελέσιμα αρχεία του βασικού
συστήματος, τις βιβλιοθήκες, τα αρχεία include κ.α. Αν τα αλλάξετε
αυτά σε ένα σύστημα που βρίσκεται σε κανονική λειτουργία (και ειδικά
αν υπάρχουν ενεργοί χρήστες την δεδομένη στιγμή), ψάχνετε για
μπελάδες.multi-user modeΜια άλλη μέθοδος είναι να μεταγλωττίσετε το σύστημα σε κατάσταση
κανονικής λειτουργίας, αλλά να μεταβείτε σε κατάσταση ενός χρήστη για
την εγκατάσταση. Αν θέλετε να το κάνετε με αυτό τον τρόπο, απλώς
μην εκτελέσετε τα ακόλουθα βήματα μέχρι το τέλος της μεταγλώττισης.
Μπορείτε να αναβάλλετε τη μετάβαση σε κατάσταση ενός χρήστη μέχρι
να είστε έτοιμοι για το installkernel ή
installworld.Ως υπερχρήστης μπορείτε να εκτελέσετε:&prompt.root; shutdown nowσε ένα σύστημα σε κανονική λειτουργία για να μεταβείτε σε
κατάσταση ενός χρήστη.Εναλλακτικά, επανεκκινήστε το σύστημα και στην προτροπή του
φορτωτή εκκίνησης, επιλέξτε single user. Το σύστημα
θα ξεκινήσει σε κατάσταση ενός χρήστη. Στην προτροπή της γραμμής
εντολών θα πρέπει να γράψετε:&prompt.root; fsck -p
&prompt.root; mount -u /
&prompt.root; mount -a -t ufs
&prompt.root; swapon -aΘα γίνει έλεγχος στα συστήματα αρχείων, και προσάρτηση του
/ με δυνατότητα ανάγνωσης/εγγραφής. Έπειτα θα
προσαρτηθούν όλα τα άλλα συστήματα αρχείων UFS τα οποία αναφέρονται
στο /etc/fstab, και θα ενεργοποιηθεί το
swap.Αν το CMOS ρολόι του υπολογιστή σας είναι ρυθμισμένο σε
τοπική ώρα και όχι σε GMT (αυτό είναι αλήθεια αν η έξοδος της
εντολής &man.date.1; δεν δείχνει σωστή ημερομηνία και ώρα), ίσως
χρειαστεί να εκτελέσετε επίσης την παρακάτω εντολή:&prompt.root; adjkerntz -iΜε αυτό τον τρόπο θα βεβαιωθείτε ότι οι τοπικές σας ρυθμίσεις
ώρας έχουν ρυθμιστεί σωστά. Διαφορετικά, μπορεί να συναντήσετε
προβλήματα αργότερα.Διαγράψτε το /usr/objΚαθώς γίνεται η επαναμεταγλώττιση, τμήματα του συστήματος
τοποθετούνται από προεπιλογή σε υποκαταλόγους του
/usr/obj. Οι υποκατάλογοι αυτοί αντιγράφουν τη
δομή που ακολουθείται στο /usr/src.Μπορείτε να επιταχύνετε τη διαδικασία του
make buildworld και επίσης να γλυτώσετε από κάποια
πιθανά προβλήματα, αν διαγράψετε και αυτό τον κατάλογο.Κάποια αρχεία σε υποκαταλόγους του /usr/obj
μπορεί να έχουν χαρακτηριστεί ως immutable μέσω του αντίστοιχου flag
(για περισσότερες λεπτομέρειες δείτε το &man.chflags.1;). Πριν
διαγράψετε αυτά τα αρχεία, θα πρέπει πρώτα να καταργήσετε αυτό το
flag.&prompt.root; cd /usr/obj
&prompt.root; chflags -R noschg *
&prompt.root; rm -rf *Επαναμεταγλωττίστε το Βασικό ΣύστημαΑποθηκεύστε την ΈξοδοΚαθώς εκτελείται η &man.make.1;, είναι καλή ιδέα η έξοδος της
να αποθηκεύεται σε κάποιο άλλο αρχείο. Αν κάτι πάει στραβά, θα
έχετε ένα αντίγραφο του μηνύματος λάθους. Αν και αυτό ίσως δεν σας
βοηθήσει να βρείτε τι πήγε στραβά, μπορεί να διευκολύνει άλλους αν
στείλετε το μήνυμα σας σε μια από τις λίστες ηλεκτρονικού
ταχυδρομείου του &os;.Ο ευκολότερος τρόπος για να γίνει αυτό, είναι χρησιμοποιώντας
την εντολή &man.script.1; με μια παράμετρο που να καθορίζει το όνομα
του αρχείου στο οποίο θα αποθηκευτεί η έξοδος. Θα πρέπει να
το εκτελέσετε αμέσως πριν ξεκινήσετε την μεταγλώττιση του βασικού
συστήματος, και να γράψετε exit μόλις
η διαδικασία ολοκληρωθεί.&prompt.root; script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
&prompt.root; make TARGET… μεταγλώττιση, μεταγλώττιση, μεταγλώττιση …
&prompt.root; exit
Script done, …Αν αποφασίσετε να αποθηκεύσετε την έξοδο,
μη χρησιμοποιήσετε για αυτό το σκοπό τον
κατάλογο /tmp. Τα περιεχόμενα αυτού του
καταλόγου πιθανώς να διαγραφούν την επόμενη φορά που θα εκκινήσετε
το σύστημα σας. Ένας καλύτερος κατάλογος για την αποθήκευση του
είναι ο /var/tmp (όπως στο προηγούμενο
παράδειγμα) ή ο προσωπικός κατάλογος του
root.Μεταγλωττίστε το Βασικό ΣύστημαΘα πρέπει να βρίσκεστε στον κατάλογο
/usr/src:&prompt.root; cd /usr/src(εκτός αν φυσικά έχετε αποθηκεύσει τον πηγαίο κώδικα σε κάποιο
άλλο κατάλογο, οπότε απλώς μετακινηθείτε σε αυτόν).makeΓια να επαναμεταγλωττίσετε το βασικό σύστημα, χρησιμοποιήστε
την εντολή &man.make.1;. Η εντολή αυτή διαβάζει τις σχετικές
οδηγίες από το αρχείο Makefile, το οποίο
περιγράφει με ποιο τρόπο πρέπει να μεταγλωττιστούν τα προγράμματα
από τα οποία αποτελείται το &os;, τη σειρά με την οποία πρέπει να
γίνει η μεταγλώττιση κ.ο.κ.Η γενική μορφή της εντολής που θα πληκτρολογήσετε είναι η
παρακάτω:&prompt.root; make -x -DVARIABLEtargetΣτο παράδειγμα αυτό, το
αντιπροσωπεύει μια
επιλογή που θέλετε να δώσετε στην &man.make.1;. Δείτε την σελίδα
manual του &man.make.1; για παραδείγματα δυνατών επιλογών.Η επιλογή
περνάει μια μεταβλητή στο Makefile.
Η συμπεριφορά του Makefile ελέγχεται από
τέτοιου είδους μεταβλητές. Πρόκειται για τις ίδιες μεταβλητές που
καθορίζονται και στο /etc/make.conf, και αυτός
είναι ένας ακόμα τρόπος καθορισμού τους.&prompt.root; make -DNO_PROFILE targetΤο παραπάνω δείχνει ένα επιπλέον τρόπο να καθορίσετε ότι δεν
θέλετε να μεταγλωττιστούν οι βιβλιοθήκες με πληροφορίες profiling,
και αντιστοιχεί με την παρακάτω γραμμή στο
/etc/make.conf:NO_PROFILE= true # Avoid compiling profiled librariesΤο target δηλώνει στο &man.make.1;
τι θέλετε να κάνετε. Σε κάθε Makefile ορίζεται
ένας αριθμός διαφορετικών targets, και η επιλογή που
θα κάνετε, καθορίζει τι ακριβώς θα γίνει.Κάποια από τα targets που καθορίζονται στο
Makefile, δεν προορίζονται για άμεση εκτέλεση
από το χρήστη. Αντί για αυτό, χρησιμοποιούνται από τη διαδικασία
μεταγλώττισης για να μοιραστεί ο αριθμός των βημάτων που απαιτούνται
για τη μεταγλώττιση του συστήματος, σε ένα αριθμό
υπo-βημάτων.Στις περισσότερες περιπτώσεις δεν θα χρειαστεί να δώσετε καμία
παράμετρο στο &man.make.1;, και έτσι η εντολή σας θα μοιάζει με την
παρακάτω:&prompt.root; make targetΌπου το target θα είναι μια από τις
πολλές επιλογές μεταγλώττισης. Το πρώτο target θα πρέπει πάντα να
είναι το buildworld.Όπως εννοείται και από το όνομα, το
buildworld μεταγλωττίζει ένα πλήρες δέντρο
μέσα στον κατάλογο /usr/obj, ενώ το
installworld, εγκαθιστά αυτό το δέντρο στο
τρέχον μηχάνημα.Η ύπαρξη διαφορετικών επιλογών, είναι χρήσιμη για δύο λόγους.
Πρώτα από όλα, σας επιτρέπει να εκτελέσετε τη διαδικασία
μεταγλώττισης με ασφάλεια, γνωρίζοντας ότι δεν πρόκειται να
επηρεαστεί κανένα τμήμα του τρέχοντος συστήματος σας. Η διαδικασία
μεταγλώττισης είναι self hosted, απομονωμένη από την
υπόλοιπη λειτουργία του μηχανήματος. Μπορείτε έτσι να εκτελέσετε
το buildworld σε ένα μηχάνημα που βρίσκεται
σε κανονική λειτουργία (πολλαπλών χρηστών) χωρίς να υπάρχει φόβος
παρενεργειών. Ωστόσο, συνίσταται να εκτελέσετε το
installworld σε κατάσταση λειτουργίας
ενός χρήστη.Ο δεύτερος λόγος είναι ότι σας επιτρέπει να χρησιμοποιήσετε
προσαρτήσεις NFS για να αναβαθμίσετε πολλά μηχανήματα του δικτύου
σας. Αν έχετε τρία μηχανήματα, τα
A, B και C
τα οποία θέλετε να αναβαθμίσετε, εκτελέστε το
make buildworld και το
make installworld στο μηχάνημα
A. Το B και το
C μπορούν να προσαρτήσουν τον κατάλογο
/usr/src και τον
/usr/obj από τον A μέσω NFS,
και έπειτα μπορείτε να εκτελέσετε το
make installworld για να εγκαταστήσετε το
έτοιμο πλέον σύστημα στον B και
C.Αν και υπάρχει ακόμα το target world,
δεν συνίσταται πλέον η χρήση του.Εκτελέστε την εντολή:&prompt.root; make buildworldΜπορείτε να καθορίσετε την επιλογή στην
make ώστε να εκτελεστεί σε πολλαπλές διεργασίες.
Αυτό είναι περισσότερο χρήσιμο σε μηχανήματα με πολλούς
επεξεργαστές, ωστόσο καθώς το μεγαλύτερο μέρος της διαδικασίας
μεταγλώττισης καθυστερεί εξαιτίας του σκληρού δίσκου (IO bound)
και όχι της CPU, μπορεί να σας φανεί χρήσιμο ακόμα και σε μηχανήματα
με ένα επεξεργαστή.Σε ένα τυπικό μηχάνημα με μια CPU, θα μπορούσατε να
δώσετε:&prompt.root; make -j4 buildworldΜε την παραπάνω εντολή, το &man.make.1; θα χρησιμοποιεί μέχρι
4 διεργασίες κάθε χρονική στιγμή. Από την εμπειρία που έχουμε
και από ότι αναφέρουν οι χρήστες στις λίστες, φαίνεται ότι η
ρύθμιση αυτή δίνει γενικά την καλύτερη απόδοση.Αν έχετε μηχάνημα με πολλούς επεξεργαστές, και χρησιμοποιείτε
πυρήνα με δυνατότητα SMP, δοκιμάστε τιμές μεταξύ του 6 και του 10
για να δείτε ποια επιταχύνει καλύτερα το αποτέλεσμα.Χρόνος Μεταγλώττισηςrebuilding worldtimingsΟ χρόνος που απαιτείται για την μεταγλώττιση επηρεάζεται από
πολλούς παράγοντες. Ωστόσο, σε σύγχρονα μηχανήματα η διαδικασία
δεν κρατάει συνήθως παραπάνω από μία ή δύο ώρες, όταν γίνεται
μεταγλώττιση του δέντρου &os.stable;, και μάλιστα χωρίς να
χρειάζεται να γίνουν ειδικές ρυθμίσεις ή κόλπα. Το δέντρο
&os.current; χρειάζεται γενικά λίγο περισσότερο χρόνο για να
μεταγλωττιστεί.Μεταγλωττίστε και Εγκαταστήστε Νέο ΠυρήναkernelcompilingΓια να εκμεταλλευθείτε πλήρως το νέο σας σύστημα, θα πρέπει να
επαναμεταγλωττίσετε τον πυρήνα. Αυτό είναι πρακτικά αναγκαίο, καθώς
κάποιες δομές στη μνήμη πιθανώς να έχουν αλλάξει, και έτσι
προγράμματα όπως τα &man.ps.1; και &man.top.1; δεν θα λειτουργούν
σωστά μέχρι να συγχρονίσετε τον πυρήνα με την έκδοση πηγαίου
κώδικα του βασικού συστήματος.Ο απλούστερος και πλέον ασφαλής τρόπος, είναι να μεταγλωττίσετε
και να εγκαταστήσετε ένα πυρήνα βασισμένο στον
GENERIC. Αν και ο GENERIC
μπορεί να μην περιέχει όλες τις απαραίτητες συσκευές για το σύστημα
σας, θα πρέπει να περιέχει ότι χρειάζεται ώστε να ξεκινήσετε ξανά
το σύστημα σας σε κατάσταση λειτουργίας ενός χρήστη. Αυτό είναι ένα
καλό τεστ σωστής λειτουργίας του συστήματος. Μετά την εκκίνηση με
τον GENERIC, και αφού επαληθεύσετε τη σωστή
λειτουργία του συστήματος, μπορείτε να μεταγλωττίσετε ένα νέο
πυρήνα βασισμένο στο δικό σας προσαρμοσμένο αρχείο ρυθμίσεων.Στο &os; είναι σημαντικό να εκτελέσετε το build world πριν μεταγλωττίσετε νέο
πυρήνα.Αν θέλετε να μεταγλωττίσετε νέο πυρήνα, και έχετε ήδη ένα
αρχείο με προσαρμοσμένες ρυθμίσεις, χρησιμοποιήστε απλώς την επιλογή
KERNCONF=MYKERNEL
με τον τρόπο που φαίνεται παρακάτω:&prompt.root; cd /usr/src
&prompt.root; make buildkernel KERNCONF=MYKERNEL
&prompt.root; make installkernel KERNCONF=MYKERNELΣημειώστε ότι αν έχετε ανεβάσει την τιμή του
kern.securelevel πάνω από το 1,
και έχετε θέσει το flag
noschg ή κάποιο αντίστοιχο στο εκτελέσιμο αρχείο
του πυρήνα, μάλλον θα χρειαστεί να μεταβείτε σε κατάσταση λειτουργίας
ενός χρήστη για να χρησιμοποιήσετε το
installkernel. Διαφορετικά, μπορείτε να
εκτελέσετε και τις δύο αυτές εντολές από την κανονική κατάσταση
λειτουργίας (πολλών χρηστών) χωρίς να δημιουργηθούν προβλήματα.
Δείτε τη σελίδα manual του &man.init.8; για λεπτομέρειες σχετικά με
τη ρύθμιση kern.securelevel και τη σελίδα
του &man.chflags.1; για λεπτομέρειες σχετικά με τα διάφορα flags
που χρησιμοποιούνται σε αρχεία.Επανεκκινήστε σε Κατάσταση Λειτουργίας Ενός Χρήστηsingle-user modeΘα πρέπει να επανεκκινήσετε σε κατάσταση λειτουργίας ενός χρήστη
για να επαληθεύσετε τη λειτουργία του νέου πυρήνα. Για το σκοπό
αυτό, χρησιμοποιήστε τις οδηγίες που είδαμε στο
.Εγκαταστήστε τα Νέα Εκτελέσιμα του ΣυστήματοςΑν μεταγλωττίζατε μια αρκετά πρόσφατη έκδοση του &os;, η οποία
διαθέτει το target make buildworld, θα πρέπει
τώρα να χρησιμοποιήσετε το installworld
για να εγκαταστήσετε τα νέα εκτελέσιμα του συστήματος.Εκτελέστε τις παρακάτω εντολές:&prompt.root; cd /usr/src
&prompt.root; make installworldΑν έχετε καθορίσει μεταβλητές στη γραμμή εντολών του
make buildworld θα πρέπει να καθορίσετε τις
ίδιες μεταβλητές και στην γραμμή εντολών του
make installworld. Αυτό δεν είναι απαραίτητα
αλήθεια για άλλες επιλογές. Για παράδειγμα, η επιλογή
δεν πρέπει ποτέ να χρησιμοποιείτε με το
installworld.Για παράδειγμα αν εκτελέσετε:&prompt.root; make -DNO_PROFILE buildworldΘα πρέπει να εγκαταστήσετε το αποτέλεσμα χρησιμοποιώντας:&prompt.root; make -DNO_PROFILE installworldδιαφορετικά το &man.make.1; θα προσπαθήσει να εγκαταστήσει
βιβλιοθήκες με profiling, τις οποίες όμως δεν μεταγλωττίσατε κατά
τη διάρκεια της φάσης make buildworld.Ενημερώστε Όσα Αρχεία δεν Ενημερώθηκαν από το
make installworldΗ επαναμεταγλώττιση του βασικού συστήματος δεν θα ενημερώσει
ορισμένους καταλόγους (ειδικότερα τους
/etc, /var και
/usr) με τα νέα ή αλλαγμένα αρχεία
ρυθμίσεων.Ο απλούστερος τρόπος για να ενημερώσετε τα αρχεία αυτά είναι να
χρησιμοποιήσετε το &man.mergemaster.8;, αν και μπορείτε να το κάνετε
και χειροκίνητα αν προτιμάτε. Άσχετα από τον τρόπο που θα
προτιμήσετε, βεβαιωθείτε ότι έχετε πάρει αντίγραφο ασφαλείας του
/etc σε περίπτωση που κάτι πάει στραβά.TomRhodesΣυνεισφορά του mergemastermergemasterΤο βοηθητικό πρόγραμμα &man.mergemaster.8; είναι ένα Bourne
script το οποίο θα σας βοηθήσει να καθορίσετε τις διαφορές μεταξύ
των εγκατεστημένων στο /etc αρχείων ρυθμίσεων,
και των αντίστοιχων στο δέντρο πηγαίου κώδικα στο
/usr/src/etc. Αυτή είναι και η συνιστώμενη
λύση για να ενημερώσετε τα αρχεία ρυθμίσεων του συστήματος με τυχόν
αλλαγές που έχουν γίνει στον νέο πηγαίο κώδικα.Για να ξεκινήσετε, απλώς γράψτε mergemaster
στην προτροπή της γραμμής εντολών και παρακολουθήστε την καθώς
λειτουργεί. Το mergemaster θα δημιουργήσει ένα
προσωρινό περιβάλλον root, από το / και κάτω,
και θα το γεμίσει με διάφορα αρχεία ρυθμίσεων του συστήματος. Έπειτα
θα γίνει σύγκριση αυτών των αρχείων με τα αντίστοιχα που βρίσκονται
ήδη εγκατεστημένα στο σύστημα σας. Στο σημείο αυτό, θα σας δείξει
τα αρχεία που διαφέρουν με μορφή &man.diff.1;, όπου οι γραμμές που
έχουν τροποποιηθεί ή είναι νέες θα φαίνονται με ένα
, ενώ με το θα φαίνονται οι
γραμμές που είτε αφαιρούνται εντελώς ή που αντικαθίστανται από μια
νέα γραμμή. Δείτε τη σελίδα manual του &man.diff.1; για περισσότερες
πληροφορίες σχετικά με τη σύνταξη του &man.diff.1; και για τον τρόπο
με τον οποίο φαίνονται οι διαφορές μεταξύ των αρχείων.Το &man.mergemaster.8; θα σας δείξει έπειτα κάθε αρχείο που
παρουσιάζει διαφορές, και στο σημείο αυτό θα έχετε την δυνατότητα
είτε να διαγράψετε το νέο αρχείο (το οποίο αναφέρεται ως προσωρινό
αρχείο), είτε να εγκαταστήσετε το προσωρινό αρχείο χωρίς να κάνετε
σε αυτό καμιά αλλαγή, είτε να συγχωνεύσετε τις αλλαγές των δύο
αρχείων, ή τέλος να ξαναδείτε τις διαφορές μέσω της
&man.diff.1;.Αν επιλέξετε να διαγράψετε το προσωρινό αρχείο, το
&man.mergemaster.8; θα καταλάβει ότι επιθυμείτε να διατηρήσετε το
τρέχον αρχείο σας χωρίς αλλαγές, και να διαγράψετε τη νέα έκδοση.
Η επιλογή αυτή γενικά δεν συνίσταται, εκτός αν δεν βλέπετε κανένα
λόγο να αλλάξετε το τρέχον αρχείο. Μπορείτε να δείτε βοήθεια
οποιαδήποτε στιγμή κατά τη διάρκεια της διαδικασίας, πληκτρολογώντας
? στην προτροπή του &man.mergemaster.8;. Αν
αποφασίσετε να παραλείψετε κάποιο αρχείο, αυτό θα εμφανιστεί
ξανά μετά το τέλος όλων των άλλων αρχείων.Αν επιλέξετε να εγκαταστήσετε το προσωρινό αρχείο χωρίς αλλαγές,
αυτό θα αντικαταστήσει το ήδη εγκατεστημένο σας αρχείο. Αυτή είναι
και η καλύτερη επιλογή για τα αρχεία τα οποία δεν έχετε αλλάξει
εσείς χειροκίνητα.Αν επιλέξετε να συγχωνεύσετε τα δύο αρχεία, θα εμφανιστεί ένας
επεξεργαστής κειμένου με τα περιεχόμενα και των δύο αρχείων.
Μπορείτε τώρα να τα συγχωνεύσετε παρατηρώντας ταυτόχρονα και τα δύο
αρχεία δίπλα-δίπλα, και επιλέγοντας τμήματα και από τα δύο για να
δημιουργήσετε την τελική έκδοση. Κατά τη σύγκριση αυτή, μπορείτε να
χρησιμοποιήσετε το πλήκτρο l για να επιλέξετε τα
περιεχόμενα που φαίνονται στην αριστερή πλευρά, ή το
r για τα αντίστοιχα περιεχόμενα στη δεξιά.
Το τελικό αποτέλεσμα θα είναι ένα αρχείο που θα αποτελείται από
τμήματα και των δύο αρχείων, και το οποίο μπορείτε να εγκαταστήσετε.
Η επιλογή αυτή χρησιμοποιείται συνήθως για αρχεία των οποίων το
περιεχόμενο έχει μεταβληθεί από το χρήστη.Αν επιλέξετε να δείτε ξανά τις διαφορές μέσω της &man.diff.1;,
αυτές θα εμφανιστούν ακριβώς όπως έγινε και πριν
σας ρωτήσει το &man.mergemaster.8; να επιλέξετε τι θέλετε να κάνετε
με το αρχείο.Μόλις ολοκληρωθεί η λειτουργία του &man.mergemaster.8; στα αρχεία
συστήματος, θα σας ρωτήσει για άλλες επιλογές.
Το &man.mergemaster.8; ίσως σας ρωτήσει αν θέλετε να αναδημιουργήσετε
το αρχείο των κωδικών (password file), και θα τελειώσει δίνοντας σας
την επιλογή να διαγράψετε τυχόν προσωρινά αρχεία που δημιουργήθηκαν
κατά την διαδικασία.Χειροκίνητη ΕνημέρωσηΑν επιθυμείτε να κάνετε την ενημέρωση χειροκίνητα, δεν μπορείτε
απλώς να αντιγράψετε τα αρχεία από τον κατάλογο
/usr/src/etc στον /etc και
να περιμένετε ότι το σύστημα σας θα λειτουργήσει σωστά. Κάποια από
αυτά τα αρχεία θα πρέπει να εγκατασταθούν πρώτα. Αυτό
συμβαίνει επειδή ο κατάλογος /usr/src/etcδεν είναι κανονικό αντίγραφο του
/etc. Επιπρόσθετα, υπάρχουν αρχεία τα οποία
πρέπει να βρίσκονται στον κατάλογο /etc, αλλά
δεν υπάρχουν στον /usr/src/etc.Αν χρησιμοποιείτε το &man.mergemaster.8; (όπως και συνίσταται),
μπορείτε να διαβάσετε κατευθείαν την επόμενη ενότητα.Ο απλούστερος τρόπος να το κάνετε αυτό χειροκίνητα, είναι να
εγκαταστήσετε τα αρχεία σε ένα νέο κατάλογο, και έπειτα να τα
εξετάσετε ένα-ένα ψάχνοντας για τις αλλαγές.Κρατήστε Ένα Αντίγραφο Ασφαλείας του Καταλόγου
/etcΑν και θεωρητικά, τίποτα δεν πρόκειται να πειράξει αυτό τον
κατάλογο αυτόματα, είναι πάντα καλύτερα να είμαστε σίγουροι.
Για το λόγο αυτό, αντιγράψτε τον υπάρχοντα κατάλογο
/etc σε κάποιο ασφαλές μέρος. Χρησιμοποιήστε
μια εντολή όπως η παρακάτω:&prompt.root; cp -Rp /etc /etc.oldΗ επιλογή πραγματοποιεί αναδρομική
αντιγραφή, ενώ η διατηρεί τα δικαιώματα, την
ιδιοκτησία, τις ημερομηνίες των αρχείων, κ.ο.κ.θα πρέπει να δημιουργήσετε μια ψευτο-δομή καταλόγων για να
εγκαταστήσετε το νέο κατάλογο /etc και άλλα
αρχεία. Μια λογική επιλογή είναι ο κατάλογος
/var/tmp/root, και κάτω από αυτόν, θα πρέπει
επίσης να δημιουργήσετε και μια ολόκληρη σειρά από τους υποκαταλόγους
που απαιτούνται.&prompt.root; mkdir /var/tmp/root
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distributionΟι παραπάνω εντολές θα δημιουργήσουν την απαιτούμενη δομή
καταλόγων και θα εγκαταστήσουν τα αρχεία. Μεγάλο μέρος των
υποκαταλόγων που έχουν δημιουργηθεί κάτω από τον
/var/tmp/root είναι άδειοι, και πρέπει να
διαγραφούν. Ο απλούστερος τρόπος για να γίνει αυτό, φαίνεται
παρακάτω:&prompt.root; cd /var/tmp/root
&prompt.root; find -d . -type d | xargs rmdir 2>/dev/nullΑυτό θα διαγράψει όλους τους άδειους υποκαταλόγους. (Η έξοδος
σφάλματος ανακατευθύνεται στο /dev/null ώστε
να μην εμφανίζονται στην οθόνη προειδοποιήσεις για καταλόγους που
δεν είναι άδειοι.)Τώρα, ο /var/tmp/root περιέχει όλα τα αρχεία
που θα πρέπει να τοποθετηθούν σε κατάλληλες θέσεις κάτω από τον
/. Θα πρέπει τώρα να διατρέξετε καθένα από
αυτά τα αρχεία, και να καθορίσετε πως καθένα από αυτά διαφέρει από
το αντίστοιχο υπάρχον (εγκατεστημένο) αρχείο.Σημειώστε ότι κάποια από τα αρχεία τα οποία έχουν
εγκατασταθεί στον /var/tmp/root έχουν μια
αρχική .. Τη στιγμή που γράφονται αυτές οι γραμμές,
τα μόνα αρχεία στα οποία συμβαίνει αυτό είναι τα αρχεία εκκίνησης
του κελύφους στον κατάλογο /var/tmp/root/ και
/var/tmp/root/root/, αν και μπορεί να υπάρχουν
και άλλα (ανάλογα με το πότε διαβάζετε το κείμενο). Βεβαιωθείτε ότι
χρησιμοποιείτε την εντολή ls -a για να τα δείτε
όλα.Ο απλούστερος τρόπος για να συγκρίνετε δύο αρχεία, είναι να
χρησιμοποιήσετε την εντολή &man.diff.1;:&prompt.root; diff /etc/shells /var/tmp/root/etc/shellsΗ παραπάνω εντολή θα σας δείξει τις διαφορές μεταξύ του αρχείου
/etc/shells και του νέου αρχείου
/var/tmp/root/etc/shells. Χρησιμοποιήστε τις
διαφορές αυτές για να αποφασίσετε αν θα πρέπει να συγχωνεύσετε τις
αλλαγές που έχετε κάνει, ή απλώς να αντιγράψετε το παλιό σας αρχείο
πάνω από το νέο.Προσθέστε την Ημερομηνία στο Όνομα του Νέου Root Καταλόγου,
(/var/tmp/root) Ώστε να Μπορείτε Εύκολα να
Συγκρίνετε Διαφορετικές Εκδόσεις Μεταξύ τουςΑν μεταγλωττίζετε συχνά το βασικό σύστημα, θα πρέπει επίσης
να ενημερώνετε συχνά τον κατάλογο /etc, το
οποίο μπορεί να είναι ενοχλητικό.Μπορείτε να επιταχύνετε αυτή τη διαδικασία, τηρώντας ένα
αντίγραφο του τελευταίου σετ αλλαγμένων αρχείων τα οποία
συγχωνεύσατε στον κατάλογο /etc. Η παρακάτω
διαδικασία θα σας δώσει μια ιδέα για το πως μπορεί να
γίνει αυτό:Μεταγλωττίστε το βασικό σύστημα όπως κάνετε συνήθως. Όταν
θέλετε να ενημερώσετε τον /etc και τους
άλλους καταλόγους, δώστε στον κατάλογο προορισμού ένα όνομα
βασισμένο στην τρέχουσα ημερομηνία. Αν το κάνατε αυτό
στις 14 Φεβρουαρίου 1998, θα γράφατε κάτι σαν το
παρακάτω:&prompt.root; mkdir /var/tmp/root-19980214
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root-19980214 \
distrib-dirs distributionΣυγχωνεύστε τις αλλαγές από αυτό τον κατάλογο, με τον τρόπο
που περιγράψαμε παραπάνω.Μην διαγράψετε τον κατάλογο
/var/tmp/root-19980214 όταν τελειώσετε
με την παραπάνω διαδικασία.Όταν κατεβάσετε την τελευταία έκδοση του πηγαίου κώδικα και
τον μεταγλωττίσετε ξανά, ακολουθήστε το βήμα 1. Αυτό θα σας
δώσει ένα κατάλογο που μπορεί να ονομάζεται
/var/tmp/root-19980221 (αν ανάμεσα στις
δύο μεταγλωττίσεις παρεμβάλλεται διάστημα μιας
εβδομάδας).Μπορείτε τώρα να δείτε τις διαφορές που υπάρχουν ανάμεσα
στις δύο εβδομάδες, χρησιμοποιώντας την εντολή
&man.diff.1; σε αναδρομική λειτουργία για να δημιουργήσετε τις
διαφορές μεταξύ των δύο καταλόγων:&prompt.root; cd /var/tmp
&prompt.root; diff -r root-19980214 root-19980221Τυπικά, αυτό το σετ αλλαγών θα είναι πολύ μικρότερο από
αυτό μεταξύ του /var/tmp/root-19980221/etc
και του /etc. Καθώς αυτό το σετ αλλαγών
είναι μικρότερο, είναι και πιο εύκολο να εφαρμόσετε αυτές
τις αλλαγές στον κατάλογο /etc.Μπορείτε τώρα να διαγράψετε τον παλιότερο από τους δύο
καταλόγους /var/tmp/root-*:&prompt.root; rm -rf /var/tmp/root-19980214Επαναλάβετε αυτή τη διαδικασία κάθε φορά που θέλετε να
συγχωνεύσετε τις αλλαγές στον κατάλογο
/etc.Μπορείτε επίσης να χρησιμοποιήσετε την εντολή &man.date.1; για
να αυτοματοποιήσετε την δημιουργία των ονομάτων καταλόγων:&prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"`ΕπανεκκίνησηΗ διαδικασία έχει πλέον ολοκληρωθεί. Αφού επαληθεύσετε ότι όλα
βρίσκονται στις σωστές θέσεις, μπορείτε να επανεκκινήσετε το σύστημα.
Μια απλή εντολή &man.shutdown.8; είναι επαρκής:&prompt.root; shutdown -r nowΟλοκλήρωσηΈχετε πλέον αναβαθμίσει το &os; σύστημα σας. Συγχαρητήρια.Αν τα πράγματα δεν πήγαν εντελώς σωστά, είναι εύκολο να
μεταγλωττίσετε ξανά οποιοδήποτε τμήμα του συστήματος.
Για παράδειγμα, αν διαγράψετε κατά λάθος το
/etc/magic ως μέρος μιας αναβάθμισης ή
συγχώνευσης του /etc, η εντολή &man.file.1;
θα σταματήσει να λειτουργεί. Στην περίπτωση αυτή, η διόρθωση είναι
να εκτελέσετε:&prompt.root; cd /usr/src/usr.bin/file
&prompt.root; make all installΕρωτήσειςΠρέπει να μεταγλωττίσω ξανά ολόκληρο το βασικό σύστημα σε
κάθε αλλαγή;Δεν υπάρχει εύκολη απάντηση σε αυτό το ερώτημα, καθώς
εξαρτάται από τη φύση της αλλαγής. Για παράδειγμα, αν
εκτελέσετε το CVSup, και δείτε ότι
ενημερώθηκαν τα παρακάτω αρχεία:src/games/cribbage/instr.csrc/games/sail/pl_main.csrc/release/sysinstall/config.csrc/release/sysinstall/media.csrc/share/mk/bsd.port.mkΤο πιθανότερο είναι ότι δεν χρειάζεται να μεταγλωττίσετε
ξανά όλο το βασικό σύστημα. Μπορείτε απλώς να μεταβείτε στους
σχετικούς υποκαταλόγους και να εκτελέσετε το
make all install, και θα έχετε τελειώσει.
Αν όμως υπάρχει κάποια σημαντική αλλαγή, για παράδειγμα το
src/lib/libc/stdlib, θα πρέπει είτε να
επαναμεταγλωττίσετε το βασικό σύστημα, ή τουλάχιστον αυτά τα
κομμάτια τα οποία είναι στατικά συνδεδεμένα (όπως και οτιδήποτε
άλλο έχετε προσθέσει εσείς και το οποίο είναι στατικά
συνδεδεμένο).Τελικά, η απόφαση είναι δική σας. Μπορεί να είστε
ικανοποιημένος αν μεταγλωττίζετε το βασικό σύστημα κάθε δύο
βδομάδες, αφήνοντας τις αλλαγές να συγκεντρωθούν στη διάρκεια
αυτού του διαστήματος. Ή μπορεί να θέλετε να μεταγλωττίσετε
μόνο τις αλλαγές, αν έχετε την πεποίθηση ότι μπορείτε να
εντοπίσετε όλες τις εξαρτήσεις τους.Και φυσικά, όλα αυτά εξαρτώνται από το πόσο συχνά θέλετε να
ενημερώνετε το σύστημα σας, και από το αν ακολουθείτε το
&os.stable; ή το &os.current;.Η μεταγλώττιση μου απέτυχε με πλήθος μηνυμάτων signal 11
(ή λάθη με άλλα σήματα). Τι έχει συμβεί;signal 11Αυτό συνήθως δείχνει προβλήματα υλικού. Η διαδικασία
μεταγλώττισης του βασικού συστήματος είναι ένας αποτελεσματικός
τρόπος να δοκιμάσετε το υλικό σας στα όρια του, και συχνά θα
δείξει προβλήματα που σχετίζονται με τη μνήμη. Το πιο σύνηθες
σύμπτωμα, είναι η απότομη διακοπή της μεταγλώττισης, με τον
μεταγλωττιστή να φαίνεται ότι έχει λάβει κάποιο μυστηριώδες
σήμα.Ένα σίγουρο σημάδι για το παραπάνω, είναι να επανεκκινήσετε
τη διαδικασία, και αυτή να σταματήσει σε διαφορετικό
σημείο.Στην περίπτωση αυτή, δεν υπάρχουν και πολλά που μπορείτε να
κάνετε, εκτός από το να αρχίσετε να αλλάζετε εξαρτήματα στο
μηχάνημα σας μέχρι να βρείτε αυτό που είναι υπαίτιο.Μπορώ να διαγράψω το /usr/obj όταν
τελειώσω;Η σύντομη απάντηση είναι ναι.Το /usr/obj περιέχει όλα τα
αντικειμενικά αρχεία που παράγονται κατά τη διάρκεια της
μεταγλώττισης. Συνήθως, ένα από τα πρώτα βήματα στην
διαδικασία make buildworld είναι η διαγραφή
αυτού του καταλόγου και η αναδημιουργία του. Στην περίπτωση
αυτή, το να κρατήσετε τον κατάλογο
/usr/obj αφού έχετε τελειώσει, δεν έχει
και πολύ νόημα, ενώ αν τον σβήσετε θα κερδίσετε ένα μεγάλο
κομμάτι ελεύθερου χώρου (την παρούσα στιγμή περίπου
340 MB).Όμως, αν ξέρετε τι κάνετε, μπορείτε να οδηγήσετε το
make buildworld να παραλείψει αυτό το βήμα.
Αυτό θα επιταχύνει ιδιαίτερα τις νέες μεταγλωττίσεις, καθώς
τα περισσότερα τμήματα του πηγαίου κώδικα δεν θα χρειάζονται
ξανά μεταγλώττιση. Το μειονέκτημα είναι ότι ορισμένες φορές
εμφανίζονται προβλήματα που έχουν σχέση με όχι και τόσο
εμφανείς εξαρτήσεις, και μπορεί να οδηγήσουν σε μυστηριώδη
αποτυχία της μεταγλώττισης. Τέτοια προβλήματα συχνά δημιουργούν
θόρυβο στις λίστες του &os;, όταν κάποιος χρήστης
παραπονιέται ότι η μεταγλώττιση του αποτυγχάνει, χωρίς να
αντιλαμβάνεται ότι αυτό οφείλεται στην προσπάθεια του να
συντομεύσει την διαδικασία.Μπορώ να συνεχίσω μια μεταγλώττιση που διέκοψα;Αυτό εξαρτάται από το πόσο έχετε προχωρήσει στη διαδικασία
μέχρι τη στιγμή που βρήκατε το πρόβλημα.Σε γενικές γραμμές (και αυτός δεν
είναι κανόνας που ισχύει πάντα), η διεργασία του
make buildworld μεταγλωττίζει νέα αντίγραφα
βασικών εργαλείων (όπως τα &man.gcc.1;, και &man.make.1;) καθώς
και των βιβλιοθηκών συστήματος. Έπειτα εγκαθιστώνται αυτά
τα εργαλεία και οι βιβλιοθήκες. Τα νέα εργαλεία και
βιβλιοθήκες χρησιμοποιούνται έπειτα για να επαναμεταγλωττίσουν
τους εαυτούς τους, και εγκαθίστανται ξανά. Ολόκληρο το σύστημα
(το οποίο τώρα περιλαμβάνει και τα συνηθισμένα προγράμματα
χρήστη όπως το &man.ls.1; ή το &man.grep.1;)
επαναμεταγλωττίζεται χρησιμοποιώντας τα νέα αρχεία του
συστήματος.Αν βρίσκεστε στο τελευταίο στάδιο, το οποίο θα το γνωρίζετε
κοιτάζοντας την έξοδο που έχετε αποθηκεύσει, είναι σχετικά
ασφαλές να κάνετε:… fix the problem …
&prompt.root; cd /usr/src
&prompt.root; make -DNO_CLEAN allΜε τον τρόπο αυτό δεν θα αναιρέσετε την εργασία που έχει
γίνει από το προηγούμενο
make buildworld.Αν δείτε το μήνυμα:--------------------------------------------------------------
Building everything..
--------------------------------------------------------------στην έξοδο της εντολής make buildworld,
τότε είναι μάλλον ασφαλές να προχωρήσετε με αυτό τον
τρόπο.Αν δεν δείτε αυτό το μήνυμα, ή αν δεν είστε σίγουρος, τότε
είναι καλύτερα να κάνετε πλήρη μεταγλώττιση παρά να μετανιώνετε
αργότερα.Πως μπορώ να επιταχύνω τη μεταγλώττιση του βασικού
συστήματος;Εκτελέστε την σε κατάσταση ενός χρήστη.Βάλτε τους καταλόγους /usr/src
και /usr/obj σε διαφορετικά συστήματα
αρχείων τα οποία βρίσκονται και σε διαφορετικούς φυσικούς
δίσκους. Αν είναι δυνατόν, βάλτε αυτούς τους δίσκους σε
χωριστούς ελεγκτές.Ακόμα καλύτερα, μοιράστε αυτά τα συστήματα αρχείων
σε πολλαπλούς δίσκους, χρησιμοποιώντας το πρόγραμμα
οδήγησης &man.ccd.4; (concatenated disk driver, οδήγησης
συνενωμένων δίσκων).Απενεργοποιήστε το profiling (θέστε την μεταβλητή
NO_PROFILE=true στο
/etc/make.conf). Είναι σχεδόν σίγουρο
ότι δεν το χρειάζεστε.Στο αρχείο /etc/make.conf, θέστε
το CFLAGS σε κάτι όπως
. Η βελτιστοποίηση
χρειάζεται αρκετά περισσότερο χρόνο,
και η διαφορά απόδοσης μεταξύ
και είναι συνήθως
αμελητέα. Το επιτρέπει στον
μεταγλωττιστή να χρησιμοποιήσει pipes για επικοινωνία αντί
για προσωρινά αρχεία. Αυτό καταναλώνει περισσότερη μνήμη,
αλλά χρησιμοποιεί λιγότερο το σκληρό δίσκο.Χρησιμοποιήστε την επιλογή
στο
&man.make.1; ώστε να εκτελούνται παράλληλα πολλαπλές
διεργασίες μεταγλώττισης. Αυτό συνήθως βοηθάει ακόμα και
σε περίπτωση που έχετε μηχάνημα με ένα επεξεργαστή.Μπορείτε να προσαρτήσετε (ή να επαναπροσαρτήσετε) το
σύστημα αρχείων στο οποίο είναι αποθηκευμένο το
/usr/src με την επιλογή
. Αυτό αποτρέπει την καταγραφή
ημερομηνίας / ώρας πρόσβασης στο σύστημα αρχείων. Κατά πάσα
πιθανότητα, δεν χρειάζεστε αυτή την πληροφορία έτσι και
αλλιώς.&prompt.root; mount -u -o noatime /usr/srcΤο παράδειγμα προϋποθέτει ότι έχετε το
/usr/src στο δικό του σύστημα
αρχείων. Αν αυτό δεν συμβαίνει (αν είναι μέρος του
/usr για παράδειγμα) θα χρειαστεί
να χρησιμοποιήσετε αυτό το σημείο προσάρτησης, και όχι
το /usr/src.Μπορείτε να προσαρτήσετε (ή να επαναπροσαρτήσετε) το
σύστημα αρχείων που περιέχει το
/usr/obj με την επιλογή
. Με τον τρόπο αυτό, οι εγγραφές στο
δίσκο θα γίνονται ασύγχρονα. Με άλλα λόγια, οι εγγραφές
φαίνεται ότι ολοκληρώνονται άμεσα, ενώ η πραγματική εγγραφή
στο δίσκο γίνεται λίγα δευτερόλεπτα αργότερα. Αυτό
επιτρέπει την ομαδοποίηση των εγγραφών, το οποίο μπορεί να
προσφέρει δραματική βελτίωση απόδοσης.Να έχετε υπόψιν σας ότι αυτή η επιλογή μπορεί να
κάνει το σύστημα αρχείων σας πολύ πιο ευαίσθητο. Με την
επιλογή αυτή, υπάρχει αυξημένη πιθανότητα το σύστημα
αρχείων να βρεθεί σε μη
επισκευάσιμη κατάσταση αν υπάρξει διακοπή
ρεύματος.Αν το σύστημα αρχείων περιέχει μόνο το
/usr/obj, το παραπάνω δεν είναι
πρόβλημα. Αν ωστόσο έχετε και άλλα πολύτιμα δεδομένα
στο ίδιο σύστημα αρχείων, σιγουρευτείτε ότι έχετε
ενημερωμένα αντίγραφα ασφαλείας πριν ενεργοποιήσετε αυτή
την επιλογή.&prompt.root; mount -u -o async /usr/objΌπως και προηγουμένως, αν το
/usr/obj δεν είναι σύστημα αρχείων
από μόνο του, αντικαταστήστε το στο παράδειγμα με το
όνομα του πραγματικού σημείου προσάρτησης.Τι να κάνω αν κάτι πάει στραβά;Σιγουρευτείτε ότι το περιβάλλον σας δεν έχει υπολείμματα
από προηγούμενες μεταγλωττίσεις. Αυτό είναι αρκετά απλό.&prompt.root; chflags -R noschg /usr/obj/usr
&prompt.root; rm -rf /usr/obj/usr
&prompt.root; cd /usr/src
&prompt.root; make cleandir
&prompt.root; make cleandirΝαι, θα πρέπει να εκτελέσετε το
make cleandir δύο φορές.Επανεκκινήστε έπειτα όλη τη διαδικασία, ξεκινώντας με το
make buildworld.Αν έχετε ακόμα προβλήματα, στείλτε το μήνυμα λάθους και την
έξοδο του uname -a στην &a.questions;. Να
είστε προετοιμασμένοι να απαντήσετε επιπλέον ερωτήσεις σχετικά
με την εγκατάσταση σας!MikeMeyerΣυνεισφορά του Διαδικασία για Πολλαπλά ΜηχανήματαNFSinstalling multiple machinesΑν έχετε πολλαπλά μηχανήματα στα οποία πρόκειται να χρησιμοποιήσετε
το ίδιο δέντρο πηγαίου κώδικα, είναι σπατάλη πόρων (δίσκου, δικτύου και
επεξεργαστή) να επαναλαμβάνετε σε όλα τη διαδικασία ανάκτησης και
μεταγλώττισης. Η λύση είναι να ορίσετε ένα μηχάνημα να εκτελεί το
μεγαλύτερο μέρος της εργασίας, ενώ τα υπόλοιπα θα μπορούν να την
ανακτούν μέσω NFS. Στην ενότητα αυτή θα παρουσιάσουμε ένα τρόπο με
τον οποίο μπορεί να γίνει αυτό.ΠροκαταρκτικάΠρώτα από όλα, αναγνωρίστε το σετ των μηχανημάτων στα οποία
σκοπεύετε να χρησιμοποιήσετε τα ίδια εκτελέσιμα. Θα ονομάσουμε αυτή
την ομάδα σετ μεταγλώττισης. Κάθε μηχάνημα
μπορεί να έχει δικό του προσαρμοσμένο πυρήνα, αλλά θα έχουν όλα τα
ίδια εκτελέσιμα userland. Από το σετ αυτό, επιλέξτε ένα μηχάνημα το
οποίο θα γίνει το μηχάνημα μεταγλώττισης.
Θα είναι το μηχάνημα στο οποίο θα μεταγλωττίζεται το βασικό σύστημα
και ο πυρήνας. Το ιδανικό είναι να επιλέξετε ένα γρήγορο μηχάνημα,
στο οποίο να υπάρχει αρκετός ελεύθερος χρόνος στον επεξεργαστή για να
εκτελεί τα make buildworld και
make buildkernel. Θα πρέπει επίσης να επιλέξετε
ένα μηχάνημα δοκιμών στο οποίο θα δοκιμάζετε τις
ενημερώσεις λογισμικού πριν τις μεταφέρετε στην παραγωγή. Μπορεί να
είναι και το ίδιο το μηχάνημα μεταγλώττισης, αλλά αυτό δεν είναι
απαραίτητο.Όλα τα μηχανήματα στο σετ μεταγλώττισης χρειάζεται να
προσαρτήσουν το /usr/obj και το
/usr/src από το ίδιο μηχάνημα, και στο ίδιο
σημείο προσάρτησης. Το ιδανικό είναι αυτά τα δύο συστήματα αρχείων
να βρίσκονται σε διαφορετικό φυσικό δίσκο στο μηχάνημα μεταγλώττισης,
αλλά μπορείτε να τα προσαρτήσετε μέσω NFS ακόμα και σε αυτό το
μηχάνημα. Αν έχετε πολλαπλά σετ μεταγλώττισης, το
/usr/src θα πρέπει να βρίσκεται σε ένα από τα
μηχανήματα μεταγλώττισης, και να προσαρτάται στα υπόλοιπα μέσω
NFS.Τέλος, βεβαιωθείτε ότι τα αρχεία
/etc/make.conf και
/etc/src.conf σε όλα τα μηχανήματα του σετ
μεταγλώττισης, είναι ίδια με τα αντίστοιχα στο μηχάνημα μεταγλώττισης.
Αυτό σημαίνει ότι το μηχάνημα μεταγλώττισης θα πρέπει να
μεταγλωττίζει όλα τα τμήματα του βασικού συστήματος τα οποία θα
εγκατασταθούν σε κάθε μηχάνημα του σετ. Επίσης, σε κάθε μηχάνημα
στο σετ μεταγλώττισης θα πρέπει να οριστεί το όνομα του δικού του
προσαρμοσμένου πυρήνα μέσω της μεταβλητής
KERNCONF στο /etc/make.conf,
ενώ και το μηχάνημα μεταγλώττισης θα πρέπει να έχει μια λίστα όλων
των άλλων στο KERNCONF, ξεκινώντας από το δικό
του. Το μηχάνημα μεταγλώττισης, θα πρέπει να έχει τα αρχεία ρύθμισης
του πυρήνα όλων των άλλων μηχανημάτων στον κατάλογο
/usr/src/sys/arch/conf
αν πρόκειται να μεταγλωττίζει τους πυρήνες τους.Το Βασικό ΣύστημαΈχοντας πραγματοποιήσει όλα τα παραπάνω, είστε έτοιμος να
μεταγλωττίσετε τα πάντα. Μεταγλωττίστε τον πυρήνα και το βασικό
σύστημα όπως περιγράψαμε στο
χρησιμοποιώντας το μηχάνημα μεταγλώττισης, αλλά μην εγκαταστήσετε
τίποτα. Μετά το τέλος της μεταγλώττισης, χρησιμοποιήστε το μηχάνημα
δοκιμών και εγκαταστήστε τον πυρήνα που μόλις δημιουργήσατε. Αν το
μηχάνημα αυτό προσαρτά το /usr/src και το
/usr/obj μέσω NFS, όταν το επανεκκινήσετε σε
κατάσταση ενός χρήστη, θα χρειαστεί να ενεργοποιήσετε το δίκτυο και
να τα προσαρτήσετε. Ο ευκολότερος τρόπος για αυτό, είναι να
εκκινήσετε σε κατάσταση πολλαπλών χρηστών και έπειτα να εκτελέσετε
shutdown now για να μεταβείτε σε κατάσταση ενός
χρήστη. Μόλις γίνει αυτό, μπορείτε να εγκαταστήσετε τον νέο πυρήνα
και το βασικό σύστημα, και να εκτελέσετε το
mergemaster όπως θα κάνατε συνήθως. Όταν
τελειώσετε, επανεκκινήστε αυτό το μηχάνημα στην κανονική λειτουργία
πολλαπλών χρηστών.Όταν βεβαιωθείτε ότι όλα λειτουργούν σωστά στο μηχάνημα δοκιμών,
χρησιμοποιήστε την ίδια διαδικασία για να εγκαταστήσετε το νέο
λογισμικό σε κάθε ένα από τα υπόλοιπα μηχανήματα του σετ
μεταγλώττισης.PortsΜπορείτε να χρησιμοποιήσετε τις ίδιες ιδέες και για το δέντρο
των ports. Το πρώτο κρίσιμο βήμα είναι να προσαρτήσετε το
/usr/ports από το ίδιο μηχάνημα, σε όλα τα
μηχανήματα του σετ μεταγλώττισης. Μπορείτε έπειτα να ρυθμίσετε το
/etc/make.conf ώστε να διαμοιράζονται τα
distfiles. Θα πρέπει να θέσετε το DISTDIR σε ένα
κοινόχρηστο κατάλογο, στον οποίο θα δώσετε δικαιώματα εγγραφής σε
οποιοδήποτε χρήστη έχετε δηλώσει ως root στο
NFS. Σε κάθε μηχάνημα θα πρέπει επίσης να οριστεί η μεταβλητή
WRKDIRPREFIX ώστε να δείχνει σε ένα τοπικό
κατάλογο. Τέλος, αν σκοπεύετε να μεταγλωττίζετε και να διανέμετε
έτοιμα πακέτα, θα πρέπει να θέσετε την μεταβλητή
PACKAGES σε ένα κατάλογο, όπως κάνατε και με την
DISTDIR.
diff --git a/el_GR.ISO8859-7/books/handbook/introduction/chapter.sgml b/el_GR.ISO8859-7/books/handbook/introduction/chapter.sgml
index a2c0931baa..a9b267048e 100644
--- a/el_GR.ISO8859-7/books/handbook/introduction/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/introduction/chapter.sgml
@@ -1,1053 +1,1055 @@
JimMockΑνασχηματισμένο, αναδιοργανωμένο, και μερικώς ξαναγραμμένο
από τον ΕισαγωγήΣύνοψηΕυχαριστούμε για το ενδιαφέρον σας για το &os;! Το ακόλουθο
κεφάλαιο καλύπτει διάφορες πτυχές του &os; Project, όπως την
ιστορία του, τους στόχους του, το μοντέλο ανάπτυξης, κ.τ.λ.Μετά την ανάγνωση αυτού του κεφαλαίου, θα γνωρίζετε:Πως σχετίζεται το &os; με άλλα λειτουργικά συστήματα Η/Υ.Την ιστορία του &os; Project.Τους στόχους του &os; Project.Τις βασικές αρχές του open-source μοντέλου ανάπτυξης του
&os;.Και φυσικά: από που προέρχεται το όνομα
&os;.Καλώς ήλθατε στο &os;!4.4BSD-LiteΤο &os; είναι ένα λειτουργικό σύστημα βασισμένο στο 4.4BSD-Lite,
το οποίο μπορεί να χρησιμοποιηθεί σε Η/Υ Intel (x86 και
&itanium;), AMD64, Alpha, και Sun
&ultrasparc;. Σε εξέλιξη βρίσκεται επίσης η διαδικασία μεταφοράς του
&os; σε άλλες αρχιτεκτονικές. Μπορείτε επίσης να διαβάσετε για
την ιστορία του &os;, ή για την
πιο πρόσφατη επίσημη έκδοση του. Εάν
ενδιαφέρεστε να συμβάλλετε με κάποιο τρόπο στο Project (κώδικας,
hardware, μη-προσημειωμένα χαρτονομίσματα), διαβάστε το άρθρο Συνεισφέροντας στην
Ανάπτυξη του &os;.Τι μπορεί να κάνει το &os;;Το &os; έχει πολλά αξιόλογα χαρακτηριστικά. Μερικά από αυτά
είναι:preemptive multitaskingpreemptive πολυεπεξεργασίαPreemptive πολυεπεξεργασία (preemptive
multitasking) με δυναμικό έλεγχο προτεραιότητας για να
εξασφαλιστεί ομαλός και δίκαιος διαμοιρασμός των πόρων του Η/Υ
μεταξύ εφαρμογών και χρηστών, ακόμη και στις πιο αντίξοες
συνθήκες.multi-user facilitiesπολυχρηστικές δυνατότητεςΠολυχρηστικές δυνατότητες (multi-user
facilities) οι οποίες επιτρέπουν σε πολλά άτομα ταυτόχρονα να
χρησιμοποιήσουν ένα σύστημα &os; για διαφορετικά πράγματα. Αυτό
σημαίνει, για παράδειγμα, ότι τα περιφερειακά του συστήματος,
όπως εκτυπωτές και οδηγοί ταινιών είναι σωστά μοιρασμένα μεταξύ
όλων των χρηστών του συστήματος ή του δικτύου και πως μπορούν να
τεθούν συγκεκριμένα όρια σε χρήστες ή ομάδες χρηστών,
προστατεύοντας κρίσιμους πόρους του συστήματος από υπερβολική
χρήση.TCP/IP networkingδικτυακές δυνατότητες TCP/IPΙσχυρές δυνατότητες δικτύωσης TCP/IP
(TCP/IP networking) με υποστήριξη για βιομηχανικά πρότυπα όπως
τα SCTP, DHCP, NFS, NIS, PPP, SLIP, IPsec και IPv6. Αυτό
σημαίνει πως ένα μηχάνημα &os; μπορεί να αλληλεπιδρά εύκολα με
άλλα συστήματα και να εργάζεται σαν εταιρικός εξυπηρετητής,
υποστηρίζοντας λειτουργίες ζωτικής σημασίας, όπως NFS
(απομακρυσμένη πρόσβαση σε αρχεία) και υπηρεσίες ηλεκτρονικού
ταχυδρομείου (e-mail), ή την παρουσία του οργανισμού σας στο
διαδίκτυο μέσω των υπηρεσιών WWW, FTP, routing και firewall
(ασφάλειας).memory protectionπροστασία μνήμηςΗ προστασία της μνήμης (memory
protection) εξασφαλίζει ότι οι διάφορες εφαρμογές (ή οι χρήστες)
δεν αλληλεπιδρούν μεταξύ τους. Μια εφαρμογή που παρουσιάζει
κάποιο πρόβλημα δε μπορεί να επηρεάσει άλλες με κανέναν
τρόπο.Το &os; είναι ένα λειτουργικό σύστημα
32-bit (64-bit σε
Alpha, &itanium;, AMD64, και &ultrasparc;) και σχεδιάστηκε με
αυτό τον τρόπο εξ' αρχής.X Window SystemXFree86Το βιομηχανικό πρότυπο X Window System
(X11R6) προσφέρει γραφικό περιβάλλον εργασίας (GUI) στο κόστος
μιας κοινής κάρτας VGA και μιας οθόνης και διατίθεται με
τον πλήρη πηγαίο κώδικα.συμβατότητα εκτελέσιμωνLinuxσυμβατότητα εκτελέσιμωνSCOσυμβατότητα εκτελέσιμωνSVR4συμβατότητα εκτελέσιμωνBSD/OSσυμβατότητα εκτελέσιμωνNetBSDΣυμβατότητα εκτελέσιμων με πολλά
προγράμματα που έχουν μεταγλωττιστεί για Linux, SCO, SVR4, BSDI
και NetBSD.Χιλιάδες έτοιμες-προς-εκτέλεση
εφαρμογές είναι διαθέσιμες από την συλλογή
ports και packages
για το &os;. Γιατί να ψάχνετε στο διαδίκτυο όταν μπορείτε να τα
βρείτε όλα εδώ;Στο διαδίκτυο είναι επίσης διαθέσιμες χιλιάδες πρόσθετες και
εύκολες στην προσαρμογή εφαρμογές.
Το &os; έχει συμβατότητα πηγαίου κώδικα με τα πιο
δημοφιλή εμπορικά συστήματα &unix;, επομένως οι περισσότερες
εφαρμογές χρειάζονται λίγες έως καθόλου μετατροπές για να
μεταγλωττιστούν (compile).virtual memoryΗ Δυναμική σελιδοποίηση εικονικής μνήμης
και το ολοκληρωμένο VM/buffer cache παρέχουν
υψηλή απόδοση σε εφαρμογές με αυξημένες ανάγκες σε μνήμη, ενώ
διατηρούν την ικανοποιητική απόκριση του συστήματος στους άλλους
χρήστες.Symmetric Multi-Processing (SMP)Συμμετρική Πολυ-Επεξεργασία (SMP)Υποστήριξη SMP για μηχανήματα με
πολλαπλές CPU.compilersCcompilersC++compilersFORTRANΠλήρης σειρά εργαλείων ανάπτυξης για
C, C++,
και Fortran. Στη Συλλογή των Ports και των
έτοιμων πακέτων, θα βρείτε πολλές ακόμα γλώσσες προγραμματισμού,
κατάλληλες τόσο για έρευνα όσο και για ανάπτυξη λογισμικού.πηγαίος κώδικαςsource codeΗ διαθεσιμότητα του πηγαίου κώδικα
ολόκληρου του συστήματος σημαίνει ότι έχετε τον υψηλότερο βαθμό
ελέγχου στο περιβάλλον σας. Γιατί να είστε κλειδωμένοι σε ένα
κλειστό σύστημα και να είστε εξαρτημένοι από τον προμηθευτή σας,
όταν μπορείτε να έχετε ένα πραγματικά ανοιχτό σύστημα;Εκτεταμένη online τεκμηρίωση.Και πολλά άλλα!4.4BSD-LiteComputer Systems Research Group (CSRG)U.C. BerkeleyΤο &os; βασίζεται στην έκδοση 4.4BSD-Lite του Computer
Systems Research Group (CSRG) του Πανεπιστημίου της Καλιφόρνιας στο
Berkeley, και συνεχίζει την διακεκριμένη παράδοση του στην ανάπτυξη
συστημάτων BSD. Επιπρόσθετα στο εξαίρετο έργο που παρείχε το CSRG, το
&os; Project ξόδεψε πολλές χιλιάδες ώρες στη βελτιστοποίηση του
συστήματος για μέγιστες επιδόσεις και αξιοπιστία σε καθημερινές
καταστάσεις πραγματικού φόρτου εργασίας. Αν και πολλοί εμπορικοί
κολοσσοί δυσκολεύονται να προσφέρουν λειτουργικά συστήματα με τέτοια
χαρακτηριστικά, επιδόσεις και αξιοπιστία, το &os; μπορεί να τα
προσφέρει τώρα!Οι εφαρμογές στις οποίες μπορεί να χρησιμοποιηθεί το &os;,
πραγματικά περιορίζονται μόνο από την φαντασία σας. Από ανάπτυξη
λογισμικού μέχρι αυτοματισμούς εργοστασίων, από απογραφή ειδών
μέχρι την διόρθωση του αζιμούθιου απομακρυσμένων δορυφορικών
κεραιών, εάν μπορεί να γίνει με ένα εμπορικό προϊόν &unix;, είναι
παραπάνω από πιθανό ότι μπορεί να γίνει και με το &os;! Το &os;
επίσης ωφελείται σημαντικά από κυριολεκτικά χιλιάδες εφαρμογές
υψηλής ποιότητας που αναπτύσσονται από κέντρα ερευνών και
πανεπιστήμια σε όλο τον κόσμο, και συχνά διατίθενται σε χαμηλό
κόστος ή δωρεάν. Το πλήθος των εμπορικών εφαρμογών που διατίθενται
για το &os;, αυξάνεται επίσης καθημερινά.Ο πηγαίος κώδικας του ίδιου του &os; είναι πλήρως διαθέσιμος,
και έτσι το σύστημα μπορεί να προσαρμοστεί σε αφάνταστα υψηλό
επίπεδο για ειδικές εφαρμογές ή projects, και με τρόπους γενικά μη
πραγματοποιήσιμους σε άλλα λειτουργικά εμπορικών προμηθευτών.
Παρακάτω θα βρείτε μερικά μόνο παραδείγματα από εφαρμογές στις
οποίες μπορεί να χρησιμοποιηθεί αυτή τη στιγμή το &os;:Υπηρεσίες Ίντερνετ: Το ισχυρό σύστημα
δικτύωσης TCP/IP του &os;, το αναδεικνύει σε ιδεώδη πλατφόρμα για
μια μεγάλη γκάμα υπηρεσιών Ίντερνετ όπως:FTP serversΕξυπηρετητές FTPweb serversΕξυπηρετητές ιστοσελίδων World Wide Web (κοινούς ή με
ασφαλή σύνδεση [SSL])Δρομολόγηση πρωτοκόλλων IPv4 και IPv6firewallNATFirewalls και πύλες NAT (IP masquerading)ηλεκτρονικό ταχυδρομείοemailemailΕξυπηρετητές ηλεκτρονικού ταχυδρομείουUSENETUSENET News ή Bulletin Board SystemsΚαι άλλα...Με το &os;, μπορείτε εύκολα να ξεκινήσετε από χαμηλά με
ένα φτηνό PC της οικογένειας 386, και καθώς η επιχείρηση σας
μεγαλώνει, να αναβαθμιστείτε σε ένα τετραπύρηνο επεξεργαστή Xeon
με δίσκους RAID.Εκπαίδευση: Είστε φοιτητής
πληροφορικής ή κάποιου σχετικού τομέα; Δεν υπάρχει
καλύτερος τρόπος να μάθετε για λειτουργικά συστήματα,
αρχιτεκτονικές Η/Υ, και συστήματα δικτύων από την πρακτική
εμπειρία και την σε βάθος γνώση που μπορεί να σας παρέχει το
&os;. Το μεγάλο πλήθος των δωρεάν διαθέσιμων πακέτων εφαρμογών
CAD, γραφικής σχεδίασης, και μαθηματικών, κάνουν το &os;
εξαιρετικά χρήσιμο σε όσους το κύριο ενδιαφέρον τους στους
υπολογιστές είναι να
κάνουν τη δουλειά τους!Έρευνα: Με διαθέσιμο τον πηγαίο
κώδικα ολόκληρου του συστήματος, το &os; είναι μία
εξαίρετη πλατφόρμα για την έρευνα στα λειτουργικά συστήματα
όπως επίσης για άλλους κλάδους της πληροφορικής. Η φύση της
ελεύθερης διάθεσης του &os; επιτρέπει επίσης σε απομακρυσμένες
ομάδες να συνεργάζονται σε ιδέες ή να μοιράζονται την ανάπτυξη
εφαρμογών, χωρίς να ανησυχούν για άδειες χρήσης και χωρίς να
περιορίζεται η δυνατότητα τους για ελεύθερη συζήτηση οποιουδήποτε
θέματος σε ανοιχτές ομάδες συζήτησης (forums).routerDNS ServerΔικτύωση: Χρειάζεστε ένα καινούργιο
router (δρομολογητή); Ένα εξυπηρετητή DNS; Ένα firewall για να
κρατάτε τον κόσμο έξω από το εσωτερικό σας δίκτυο; Το &os;
μπορεί εύκολα να μετατρέψει εκείνο το άχρηστο 386 ή 486 PC που
κάθεται στην γωνία, σε ένα προηγμένο δρομολογητή με εξεζητημένες
δυνατότητες φιλτραρίσματος πακέτων.Σύστημα X WindowXFree86Σύστημα X WindowAccelerated-XΣταθμός εργασίας με X Window: Το &os;
είναι μια εξαίρετη επιλογή για ένα οικονομικό εξυπηρετητή Χ
τερματικών, χρησιμοποιώντας τον ελεύθερα διαθέσιμο εξυπηρετητή
X11. Σε αντίθεση με τα απλά τερματικά X, με το &os; μπορείτε,
εφόσον το επιθυμείτε, να εκτελείτε πολλές εφαρμογές τοπικά,
απαλλάσσοντας έτσι τον κεντρικό εξυπηρετητή από περιττό φορτίο.
To &os; μπορεί να ξεκινήσει ακόμα και diskless
(χωρίς σκληρό δίσκο), κάνοντας έτσι τους προσωπικούς σταθμούς
εργασίας ακόμη πιο φτηνούς και ευκολότερους στη
διαχείριση.GNU Compiler CollectionΑνάπτυξη Λογισμικού: Το βασικό
σύστημα του &os; διατίθεται ολοκληρωμένο, με πλήρη σειρά
εργαλείων ανάπτυξης, που περιλαμβάνουν τον αναγνωρισμένο
GNU C/C++ compiler και debugger.Το &os; είναι διαθέσιμο σε μορφή πηγαίου κώδικα αλλά και έτοιμου,
μεταγλωττισμένου εκτελέσιμου σε CD-ROM, DVD, και μέσω ανώνυμου FTP.
Δείτε το για περισσότερες πληροφορίες για
το πως να αποκτήσετε το &os;.Ποιος χρησιμοποιεί &os;;χρήστεςμεγάλες τοποθεσίες που τρέχουν &os;Το &os; χρησιμοποιείται ως βάση για την ανάπτυξη συσκευών και
προϊόντων σε μερικές από τις μεγαλύτερες εταιρίες πληροφορικής,
περιλαμβανομένων των:AppleAppleCiscoCiscoJuniperJuniperNetAppNetAppΤο &os; χρησιμοποιείται για να υποστηρίζει μερικές από τις
μεγαλύτερες τοποθεσίες στο Ίντερνετ, περιλαμβανομένων των:Yahoo!Yahoo!YandexYandexApacheApacheRamblerRamblerSinaSinaPair NetworksPair NetworksSony JapanSony JapanNetcraftNetcraftWeathernewsWeathernewsTELEHOUSE AmericaTELEHOUSE
Americaκαι πολλών ακόμη.Πληροφορίες για το &os; ProjectΤο ακόλουθο τμήμα παρέχει μερικές πληροφορίες σχετικές με
το project, και περιλαμβάνει μια σύντομη ιστορία του &os;, τους
στόχους, και το μοντέλο ανάπτυξης του.JordanHubbardΣυνεισφορά του Μια σύντομη ιστορία του &os;386BSD PatchkitHubbard, JordanWilliams, NateGrimes, RodFreeBSD ProjecthistoryTo &os; Project γεννήθηκε στις αρχές του 1993,
μερικώς σαν εξέλιξη του Unofficial 386BSD
Patchkit από τους 3 τελευταίους συντονιστές του patchkit:
τον Nate Williams, τον Rod Grimes και εμένα.386BSDΟ πρωταρχικός στόχος μας ήταν να παράγουμε ένα ενδιάμεσο
στιγμιότυπο (snapshot) του 386BSD ώστε να διορθώσουμε μερικά
προβλήματα που ο μηχανισμός του patchkit δεν ήταν ικανός να λύσει.
Μερικοί από σας, ίσως να θυμούνται πως ο αρχικός τίτλος εργασίας για
το project ήταν 386BSD 0.5 ή
386BSD Interim και αναφέρονταν σε αυτό ακριβώς το
γεγονός.Jolitz, BillΤο 386BSD ήταν το λειτουργικό σύστημα του Bill Jolitz, το οποίο
μέχρι εκείνο το σημείο, υπέφερε βαριά έχοντας αμεληθεί για σχεδόν ένα
έτος. Καθώς το patchkit φούσκωνε ολοένα και περισσότερο
με το πέρασμα των ημερών, είχαμε αποφασίσει ομόφωνα πως έπρεπε να
γίνει κάτι, και αποφασίσαμε να συμπαρασταθούμε στον Bill παρέχοντας
του αυτό το ενδιάμεσο cleanup snapshot. Τα σχέδια αυτά
διακόπηκαν απότομα, όταν ξαφνικά ο Bill Jolitz αποφάσισε να αποσύρει
την έγκριση του στο project δίχως μια ξεκάθαρη ένδειξη του τι θα
έπρεπε να γίνει.Greenman, DavidWalnut Creek CDROMΔεν μας πήρε πολύ να αποφασίσουμε πως ο στόχος παρέμενε
αξιόλογος, ακόμη και χωρίς την βοήθεια του Bill, και έτσι υιοθετήσαμε
το όνομα &os;, που επινόησε ο David Greenman.
Οι αρχικοί στόχοι μας τέθηκαν αφού συμβουλευθήκαμε τους τότε χρήστες
του συστήματος, και όταν έγινε πλέον ξεκάθαρο πως το project είχε
πάρει σωστή πορεία και ίσως έτεινε να γίνει πραγματικότητα, ήρθα σε
επαφή με την Walnut Creek CDROM προσβλέποντας στην βελτίωση των
καναλιών διανομής του &os; για όλους αυτούς τους άτυχους που δεν
είχαν εύκολη πρόσβαση στο Ίντερνετ. Η Walnut Creek CDROM, όχι μόνο
υποστήριξε την ιδέα διανομής του &os; σε CD, αλλά προχώρησε αρκετά
περισσότερο, παρέχοντας στο project ένα μηχάνημα εργασίας και μια
γρήγορη σύνδεση στο Ίντερνετ. Δίχως τον βαθμό πίστης της Walnut
Creek CDROM σε αυτό που εκείνο τον καιρό ήταν ένα εντελώς άγνωστο
project, είναι πολύ απίθανο το &os; να είχε φτάσει τόσο μακριά,
και τόσο γρήγορα, όπως σήμερα.4.3BSD-LiteNet/2U.C. Berkeley386BSDFree Software FoundationΗ πρώτη διανομή CD-ROM (και με γενικά ευρεία διάδοση στο δίκτυο)
ήταν η &os; 1.0, που κυκλοφόρησε τον Δεκέμβρη του 1993.
Βασίζονταν σε μια ταινία του 4.3BSD-Lite (Net/2) του
U.C. Berkeley, έχοντας πάρει και πολλά στοιχεία από το 386BSD και
το Free Software Foundation. Ήταν αρκετά επιτυχημένη για πρώτη
προσπάθεια, και την συνεχίσαμε με την αρκετά επιτυχημένη έκδοση
&os; 1.1 που κυκλοφόρησε τον Μάϊο του 1994.NovellU.C. BerkeleyNet/2AT&TΠερίπου εκείνη την περίοδο, σχηματίστηκαν απρόσμενα στον ορίζοντα
σύννεφα καταιγίδας, καθώς η Novell και το U.C. Berkeley τακτοποίησαν
την μακράς διαρκείας δικαστική διαμάχη σχετικά με τα δικαιώματα της
ταινίας Net/2. Μία συνθήκη αυτής της συμφωνίας ήταν η παραδοχή από
την μεριά του U.C. Berkeley ότι μεγάλο μέρος του Net/2 ήταν
επιβαρυμένος κώδικας και ιδιοκτησία της Novell, η
οποία με την σειρά της το είχε αποκτήσει από την AT&T λίγο καιρό
πριν. Αυτό που πήρε ως αντάλλαγμα το Berkeley ήταν οι
ευλογίες της Novell ότι η έκδοση 4.4BSD-Lite, όταν
τελικά ολοκληρωνόταν, θα δηλωνόταν ως μη-επιβαρυμένη, και όλοι οι
μέχρι τότε χρήστες του Net/2 θα ενθαρρύνονταν ένθερμα να μεταβούν σε
αυτή. Αυτό συμπεριλάμβανε και το &os;, και στο project δόθηκε χρόνος
μέχρι τον Ιούλιο του 1994 να σταματήσει τις παραδόσεις των προϊόντων
που βασίζονταν στο Net/2. Υπό τους όρους αυτής της συμφωνίας,
επιτράπηκε στο project μια τελευταία έκδοση πριν την λήξη της
προθεσμίας, και αυτή ήταν η έκδοση &os; 1.1.5.1.Το &os; βρέθηκε τότε στη δυσχερή θέση κυριολεκτικά να
ξανα-ανακαλύψει τον εαυτό του από ένα σύνολο από bit του 4.4BSD-Lite,
εντελώς καινούργιο, και κυρίως ατελές. Οι εκδόσεις
Lite ήταν light (ελαφριές) εν' μέρει επειδή το CSRG
του Berkeley είχε αφαιρέσει μεγάλο όγκο κώδικα ο οποίος ήταν
απαραίτητος για να κατασκευαστεί ένα πραγματικά εκκινήσιμο
λειτουργικό σύστημα (λόγω διαφόρων νομικών ζητημάτων), και εν' μέρει
επειδή το port για Intel του 4.4 ήταν σε υψηλό βαθμό ατελές.
Η μετάβαση ολοκληρώθηκε τον Νοέμβριο του 1994, και σε αυτό το σημείο
κυκλοφόρησε η &os; 2.0 στο δίκτυο και σε CD-ROM (τέλη Δεκέμβρη).
Παρά το γεγονός ότι ήταν ακόμη αρκετά πρόχειρη μέσες-άκρες,
η έκδοση ήταν μια σημαντική επιτυχία και την ακολούθησε η
πιο αξιόπιστη και ευκολότερη ως προς την εγκατάσταση έκδοση
&os; 2.0.5 τον Ιούνιο του 1995.Κυκλοφορήσαμε την &os; 2.1.5 τον Αύγουστο του 1996, και
φάνηκε να είναι αρκετά δημοφιλής στους ISP και στις εμπορικές
κοινότητες, τόσο που άξιζε άλλο ένα παρακλάδι στον κορμό της
2.1-STABLE. Αυτή ήταν η &os; 2.1.7.1, που κυκλοφόρησε τον
Φεβρουάριο του 1997 και ήταν η αποκορύφωση της κύριας ανάπτυξης της
2.1-STABLE, η οποία βρίσκεται πλέον σε κατάσταση συντήρησης.
θα γίνονται μόνο βελτιώσεις ασφαλείας και άλλες κρίσιμες διορθώσεις
bugs σε αυτό τον κορμό (RELENG_2_1_0).Η &os; 2.2 διακλαδώθηκε από την ανάπτυξη της κύριας γραμμής
(-CURRENT) τον Νοέμβριο του 1996, ως κλάδος RELENG_2_2,
και η πρώτη πλήρη έκδοση (2.2.1) κυκλοφόρησε τον Απρίλιο του
1997. Πρόσθετες εκδόσεις από τον κλάδο 2.2 δόθηκαν σε κυκλοφορία το
καλοκαίρι και το φθινόπωρο του '97, η τελευταία των οποίων (η 2.2.8)
εμφανίστηκε τον Νοέμβρη του 1998. Η πρώτη επίσημη έκδοση 3.0
εμφανίστηκε τον Οκτώβριο του 1998 και σημάδεψε την αρχή του τέλους
για τον κλάδο 2.2.Ο κορμός διακλαδώθηκε πάλι στις 20 Ιανουαρίου 1999, οδηγώντας στην
4.0-CURRENT και στον κλάδο 3.X-STABLE. Από τον 3.X-STABLE, η 3.1
κυκλοφόρησε στις 15 Φεβρουαρίου 1999, η 3.2 στις 15 Μαΐου 1999, η 3.3
στις 16 Σεπτεμβρίου 1999, η 3.4 στις 20 Δεκεμβρίου του 1999, και η
3.5 στις 24 Ιουνίου 2000, την οποία ακολούθησε λίγες μέρες μετά μία
μικρής τάξεως αναβάθμιση, η 3.5.1, για να συμπεριληφθούν κάποιες
αναβαθμίσεις ασφαλείας της τελευταίας στιγμής στο Kerberos. Αυτή
ήταν και η τελική έκδοση από τον κλάδο της 3.X.Ένα νέο παρακλάδι δημιουργήθηκε στις 13 Μαρτίου 2000,
δημιουργώντας έτσι τον κλάδο ανάπτυξης 4.X-STABLE. Δημιουργήθηκαν
διάφορες εκδόσεις από αυτό τον κλάδο: Η 4.0-RELEASE κυκλοφόρησε τον
Μάρτιο του 2000, και η τελευταία 4.11-RELEASE κυκλοφόρησε τον
Ιανουάριο του 2005.Μετά από μεγάλο χρονικό διάστημα αναμονής, η 5.0-RELEASE
ανακοινώθηκε στις 19 Ιανουαρίου του 2003. Ως αποκορύφωμα σχεδόν
τριών χρόνων εργασίας, η έκδοση αυτή εισήγαγε το &os; στο μονοπάτι
των εξελιγμένων πολυεπεξεργαστών και στην υποστήριξη εφαρμογών με
threads, ενώ εισήγαγε και υποστήριξη για τις πλατφόρμες &ultrasparc;
και ia64. Αυτήν την έκδοση ακολούθησε η 5.1 τον
Ιούνιο του 2003. Η τελευταία έκδοση 5.X από τον κορμό της -CURRENT
ήταν η 5.2.1-RELEASE, που κυκλοφόρησε τον Φεβρουάριο του 2004.Ο κορμός της RELENG_5, δημιουργήθηκε τον Αύγουστο του 2004, και
ακολούθησε η 5.3-RELEASE, η οποία σημάδεψε την αρχή των εκδόσεων από
τον κλάδο 5-STABLE. Η πιο πρόσφατη 5.5-RELEASE κυκλοφόρησε τον Μάιο
του 2006. Δεν Θα υπάρξουν πρόσθετες εκδόσεις από τον κορμό της
RELENG_5.Ο κορμός διακλαδώθηκε πάλι τον Ιούλιο του 2005, αυτή τη φορά για
την δημιουργία του κλάδου RELENG_6. Η 6.0-RELEASE είναι η πρώτη
έκδοση της σειράς 6.X, και κυκλοφόρησε τον Νοέμβριο του 2005. Η πιο
- πρόσφατη &rel2.current;-RELEASE κυκλοφόρησε την &rel2.current.date;.
- Θα υπάρξουν πρόσθετες εκδόσεις από τον κορμό της RELENG_6.
+ πρόσφατη &rel2.current;-RELEASE κυκλοφόρησε τον &rel2.current.date;.
+ Αυτή θα είναι πιθανόν και η τελευταία έκδοση από τον κορμό της
+ RELENG_6.
Ο κλάδος ανάπτυξης RELENG_7, δημιουργήθηκε τον Οκτώβριο του 2007.
- Η πιο πρόσφατη έκδοση από αυτό τον κλάδο είναι η &rel.current;-RELEASE
- η οποία κυκλοφόρησε τον &rel.current.date;. Θα υπάρξουν πρόσθετες
- εκδόσεις από τον κλάδο RELENG_7.
+ Η πρώτη έκδοση από αυτό τον κλάδο, ήταν η 7.0-RELEASE
+ η οποία κυκλοφόρησε τον Φεβρουάριο του 2008. Η πιο πρόσφατη
+ &rel.current;-RELEASE κυκλοφόρησε τον &rel.current.date;.
+ Θα υπάρξουν πρόσθετες εκδόσεις από τον κλάδο RELENG_7.
Για την ώρα, η μακροπρόθεσμη ανάπτυξη συνεχίζεται στον
κλάδο 8.X-CURRENT. Νέες εκδόσεις SNAPshot του 8.X σε
CD-ROM (και φυσικά στο Διαδίκτυο), διατίθενται από τον
τον snapshot
server καθώς συνεχίζεται η ανάπτυξη.JordanHubbardΣυνεισφορά του Στόχοι του &os; ProjectFreeBSD ProjectgoalsΟι στόχοι του &os; Project είναι να παρέχει λογισμικό που
θα μπορεί να χρησιμοποιηθεί για οποιαδήποτε περίσταση και δίχως
δεσμεύσεις. Πολλοί από μας έχουν κάνει σημαντική επένδυση στον
κώδικα (και το project) και σίγουρα δε θα μας πείραζε πότε-πότε μια
μικρή οικονομική συνεισφορά, αλλά σίγουρα δεν είμαστε έτοιμοι να
επιμείνουμε σε αυτό. Πιστεύουμε ότι η πρωταρχική και σπουδαιότερη
αποστολή μας είναι να παρέχουμε κώδικα σε υπάρχοντες
και μελλοντικούς χρήστες, και για οποιοδήποτε σκοπό, ώστε ο κώδικας
μας να έχει την ευρύτερη πιθανή χρήση και να αποφέρει το μεγαλύτερο
δυνατό όφελος. Αυτό είναι, πιστεύω, ένας από τους σημαντικότερους
στόχους του Ελεύθερου Λογισμικού και ένας από τους οποίους
υποστηρίζουμε με ενθουσιασμό.GNU General Public License (GPL)GNU Lesser General Public License (LGPL)BSD CopyrightΤο τμήμα του πηγαίου μας κώδικα που βρίσκεται υπό την GNU
General Public License (GPL) ή την Library General Public License
(LGPL) έχει κάπως περισσότερες δεσμεύσεις, αν και σκοπός τους
είναι μάλλον να διασφαλίσουν την ελεύθερη διάθεση του κώδικα, παρά το
αντίθετο. Λόγω των επιπρόσθετων επιπλοκών που θέτει η άδεια χρήσης
GPL στην εμπορική χρήση του λογισμικού, προτιμούμε, όσο είναι εφικτό,
να παρέχουμε το λογισμικό μας υπό το χαλαρότερο BSD copyright.SatoshiAsamiΣυνεισφορά του Το Μοντέλο Ανάπτυξης του &os;FreeBSD Projectμοντέλο ανάπτυξηςΗ ανάπτυξη του &os; είναι μία πολύ ανοικτή και ευέλικτη
διαδικασία, αφού κυριολεκτικά βασίζεται στην συνεισφορά
εκατοντάδων ανθρώπων από όλο τον κόσμο, όπως μπορείτε να δείτε από
την λίστα των
συνεργατών μας. Η υποδομή ανάπτυξης του &os; επιτρέπει
στα εκατοντάδες μέλη της ομάδας ανάπτυξης να συνεργάζονται μέσω του
Ίντερνετ. Είμαστε σταθερά σε αναζήτηση για νέα μέλη στην ομάδα
ανάπτυξης και για ιδέες, και όσοι ενδιαφέρονται να ασχοληθούν ακόμη
περισσότερο με το project χρειάζεται απλά να επικοινωνήσουν μαζί μας
στην &a.hackers;. Επίσης η &a.announce; είναι διαθέσιμη σε όσους
επιθυμούν να ενημερώσουν άλλους χρήστες του &os; για κύριους
τομείς εργασίας σχετικά με το Project.Χρήσιμα πράγματα που πρέπει να γνωρίζετε για το &os; Project
και την διαδικασία ανάπτυξης του, είτε δουλεύετε ανεξάρτητα είτε ως
στενοί συνεργάτες:Τα SVN και CVS repositoriesCVSrepositoryConcurrent Versions SystemCVSSVNrepositorySubversionSVNΓια πολλά χρόνια, ο κεντρικός κορμός κώδικα του &os;
συντηρούνταν μέσω του CVS
(Concurrent Versions System), ενός ελεύθερα διαθέσιμου
εργαλείου ελέγχου πηγαίου κώδικα που προσφέρεται ενσωματωμένο
στο &os;. Τον Ιούνιο του 2008, το Project αποφάσισε τη
μετάβαση στο SVN (Subversion).
Η αλλαγή κρίθηκε αναγκαία, καθώς οι τεχνικοί περιορισμοί του
CVS ήταν πλέον εμφανείς, εξαιτίας
του μεγέθους του αποθηκευμένου κώδικα και του ιστορικού που
τον συνοδεύει. Αν και το κύριο repository χρησιμοποιεί πλέον
το SVN, τα εργαλεία χρήστη όπως τα
CVSup και
csup τα οποία εξαρτώνται από τη
λειτουργία του παλαιότερου συστήματος
CVS, συνεχίζουν να λειτουργούν
κανονικά. Αυτό εξασφαλίζεται με συγχρονισμό των αλλαγών του
SVN στο υπάρχον
CVS. Τη δεδομένη στιγμή, το
SVN χρησιμοποιείται μόνο στο
κεντρικό repository πηγαίου κώδικα. Τα repositories που
χρησιμοποιούνται για το documentation (τεκμηρίωση), το
World Wide Web (το δικτυακό τόπο) καθώς και τα Ports, συνεχίζουν
να χρησιμοποιούν το CVS. Το κύριο
repository
βρίσκεται σε ένα μηχάνημα στην Santa Clara CA, USA από όπου
αντιγράφεται σε μεγάλο αριθμό μηχανών mirror σε όλο τον κόσμο.
Ο κορμός SVN, ο οποίος περιέχει τους
κλάδους -CURRENT και -STABLE,
μπορεί επίσης εύκολα να αντιγραφεί και στo δικό σας υπολογιστή.
Περισσότερες πληροφορίες για αυτό το θέμα μπορείτε να βρείτε
- στην ενότητα Συγχρονίζοντας τον κορμό
- του κώδικα σας.
+ στην ενότητα Συγχρονίζοντας τον Πηγαίο
+ σας Κώδικα.
Η λίστα των committerscommittersΟι committers
είναι άτομα που έχουν άδεια
εγγραφής (write) στον κορμό του CVS, και
είναι εξουσιοδοτημένοι να κάνουν μετατροπές στον κώδικα του
&os; (ο όρος committer
προέρχεται από την εντολή &man.cvs.1;
commit, η οποία χρησιμοποιείται για να
γίνουν νέες αλλαγές στο CVS repository). Ο καλύτερος τρόπος
για να τεθούν αλλαγές προς αναθεώρηση εκ μέρους της λίστας των
committers είναι να χρησιμοποιείται η εντολή &man.send-pr.1;.
Εάν το παραπάνω σύστημα φαίνεται μπλοκαρισμένο, μπορείτε να
τους προσεγγίσετε στέλνοντας email στην &a.committers;.The FreeBSD core teamcore teamΗ &os; core team θα ήταν ισοδύναμη
με το διοικητικό συμβούλιο αν το &os; Project ήταν μια
ανώνυμη εταιρεία. Ο πρωταρχικός στόχος της core team είναι να
εξασφαλίσει ότι το project, στο σύνολο του, είναι σε καλή
κατάσταση και να το οδηγεί προς την σωστή κατεύθυνση. Μια από
τις λειτουργίες της core team είναι να προσκαλεί αφοσιωμένους
και υπεύθυνους developers να συμμετέχουν στην ομάδα ανάπτυξης
(τους committers) καθώς και να βρίσκει νέα μέλη για την ίδια
την core team καθώς κάποιοι αποχωρούν. Η παρούσα core team
εκλέχτηκε από ένα σύνολο υποψηφίων committers τον Ιούλιο του
2008. Εκλογές διεξάγονται κάθε 2 χρόνια.Μερικά μέλη της core team έχουν επίσης ειδικούς τομείς
ευθύνης, και αυτό σημαίνει πως δεσμεύονται να εξασφαλίσουν ότι
ένα μεγάλο μέρος του συστήματος λειτουργεί όπως πρέπει. Για
ολοκληρωμένη λίστα της ομάδας ανάπτυξης του &os; και των τομέων
ευθύνης τους, παρακαλούμε δείτε την Λίστα των
Συνεργατών μας.Τα περισσότερα μέλη του core team είναι εθελοντές όσον
αφορά την ανάπτυξη του &os; και δεν έχουν οικονομικής φύσεως
οφέλη από το project, επομένως η δέσμευση δεν
θα πρέπει να παρερμηνεύεται ως
εγγυημένη υποστήριξη. Η παραπάνω παρομοίωση
με το διοικητικό συμβούλιο δεν είναι πολύ
ακριβής, ίσως είναι καταλληλότερο να πούμε ότι πρόκειται
για ανθρώπους που θυσίασαν τις ζωές τους για χάρη του &os;
ενάντια στην καλύτερη τους κρίση!Εξωτερικοί συνεργάτεςσυνεργάτεςcontributorsΤέλος, αλλά οπωσδήποτε όχι μικρότερης σημασίας, η
μεγαλύτερη ομάδα ανάπτυξης είναι οι ίδιοι οι χρήστες που μας
παρέχουν σχόλια και διορθώσεις των bug σε σχεδόν σταθερή βάση.
Ο κύριος τρόπος για να κρατάτε επαφή με την μη-συγκεντρωτική
ομάδα ανάπτυξης του &os; είναι να γίνετε συνδρομητές στην
&a.hackers; όπου γίνονται οι ανάλογες συζητήσεις. Δείτε το
για περισσότερες πληροφορίες
σχετικά με τις διάφορες λίστες ηλεκτρονικού ταχυδρομείου του
&os;.Η
Λίστα Συνεργατών του &os; είναι μεγάλη
και συνεχώς αυξανόμενη, επομένως γιατί να μην γίνετε και εσείς
μέλος της και να συμβάλλετε σήμερα σε κάτι στο &os;;Η παροχή κώδικα δεν είναι ο μόνος τρόπος για να
συνεισφέρετε στο project. Για μια ολοκληρωμένη λίστα των
πραγμάτων στα οποία χρειαζόμαστε βοήθεια, παρακαλούμε
επισκεφθείτε την Δικτυακή
τοποθεσία του &os; Project.Συνοψίζοντας, το μοντέλο ανάπτυξης μας είναι οργανωμένο σαν ένα
χαλαρό σύνολο ομόκεντρων κύκλων. Το συγκεντρωτικό μοντέλο είναι
σχεδιασμένο για να διευκολύνει τους χρήστες του
&os;, στους οποίους παρέχεται έτσι ένας εύκολος τρόπος παρακολούθησης
του βασικού κώδικα, και όχι για να αποκλείουμε πιθανούς συνεργάτες!
Επιθυμία μας είναι να παρουσιάσουμε ένα σταθερό λειτουργικό σύστημα
σε συνάρτηση με μια μεγάλη γκάμα από
προγράμματα εφαρμογών που οι χρήστες να
μπορούν εύκολα να εγκαθιστούν και να χρησιμοποιούν — για την
εκπλήρωση αυτών των στόχων, το μοντέλο αυτό δουλεύει πολύ καλά.Το μόνο που ζητάμε από όσους ενδιαφέρονται να ενωθούν μαζί μας
στην ομάδα ανάπτυξης του &os;, είναι λίγη από την ίδια αφοσίωση της
τωρινής ομάδας, για μια συνεχή πορεία στην επιτυχία του!Η Τρέχουσα Έκδοση του &os;NetBSDOpenBSD386BSDFree Software FoundationU.C. BerkeleyComputer Systems Research Group (CSRG)Το &os; είναι ελεύθερα διαθέσιμο, βασίζεται ολόκληρο στον πηγαίο
κώδικα του 4.4BSD-Lite, και αναπτύσσεται για συστήματα ηλεκτρονικών
υπολογιστών βασισμένα σε επεξεργαστές Intel &i386;, &i486;,
&pentium;, &pentium; Pro, &celeron;, &pentium; II,
&pentium; III, &pentium; 4 (ή συμβατούς), &xeon;, DEC
Alpha και Sun &ultrasparc;.
Βασίζεται κυρίως στο software της ομάδας U.C. Berkeley CSRG, με
κάποιες βελτιώσεις που προέρχονται από τα NetBSD, OpenBSD, 386BSD,
και το Free Software Foundation.Από την έκδοση του &os; 2.0 στα τέλη του 1994, η απόδοση,
το σύνολο των χαρακτηριστικών, και η σταθερότητα του &os; έχει
βελτιωθεί σημαντικά.
Η μεγαλύτερη αλλαγή είναι η επανασχεδίαση του συστήματος εικονικής
μνήμης (virtual memory) με ένα ολοκληρωμένο VM/file buffer cache το
οποίο όχι μόνο αυξάνει την απόδοση, αλλά επίσης μειώνει τις
απαιτήσεις μνήμης του &os;, επιτρέποντας ως ελάχιστο αποδεκτό όριο
τα 5 MB. Περιέχονται επίσης και άλλες βελτιώσεις, όπως πλήρης
υποστήριξη πελάτη και εξυπηρετητή NIS, υποστήριξη συναλλαγών TCP,
dial-on-demand PPP, ενσωματωμένη υποστήριξη DHCP, ένα βελτιωμένο
υποσύστημα SCSI, υποστήριξη ISDN, υποστήριξη για ATM, FDDI,
προσαρμογείς δικτύου Fast και Gigabit Ethernet (1000 Mbit),
βελτιωμένη υποστήριξη για τους τελευταίους ελεγκτές της Adaptec και
πολλές χιλιάδες διορθώσεις λαθών (bug).Εκτός από τη βασική του διανομή, το &os; προσφέρει μια συλλογή
λογισμικού με χιλιάδες προγράμματα για καθημερινή χρήση. Την στιγμή
που γράφονται αυτές οι γραμμές, υπάρχουν πάνω από &os.numports;
ports! Η λίστα των ports ξεκινάει από εξυπηρετητές http (WWW),
μέχρι παιχνίδια, γλώσσες προγραμματισμού, κειμενογράφους,
και οτιδήποτε άλλο ενδιάμεσα. Η συνολική Συλλογή των Ports απαιτεί
προσεγγιστικά &ports.size; αποθηκευτικό χώρο, αφού όλα τα ports
εκφράζονται με deltas (αρχεία διαφορών) των αυθεντικών
πηγών τους. Το γεγονός αυτό μας επιτρέπει να αναβαθμίσουμε τα ports
πολύ ευκολότερα, και μειώνει δραστικά τις απαιτήσεις σε σκληρό δίσκο
σε σχέση με την παλαιότερη Συλλογή Ports 1.0. Για να μεταγλωττιστεί
(compile) ένα port, χρειάζεται απλώς να μεταβείτε στον κατάλογο του
προγράμματος που επιθυμείτε να εγκαταστήσετε, να πληκτρολογήσετε
make install, και να αφήσετε το σύστημα σας να
κάνει τα υπόλοιπα. Ολόκληρη η αυθεντική διανομή για κάθε port που
κάνετε build παρέχεται δυναμικά από το CD-ROM ή από μία τοπική
τοποθεσία FTP, έτσι τα ports που δεν χρειάζεστε δεν καταλαμβάνουν
άσκοπο χώρο στο σκληρό σας δίσκο. Σχεδόν κάθε port παρέχεται επίσης
και σαν προ-μεταγλωττισμένο (pre-compiled)
πακέτο (package), το οποίο μπορεί να εγκατασταθεί με
μια απλή εντολή (pkg_add) για εκείνους που δεν
επιθυμούν να μεταγλωττίζουν τα ports τους από τον πηγαίο κώδικα.
Περισσότερες πληροφορίες για τα packages και τα ports μπορείτε να
βρείτε στο .Υπάρχει αρκετά μεγάλη επιπλέον τεκμηρίωση την οποία μπορεί να
βρείτε πολύ χρήσιμη για την διαδικασία εγκατάστασης και χρήσης του
&os;. Μπορείτε να την βρείτε εγκατεστημένη στον κατάλογο
/usr/share/doc σε οποιοδήποτε σύγχρονο μηχάνημα
&os;. Τα τοπικά εγκατεστημένα εγχειρίδια μπορείτε να τα δείτε σε
μορφή HTML, χρησιμοποιώντας οποιοδήποτε κατάλληλο browser στις
ακόλουθες URL:Το Εγχειρίδιο Χρήσης του &os;/usr/share/doc/handbook/index.htmlΣυχνές ερωτήσεις του &os; (FAQ)/usr/share/doc/faq/index.htmlΜπορείτε επίσης να δείτε τα πρωτότυπα (και συχνά αναβαθμιζόμενα)
αντίγραφα στο .