MFen: 1.239 -> 1.240 en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml

Obtained from:	FreeBSD Greek Documentation Project
This commit is contained in:
Giorgos Keramidas 2009-02-01 04:30:59 +00:00
parent 52ee421a00
commit 405ab0431b
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=33790

View file

@ -7,7 +7,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
%SRCID% 1.239
%SRCID% 1.240
-->
@ -1712,7 +1712,227 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
<filename>/usr/src/UPDATING</filename> για τυχόν βήματα που θα πρέπει
να εκτελέσετε πριν την εκκίνηση της μεταγλώττισης. Τα βήματα αυτά
εξαρτώνται από την έκδοση του πηγαίου κώδικα που πρόκειται να
χρησιμοποιήσετε. Έπειτα, ακολουθήστε την παρακάτω διαδικασία:</para>
χρησιμοποιήσετε. Έπειτα, ακολουθήστε τη διαδικασία που περιγράφεται
στις επόμενες παραγράφους.</para>
<para>Η διαδικασία αναβάθμισης η οποία περιγράφεται εδώ βασίζεται στην
υπόθεση ότι έχει ήδη εγκαταστήσει μια παλιότερη έκδοση του &os;, με
μια παλιά έκδοση του μεταγλωττιστή, ένα παλιό πυρήνα,
παλιά <quote>εργαλεία χρήστη</quote> και αρχεία ρυθμίσεων. Εργαλεία
χρήστη θεωρούνται τα βασικά εκτελέσιμα, οι βιβλιοθήκες και τα αρχεία
προγραμματισμού. Ο μεταγλωττιστής είναι κι αυτός μέρος από τα
<quote>εργαλεία χρήστη</quote> στο &os;, αλλά χρειάζεται ειδική
μεταχείριση κατά τη διαδικασία αναβάθμισης.</para>
<para>Υποθέτουμε, επίσης, ότι έχετε ήδη κατεβάσει μια ενημερωμένη έκδοση
από τον πηγαίο κώδικα του συστήματος. Αν ο πηγαίος κώδικας στο
συγκεκριμένο σύστημα είναι από παλιότερη έκδοση, δείτε
το <xref linkend="synching"> για λεπτομερείς οδηγίες σχετικά με το πως
να συγχρονίσετε τον πηγαίο κώδικα σε μια νεότερη έκδοση.</para>
<para>Η αναβάθμιση του &os; από τον πηγαίο κώδικά του φαίνεται να είναι
πολύ απλή διαδικασία. Στην πραγματικότητα, έχει κάποιες
ιδιαιτερότητες. Με τα χρόνια, καθώς οι εξαρτήσεις μεταξύ των βημάτων
της αναβάθμισης ανακαλύπτονται ή αναλύονται καλύτερα, οι
προγραμματιστές του &os; αλλάζουν σιγά-σιγά αυτή τη διαδικασία. Οι
παρακάτω παράγραφοι περιγράφουν τη λογική με την οποία έχει σχεδιασθεί
η προτεινόμενη διαδικασία αναβάθμισης.</para>
<para>Μια επιτυχής διαδικασία αναβάθμισης πρέπει να καλύψει τουλάχιστον
τις δύο πιο βασικές ιδιαιτερότητες μιας αναβάθμισης από πηγαίο
κώδικα:</para>
<itemizedlist>
<listitem>
<para>Ο παλιός μεταγλωττιστής συστήματος μπορεί να είναι ακατάλληλος
για μεταγλώττιση του νέου πυρήνα. (Και οι μεταγλωττιστές έχουν
ορισμένες προβλήματα, όπως κάθε άλλο λογισμικό.) Οπότε ο νέος
πυρήνας πρέπει να μεταγλωττιστεί με το νέο μεταγλωττιστή. Πιο
συγκεκριμένα, ο νέος μεταγλωττιστής πρέπει να αναβαθμιστεί πριν
από το νέο πυρήνα. Αυτό δε σημαίνει βέβαια ότι αυτός ο νέος
μεταγλωττιστής πρέπει να <emphasis>εγκατασταθεί</emphasis> πριν
μεταγλωττιστεί ο νέος πυρήνας.</para>
</listitem>
<listitem>
<para>Τα νέα εργαλεία χρήστη από το βασικό σύστημα του &os; μπορεί
να εξαρτώνται από τον τρόπο λειτουργίας του νέου πυρήνα. Οπότε ο
νέος πυρήνας πρέπει να εγκατασταθεί πριν από το νέο βασικό
σύστημα.</para>
</listitem>
</itemizedlist>
<para>Αυτά τα δύο σημεία είναι οι βασικοί λόγοι για τους οποίους
προτείνονται τα κεντρικά βήματα μιας αναβάθμισης, τα
βήματα <maketarget>buildworld</maketarget>,
<maketarget>buildkernel</maketarget>,
<maketarget>installkernel</maketarget>,
και <maketarget>installworld</maketarget>. Στις επόμενες παραγράφους
θα περιγράψουμε πιο αναλυτικά αυτά τα βήματα. Υπάρχουν κι άλλοι λόγοι
όμως για τους οποίους χρειάζεται προσοχή όταν κάνετε μια τέτοια
αναβάθμιση. Μερικοί από αυτούς είναι οι εξής:</para>
<itemizedlist>
<listitem>
<para>Τα παλιά εργαλεία του βασικού συστήματος μπορεί να μην τρέχουν
σωστά με το νέο πυρήνα. Γι αυτό πρέπει να εγκατασταθεί το
ενημερωμένο βασικό σύστημα αμέσως μετά την εγκατάσταση του νέου
πυρήνα.</para>
</listitem>
<listitem>
<para>Μερικές φορές χρειάζονται αλλαγές στα αρχεία ρυθμίσεων πριν
εγκατασταθεί το νέο βασικό σύστημα. Άλλες φορές η εγκατάσταση
όλων των αρχείων ρυθμίσεων μπορεί να δημιουργήσει προβλήματα στην
εγκατάσταση. Γι αυτό έχουμε χωρίσει την ενημέρωση των αρχείων
ρυθμίσεων σε δύο ξεχωριστά βήματα.</para>
</listitem>
<listitem>
<para>Στην πλειοψηφία των περιπτώσεων η διαδικασία εγκατάστασης
αντικαθιστά ή προσθέτει αρχεία του συστήματος· δε σβήνει κανένα
υπάρχον αρχείο. Σε μερικές περιπτώσεις αυτό μπορεί να
δημιουργήσει προβλήματα. Όταν υπάρχει τέτοια περίπτωση, η
διαδικασία εγκατάστασης τυπώνει ενημερωτικά μηνύματα για τα αρχεία
τα οποία πρέπει να σβηστούν χειροκίνητα. Αυτό το βήμα μπορεί να
αυτοματοποιηθεί στο μέλλον.</para>
</listitem>
</itemizedlist>
<para>Έχοντας όλες αυτές τις ιδιαιτερότητες μιας αναβάθμισης από πηγαίο
κώδικα, καταλήξαμε στην παρακάτω διαδικασία αναβάθμισης. Ορισμένες
φορές μπορεί να χρειάζεται να προσθέσετε κάποια βήματα σε αυτή τη
διαδικασία. Τα βασικά βήματα όμως παραμένουν τα ίδια, κι είναι τα
εξής:</para>
<orderedlist>
<listitem>
<para><command>make <maketarget>buildworld</maketarget></command></para>
<para>Αυτό το βήμα μεταγλωττίζει πρώτα μια ενημερωμένη έκδοση του
ίδιου του μεταγλωττιστή συστήματος και μερικών απαραίτητων
εργαλείων. Ύστερα, χρησιμοποιώντας το νέο μεταγλωττιστή,
προετοιμάζει μια νέα έκδοση όλου του βασικού συστήματος του &os;.
Τα ενημερωμένα εκτελέσιμα, βιβλιοθήκες και αρχεία προγραμματισμού
καταλήγουν στον
κατάλογο <filename class="directory">/usr/obj</filename>.</para>
</listitem>
<listitem>
<para><command>make <maketarget>buildkernel</maketarget></command></para>
<para>Σε αντίθεση με παλιότερες διαδικασίες αναβάθμισης (οι οποίες
καλούσαν χειροκίνητα το &man.config.8; και το &man.make.1;) αυτό
το βήμα μεταγλωττίζει τον πυρήνα του &os; χρησιμοποιώντας τον
ενημερωμένο μεταγλωττιστή συστήματος από τον
κατάλογο <filename class="directory">/usr/obj</filename>. Αυτό
σας προστατεύει από προβλήματα ασυμβατότητας μεταξύ του
μεταγλωττιστή και του πυρήνα.</para>
</listitem>
<listitem>
<para><command>make <maketarget>installkernel</maketarget></command></para>
<para>Εγκατάσταση του νέου πυρήνα και των αρθρωμάτων του στο δίσκο
του συστήματος. Έτσι μπορεί πλέον το σύστημα να ξεκινήσει με το
νέο, ενημερωμένο πυρήνα.</para>
</listitem>
<listitem>
<para>Εκκίνηση σε λειτουργία single user.</para>
<para>Η λειτουργία single user ελαχιστοποιεί την πιθανότητα να έχετε
προβλήματα επειδή αναβαθμίσατε κάποιο πρόγραμμα που τρέχει ήδη.
Είναι επίσης πιο ασφαλής, αφού δε χρειάζεται να τρέξετε τις
εφαρμογές του παλιού βασικού συστήματος με το νέο πυρήνα.</para>
</listitem>
<listitem>
<para><command>mergemaster <option>-p</option></command></para>
<para>Αυτό το βήμα ενημερώνει τα απολύτως βασικά αρχεία ρυθμίσεων
του &os;, για να μπορέσετε να εγκαταστήσετε σωστά το νέο βασικό
σύστημα. Ενημερώνει, για παράδειγμα, τη βάση χρηστών και ομάδων
χρηστών του &os;. Κάθε φορά που προστίθεται ένας νέος χρήστης
συστήματος ή μια νέα ομάδα χρηστών, το
βήμα <maketarget>installworld</maketarget> της αναβάθμισης θεωρεί
ότι έχετε ήδη ρυθμίσει τους νέους χρήστες ή τις νέες ομάδες. Αυτό
ακριβώς κάνει σε αυτό το σημείο το εργαλείο
&man.mergemaster.8;.</para>
</listitem>
<listitem>
<para><command>make <maketarget>installworld</maketarget></command></para>
<para>Το επόμενο βήμα είναι να εγκαταστήσετε το ενημερωμένο βασικό
σύστημα από τον
κατάλογο <filename class="directory">/usr/obj</filename>. Μετά
από αυτό έχετε πλέον ένα νέο πυρήνα και ένα ενημερωμένο βασικό
σύστημα, το οποίο ταιριάζει με τον νέο πυρήνα.</para>
</listitem>
<listitem>
<para><command>mergemaster</command></para>
<para>Ένα από τα τελευταία βήματα είναι η αναβάθμιση των αρχείων
ρυθμίσεων του συστήματος. Το εργαλείο &man.mergemaster.8; μπορεί
να σας βοηθήσει σε αυτό το βήμα, αφού ενημερώνει τα αρχεία
ρυθμίσεων κρατώντας και οποιεσδήποτε τοπικές αλλαγές έχετε κάνει
στο σύστημά σας.</para>
</listitem>
<listitem>
<para>Επανεκκινήστε το σύστημα.</para>
<para>Μια τελευταία επανεκκίνηση του συστήματος σας εξασφαλίζει ότι
το σύστημα ξεκινάει με το νέο πυρήνα, το ενημερωμένο βασικό
σύστημα και τα καινούρια αρχεία ρυθμίσεων.</para>
</listitem>
</orderedlist>
<para>Αν η αναβάθμιση που κάνετε είναι από μια έκδοση του &os; σε μια
πιο καινούρια έκδοση του ίδιου κλάδου ανάπτυξης, π.χ. από 7.0 σε 7.1,
τότε μερικά από τα βήματα αυτή της διαδικασίας μπορεί να μη
χρειάζονται αφού είναι λιγότερο πιθανό να συναντήσετε ασυμβατότητες
μεταξύ του μεταγλωττιστή συστήματος, του πυρήνα, του βασικού
συστήματος και των αρχείων ρυθμίσεων. Η αναβάθμιση σε τέτοιες
περιπτώσεις, μεταξύ δύο minor εκδόσεων του &os;, ίσως μπορεί να γίνει
και με την παλιότερη διαδικασία:
τρέχοντας<command>make <maketarget>world</maketarget></command> και
ύστερα μεταγλωττίζοντας και στήνοντας ένα νέο πυρήνα.</para>
<para>Όταν όμως αναβαθμίσετε το &os; μεταξύ major εκδόσεων, καλύτερα να
χρησιμοποιήσετε τη διαδικασία που περιγράφουμε εδώ. Αλλιώς μπορεί να
αντιμετωπίσετε προβλήματα είτε κατά τη διάρκεια της αναβάθμισης ή αφού
έχει πλέον ολοκληρωθεί.</para>
<para>Κάποιες από τις αναβαθμίσεις (π.χ. από μια έκδοση
&nbsp;4.<replaceable>X</replaceable> σε 5.0) μπορεί να απαιτούν μερικά
χειροκίνητα βήματα (όπως το να μετακινήσετε ή να σβήσετε συγκεκριμένα
αρχεία πριν το βήμα <maketarget>installworld</maketarget>). Πριν από
κάθε αναβάθμιση διαβάστε προσεκτικά τις οδηγίες στο
αρχείο <filename>/usr/src/UPDATING</filename>· ειδικά τις οδηγίες στο
τέλος του αρχείου, οι οποίες περιγράφουν αναλυτικά την προτεινόμενη
διαδικασία αναβάθμισης.</para>
<para>Αυτή η διαδικασία αναβάθμισης εξελλίσεται και διορθώνεται καθώς οι
προγραμματιστές του &os; ανακαλύπτουν καινούριες εξαρτήσεις μεταξύ των
συστατικών του συστήματος ή κάνουν διορθώσεις για να αποφύγουν
ασυμβατότητες μεταξύ των διαφορετικών υποσυστημάτων. Ελπίζουμε ότι τα
κεντρικά βήματα της διαδικασίας που περιγράφεται εδώ δε θα αλλάξουν
πολύ για αρκετό καιρό πλέον.</para>
<note>
<para>Η αναβάθμιση του &os; από τις εκδόσεις
3.<replaceable>X</replaceable> ή από παλιότερες εκδόσεις είναι
σχετικά πιο περίπλοκη διαδικασία. Διαβάστε με πολλή προσοχή το
αρχείο <filename>UPDATING</filename> αν πραγματικά χρειαστεί να
αναβαθμίσετε ένα τέτοιο σύστημα.</para>
</note>
<para>Οπότε, συγκεντρώνοντας όλα τα βήματα τα οποία περιγράψαμε
παραπάνω, η πρτεινόμενη διαδικασία αναβάθμισης του &os; από τον πηγαίο
κώδικα του συστήματος είναι:</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make buildworld</userinput>