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 ca6f83ed18..9ec383a24f 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,2960 @@
JimMockΑναδομήθηκε, αναδιοργανώθηκε, και τμήματα του ανανεώθηκαν
από τον JordanHubbardΑρχική συνεισφορά από τους Poul-HenningKampJohnPolstraNikClaytonΕνημέρωση και Αναβάθμιση του &os;ΣύνοψηΤο &os; βρίσκεται υπό συνεχή εξέλιξη μεταξύ των επίσημων εκδόσεων
του. Μερικοί άνθρωποι προτιμούν να χρησιμοποιούν τις επίσημες εκδόσεις,
ενώ άλλοι προτιμούν να κρατούν το σύστημα τους ενημερωμένο με τις
τελευταίες εξελίξεις. Ωστόσο, ακόμα και οι επίσημες εκδόσεις
ενημερώνονται συχνά με διορθώσεις κρίσιμων σφαλμάτων και ασφαλείας.
Όποια έκδοση και να χρησιμοποιήσετε, το &os; παρέχει όλα τα
απαραίτητα εργαλεία για να κρατήσετε το σύστημα σας ενημερωμένο, και
επίσης σας επιτρέπει να αναβαθμιστείτε εύκολα σε κάποια επόμενη
έκδοση. Το κεφάλαιο αυτό θα σας βοηθήσει να αποφασίσετε αν θέλετε να
παρακολουθείτε το σύστημα ανάπτυξης, ή αν θα προτιμήσετε να παραμείνετε
σε μια από τις παγιωμένες εκδόσεις. Θα παρουσιάσουμε επίσης τα βασικά
εργαλεία που απαιτούνται για την ενημέρωση και αναβάθμιση του
συστήματος.Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:Ποια βοηθητικά προγράμματα μπορείτε να χρησιμοποιήσετε για να
ενημερώσετε το σύστημα και την Συλλογή των Ports.Πως να διατηρείτε το σύστημα σας ενημερωμένο με τα προγράμματα
freebsd-updateCVSup,
CVS, ή
CTM.Πως να συγκρίνετε την κατάσταση ενός εγκατεστημένου συστήματος,
με αναφορά ένα γνωστό και εγγυημένα σωστό σύστημα.
+
+ Πως να διατηρήσετε την τεκμηρίωση σας ενημερωμένη μέσω του
+ CVSup.
+
+
Τη διαφορά μεταξύ των δύο κλάδων που βρίσκονται σε εξέλιξη: του
&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, αυτή είναι η κατάλληλη στιγμή για να
+ 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.
+
+ Για να εκτελέσετε και τις δύο διαδικασίες διαδοχικά, δώστε την
+ παρακάτω εντολή:
+
+ &prompt.root; portsnap fetch update
+
+
+
+ Ενημερώνοντας την Τεκμηρίωση
+
+ Updating and Upgrading
+
+
+ Documentation
+ Updating and Upgrading
+
+
+ Εκτός από το βασικό σύστημα και την Συλλογή των Ports, η τεκμηρίωση
+ αποτελεί επίσης βασικό τμήμα ενός συστήματος &os;. Αν και πάντα
+ μπορείτε να βρείτε την πιο πρόσφατη τεκμηρίωση στην δικτυακή τοποθεσία του &os;,
+ ορισμένοι χρήστες ίσως έχουν αργή ή μη σταθερή σύνδεση με το Διαδίκτυο.
+ Ευτυχώς υπάρχουν αρκετοί τρόποι για να ενημερώσετε την τεκμηρίωση η
+ οποία παρέχεται με κάθε επίσημη έκδοση, διατηρώντας το δικό σας τοπικό
+ αντίγραφο της πιο πρόσφατης τεκμηρίωσης του &os;.
+
+
+ Χρησιμοποιώντας το CVSup για την Ενημέρωση της
+ Τεκμηρίωσης
+
+ Ο πηγαίος κώδικας και το εγκατεστημένο αντίγραφο της τεκμηρίωσης
+ του &os;, μπορούν να ενημερωθούν με την βοήθεια του
+ CVSup, χρησιμοποιώντας ένα μηχανισμό
+ παρόμοιο με αυτόν που χρησιμοποιείται στο βασικό σύστημα (δείτε το
+ ). Η ενότητα αυτή περιγράφει:
+
+
+
+ Πως να εγκαταστήσετε τα εργαλεία που απαιτούνται για την
+ τεκμηρίωση, με τα οποία μπορείτε να δημιουργήσετε την τεκμηρίωση
+ του &os; ξεκινώντας από τον πηγαίο της κώδικα.
+
+
+
+ Πως να κατεβάσετε ένα αντίγραφο του πηγαίου κώδικα της
+ τεκμηρίωσης στον κατάλογο /usr/doc χρησιμοποιώντας το
+ CVSup.
+
+
+
+ Πως να αναδημιουργήσετε την τεκμηρίωση του &os; από τον
+ πηγαίο της κώδικα, και να την εγκαταστήσετε στον κατάλογο
+ /usr/share/doc/.
+
+
+
+
+
+ Εγκαθιστώντας το CVSup και τη Σειρά Εργαλείων της
+ Τεκμηρίωσης
+
+ Η αναδημιουργία της τεκμηρίωσης του &os; από τον πηγαίο κώδικα,
+ απαιτεί μια σχετικά μεγάλη συλλογή εργαλείων. Τα εργαλεία αυτά δεν
+ είναι μέρος του βασικού συστήματος του &os;, καθώς χρειάζονται αρκετό
+ χώρο στο δίσκο και δεν είναι χρήσιμα σε όλους τους χρήστες.
+ Είναι χρήσιμα μόνο στους χρήστες που ασχολούνται με τη συγγραφή νέας
+ τεκμηρίωσης για το &os;, ή που ενημερώνουν συχνά την τοπική τους
+ τεκμηρίωση μέσω του πηγαίου κώδικα.
+
+ Όλα τα απαιτούμενα εργαλεία διατίθενται μέσω της Συλλογής των
+ Ports. Το textproc/docproj είναι το κύριο port το
+ οποίο έχει αναπτυχθεί από την Ομάδα Τεκμηρίωσης του &os;, για να
+ βοηθήσει στην αρχική εγκατάσταση και τις μελλοντικές αναβαθμίσεις
+ αυτών των εργαλείων.
+
+
+ Αν δεν απαιτείται η δημιουργία τεκμηρίωσης σε μορφές
+ &postscript; ή PDF, μπορείτε να εγκαταστήσετε το port textproc/docproj-nojadetex. Αυτή η
+ έκδοση των εργαλείων περιέχει τα πάντα εκτός από την μηχανή
+ στοιχειοθεσίας teTeX.
+ Το teTeX είναι μια αρκετά μεγάλη συλλογή
+ εργαλείων, και δεν έχει νόημα να το εγκαταστήσετε αν δεν σας
+ είναι απαραίτητη η παραγωγή της τεκμηρίωσης σε μορφή
+ PDF.
+
+
+ Για περισσότερες πληροφορίες σχετικά με την εγκατάσταση και χρήση
+ του CVSup, δείτε την ενότητα Χρησιμοποιώντας το CVSup.
+
+
+
+ Ενημερώνοντας τον Πηγαίο Κώδικα της Τεκμηρίωσης
+
+ Το βοηθητικό πρόγραμμα CVSup μπορεί να
+ κατεβάσει ένα καθαρό αντίγραφο του πηγαίου κώδικα της τεκμηρίωσης,
+ χρησιμοποιώντας το
+ /usr/share/examples/cvsup/doc-supfile
+ ως πρότυπο αρχείο ρυθμίσεων. Ο προεπιλεγμένος υπολογιστής ενημερώσεων
+ στο παραπάνω αρχείο είναι ρυθμισμένος σε πλασματική τιμή. Ωστόσο,
+ η &man.cvsup.1; δέχεται όνομα υπολογιστή μέσω της γραμμής εντολών,
+ έτσι μπορείτε να ανακτήσετε τον πηγαίο κώδικα της τεκμηρίωσης μέσω
+ κάποιου εξυπηρετητή CVSup γράφοντας:
+
+ &prompt.root; cvsup -h cvsup.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/doc-supfile
+
+ Αλλάξτε το cvsup.FreeBSD.org με τον
+ κοντινότερο σας εξυπηρετητή CVSup. Δείτε
+ το για μια πλήρη λίστα των mirror
+ sites.
+
+ Το αρχικό κατέβασμα του πηγαίου κώδικα της τεκμηρίωσης μπορεί
+ να διαρκέσει αρκετή ώρα. Αφήστε το να εκτελείται μέχρι να
+ ολοκληρωθεί.
+
+ Μπορείτε να συνεχίσετε να ενημερώνετε τον πηγαίο κώδικα της
+ τεκμηρίωσης χρησιμοποιώντας την ίδια εντολή. Το βοηθητικό πρόγραμμα
+ CVSup κατεβάζει και αντιγράφει μόνο τις
+ ενημερώσεις σε σχέση με την τελευταία εκτέλεση του, έτσι κάθε εκτέλεση
+ του CVSup μετά την πρώτη θα πρέπει να
+ είναι αρκετά γρήγορη.
+
+ Μετά την αρχική ανάκτηση του πηγαίου κώδικα, ένας εναλλακτικός
+ τρόπος ενημέρωσης της τεκμηρίωσης είναι μέσω του αρχείου
+ Makefile στον κατάλογο /usr/doc. Θέτοντας τις μεταβλητές
+ SUP_UPDATE, SUPHOST και
+ DOCSUPFILE στο αρχείο
+ /etc/make.conf, μπορείτε να εκτελέσετε:
+
+ &prompt.root; cd /usr/doc
+&prompt.root; make update
+
+ Τυπικές τιμές για τις παραπάνω επιλογές του &man.make.1; στο
+ αρχείο /etc/make.conf είναι:
+
+ SUP_UPDATE= yes
+SUPHOST?= cvsup.freebsd.org
+DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile
+
+
+ Αν θέσετε τις τιμές των SUPHOST και
+ DOCSUPFILE σε ?=, θα μπορείτε
+ να ορίσετε άλλες τιμές για αυτές στη γραμμή εντολής του make.
+ Αυτός είναι και ο συνιστώμενος τρόπος να προσθέσετε επιλογές στο
+ make.conf, ώστε να αποφεύγετε να τροποποιείτε
+ συνέχεια το αρχείο κάθε φορά που θέλετε να δοκιμάσετε μια νέα τιμή
+ σε μια επιλογή.
+
+
+
+
+ Προσαρμογή Επιλογών στον Πηγαίο Κώδικα της Τεκμηρίωσης
+
+ Το σύστημα ενημέρωσης και μεταγλώττισης της τεκμηρίωσης του &os;,
+ υποστηρίζει μερικές επιλογές που διευκολύνουν τη διαδικασία
+ ενημέρωσης ενός μόνο μέρους της τεκμηρίωσης, ή την μεταγλώττιση
+ της τεκμηρίωσης κάποιων συγκεκριμένων μεταφράσεων. Αν θέλετε οι
+ επιλογές αυτές να ισχύουν μόνιμα, μπορείτε να τις ορίσετε μέσα στο
+ αρχείο /etc/make.conf, διαφορετικά μπορείτε να
+ τις ορίζετε κάθε φορά στη γραμμή εντολής της &man.make.1;.
+
+ Κάποιες από τις επιλογές αυτές φαίνονται παρακάτω:
+
+
+
+ DOC_LANG
+
+
+ Λίστα των γλωσσών και κωδικοποιήσεων που θα μεταγλωττιστούν
+ και θα εγκατασταθούν, π.χ. en_US.ISO8859-1
+ αν είναι επιθυμητή μόνο η Αγγλική τεκμηρίωση.
+
+
+
+
+ FORMATS
+
+
+ Η μορφή (ή μια λίστα από μορφές) στην οποία θα παραχθεί η
+ μεταγλωττισμένη τεκμηρίωση. Τη δεδομένη στιγμή υποστηρίζονται
+ οι μορφές html,
+ html-split, txt,
+ ps, pdf και
+ rtf.
+
+
+
+
+ SUPHOST
+
+
+ Το όνομα του εξυπηρετητή CVSup
+ που θα χρησιμοποιηθεί κατά την ενημέρωση.
+
+
+
+
+ Για περισσότερες πληροφορίες σχετικά με τις μεταβλητές του make
+ που υποστηρίζονται ως επιλογές συστήματος στο &os;, δείτε την σελίδα
+ manual του &man.make.conf.5;.
+
+ Για περισσότερες πληροφορίες και μεταβλητές make που
+ υποστηρίζονται από το σύστημα μεταγλώττισης της τεκμηρίωσης του &os;,
+ παρακαλούμε δείτε τις Οδηγίες της Ομάδας
+ Τεκμηρίωσης του &os; για Νέους Συγγραφείς.
+
+
+
+ Εγκατάσταση της Τεκμηρίωσης του FreeBSD από τον Πηγαίο
+ Κώδικα
+
+ Έχοντας ενημερώσει το τοπικό αντίγραφο του πηγαίου κώδικα της
+ τεκμηρίωσης στον κατάλογο /usr/doc, είμαστε έτοιμοι για την
+ ενημέρωση της εγκατεστημένης τεκμηρίωσης.
+
+ Μπορείτε να προχωρήσετε σε πλήρη ενημέρωση όλων των γλωσσών που
+ ορίζονται στην επιλογή DOC_LANG του Makefile,
+ γράφοντας:
+
+ &prompt.root; cd /usr/doc
+&prompt.root; make install clean
+
+ Αν έχετε ρυθμίσει το make.conf με τις σωστές
+ τιμές για τις επιλογές DOCSUPFILE,
+ SUPHOST και SUP_UPDATE, μπορείτε
+ να συνδυάσετε τα βήματα ενημέρωσης και εγκατάστασης του πηγαίου
+ κώδικα σε ένα, γράφοντας:
+
+ &prompt.root; cd /usr/doc
+&prompt.root; make update install clean
+
+ Αν επιθυμείτε την ενημέρωση μιας μόνο συγκεκριμένης γλώσσας,
+ μπορείτε να καλέσετε την &man.make.1; σε ένα συγκεκριμένο
+ υποκατάλογο του /usr/doc,
+ π.χ.:
+
+ &prompt.root; cd /usr/doc/en_US.ISO8859-1
+&prompt.root; make update install clean
+
+ Μπορείτε να καθορίσετε τη μορφή της τεκμηρίωσης που θα
+ εγκατασταθεί, ρυθμίζοντας τη μεταβλητή FORMATS του
+ make, π.χ.:
+
+ &prompt.root; cd /usr/doc
+&prompt.root; make FORMATS='html html-split' install clean
+
+
+
+
+
+
+ Pav
+ Lucistnik
+ Βασισμένο σε πληροφορίες που παρείχε ο
+
+
+
+
+ Χρησιμοποιώντας το Docsnap
+
+ Updating and Upgrading
+
+
+ Docsnap
+ Updating and Upgrading
+
+
+ Το Docsnap είναι ένα αποθετήριο
+ (repository) &man.rsync.1; για την ενημέρωση της εγκατεστημένης
+ τεκμηρίωσης του &os; μέσω ενός σχετικά εύκολου και γρήγορου
+ τρόπου. Ένας
+ εξυπηρετητής Docsnap
+ ανακτά τον ενημερωμένο πηγαίο κώδικα της τεκμηρίωσης και τον
+ μεταγλωττίζει σε μορφή HTML κάθε μια ώρα. Δεν χρειάζεται να
+ εγκαταστήσετε το textproc/docproj
+ με το Docsnap, καθώς σας παρέχει
+ έτοιμες διορθώσεις για την ήδη εγκατεστημένη τεκμηρίωση.
+
+ Η μόνη απαίτηση για την παραπάνω τεχνική, είναι να έχετε
+ εγκαταστήσει το πακέτο ή port net/rsync. Για να το προσθέσετε,
+ χρησιμοποιήστε την παρακάτω εντολή:
+
+ &prompt.root; pkg_add -r rsync
+
+
+ Το Docsnap αναπτύχθηκε αρχικά για
+ την ενημέρωση της τεκμηρίωσης που έχει εγκατασταθεί στον κατάλογο
+ /usr/share/doc, αλλά τα
+ παρακάτω παραδείγματα μπορούν να προσαρμοστούν και για άλλους
+ καταλόγους. Για καταλόγους χρηστών, οι εντολές δεν χρειάζεται να
+ εκτελεστούν με προνόμια root.
+
+
+ Για την ενημέρωση της τεκμηρίωσης, χρησιμοποιήστε την παρακάτω
+ εντολή:
+
+ &prompt.root; rsync -rltvz docsnap.sk.FreeBSD.org::docsnap /usr/share/doc
+
+
+ Υπάρχει μόνο ένας εξυπηρετητής
+ Docsnap τη δεδομένη στιγμή:
+ ο εξυπηρετητής docsnap.sk.FreeBSD.org που φαίνεται
+ παραπάνω.
+
+
+ Μην χρησιμοποιήσετε την επιλογή , καθώς
+ η make installworld εγκαθιστά κάποια πράγματα στον
+ κατάλογο /usr/share/doc τα
+ οποία θα σβηστούν. Για να καθαρίσετε τα παλιά αρχεία, χρησιμοποιήστε
+ την παρακάτω εντολή:
+
+ &prompt.root; rsync -rltvz --delete docsnap.sk.FreeBSD.org::docsnap/??_??\.\* /usr/share/doc
+
+ Αν επιθυμείτε να ενημερώσετε ένα υποσύνολο της τεκμηρίωσης, για
+ παράδειγμα μόνο την Αγγλική τεκμηρίωση, μπορείτε να χρησιμοποιήσετε
+ την παρακάτω εντολή:
+
+ &prompt.root; rsync -rltvz docsnap.sk.FreeBSD.org::docsnap/en_US.ISO8859-1 /usr/share/doc
+
+]]>
Παρακολούθηση Ενός Κλάδου Ανάπτυξης-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/ports/chapter.sgml b/el_GR.ISO8859-7/books/handbook/ports/chapter.sgml
index 6204bac3e5..34ecc47f7c 100644
--- a/el_GR.ISO8859-7/books/handbook/ports/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/ports/chapter.sgml
@@ -1,1664 +1,1644 @@
Εγκατάσταση Εφαρμογών: Πακέτα και PortsΣύνοψηportsPackagesΤο &os; συνοδεύεται από μία πλούσια συλλογή από προγράμματα σαν
μέρος του βασικού συστήματος. Όμως, λίγα μπορεί να κάνει κάποιος πριν
βρεθεί στην ανάγκη να εγκαταστήσει μια πρόσθετη εφαρμογή για να
υλοποιήσει μια πραγματική εργασία. Το &os; παρέχει δυο συμπληρωματικές
τεχνολογίες για να εγκαταστήσετε πρόσθετες εφαρμογές στο σύστημα σας:
τη Συλλογή των Ports (Ports Collection, για εγκατάσταση από τον
πηγαίο κώδικα), και τα πακέτα (packages, για εγκατάσταση από
προ-μεταγλωττισμένα εκτελέσιμα πακέτα). Κάθε μία από τις δυο μεθόδους
μπορεί να χρησιμοποιηθεί για να εγκαταστήσετε τις νεότερες εκδόσεις από
τις αγαπημένες σας εφαρμογές, από τοπικά αποθηκευτικά μέσα ή απευθείας
από το δίκτυο.Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:Πως να εγκαθιστάτε προ-μεταγλωττισμένα πακέτα λογισμικού.Πως να μεταγλωττίζετε πρόσθετο λογισμικό από τον πηγαίο κώδικα
χρησιμοποιώντας την Συλλογή των Ports.Πως να κάνετε απεγκατάσταση εγκαταστημένων πακέτων ή
ports.Πως να αλλάζετε τις προκαθορισμένες ρυθμίσεις που χρησιμοποιεί
η Συλλογή των Ports.Πως να βρίσκετε τα κατάλληλα πακέτα λογισμικού.Πως να αναβαθμίζετε τις εφαρμογές σας.Επισκόπησή της εγκατάστασης λογισμικούΑν έχετε χρησιμοποιήσει ένα &unix; σύστημα στο παρελθόν, θα
γνωρίζετε ότι η συνηθισμένη διαδικασία για την εγκατάσταση πρόσθετου
λογισμικού είναι περίπου η παρακάτω:Κατέβασμα του λογισμικού, που μπορεί να
διανέμεται σε μορφή πηγαίου κώδικα, ή σαν εκτελέσιμο.Αποσυμπίεση του λογισμικού από την μορφή της διανομής του
(συνήθως ένα tarball συμπιεσμένο με το &man.compress.1;,
&man.gzip.1;, ή &man.bzip2.1;).Εντοπισμός της τεκμηρίωσης (πιθανώς ένα αρχείο
INSTALL ή README
ή μερικά αρχεία μέσα σε ένα υποκατάλογο doc/)
και ανάγνωσή τους για το πως θα εγκατασταθεί το λογισμικό.Αν το λογισμικό διανέμεται με τη μορφή πηγαίου κώδικα,
μεταγλώττιση του. Αυτό μπορεί να περιλαμβάνει την επεξεργασία ενός
Makefile, ή την εκτέλεση ενός
configure script, και άλλες εργασίες.Δοκιμή και εγκατάσταση του λογισμικού.Και αυτά μόνο αν όλα πάνε καλά. Αν εγκαθιστάτε ένα λογισμικό που
δεν έχει μεταφερθεί στο &os; ίσως να πρέπει να τροποποιήσετε τον πηγαίο
κώδικα για να δουλέψει σωστά.Αν το θέλετε, μπορείτε να συνεχίσετε να εγκαθιστάτε λογισμικό με
τον παραδοσιακό τρόπο στο &os;. Όμως, το &os;
παρέχει δυο τεχνολογίες που μπορούν να σας γλιτώσουν από πολύ κόπο:
τα πακέτα και τα ports. Την στιγμή που γράφτηκε αυτό το κείμενο,
διατίθονταν με αυτόν τον τρόπο πάνω από &os.numports; πρόσθετες
εφαρμογές.Για οποιαδήποτε εφαρμογή, το αντίστοιχο &os; πακέτο της
είναι ένα μοναδικό αρχείο που πρέπει εσείς να κατεβάσετε.
Το πακέτο περιέχει προ-μεταγλωττισμένα αντίγραφα από όλες τις εντολές
της εφαρμογής, όπως επίσης και αρχεία παραμετροποίησης ή τεκμηρίωσης.
Ένα τέτοιο πακέτο σε μορφή αρχείου, μπορείτε να το χειριστείτε με τις
εντολές διαχείρισής πακέτων του &os;, όπως οι &man.pkg.add.1;,
&man.pkg.delete.1;, &man.pkg.info.1;, και πάει λέγοντας.
Η εγκατάσταση μιας νέας εφαρμογής μπορεί να γίνει με μία μόνο
εντολή.Ένα &os; port για μία εφαρμογή είναι μια συλλογή από αρχεία
σχεδιασμένα για να αυτοματοποιήσουν την διαδικασία μεταγλώττισης της
εφαρμογής από τον πηγαίο κώδικα.Θυμηθείτε ότι υπάρχουν μερικά βήματα που θα πρέπει λογικά να κάνετε
αν μεταγλωττίσετε ένα πρόγραμμα μόνος σας (κατέβασμα,
αποσυμπίεση, προσαρμογή (patching), μεταγλώττιση, εγκατάσταση).
Τα αρχεία που αποτελούν ένα port περιέχουν όλες τις απαραίτητες
πληροφορίες για να επιτρέψουν στο σύστημα να κάνει όλα αυτά για εσάς.
Εσείς εκτελείτε μερικές απλές εντολές, και ο πηγαίος κώδικας για την
εφαρμογή αυτόματα κατεβαίνει, αποσυμπιέζεται,
προσαρμόζεται, μεταγλωττίζεται, και εγκαθίσταται για εσάς.Στην πραγματικότητα, το σύστημα ports μπορεί επίσης να
χρησιμοποιηθεί για να δημιουργηθούν πακέτα που μπορείτε αργότερα να
διαχειριστείτε με την pkg_add και τις άλλες εντολές
διαχείρισής πακέτων που θα αναφερθούν σε λίγο.Τόσο τα πακέτα, όσο και τα ports κατανοούν τις
εξαρτήσεις (dependencies). Ας υποθέσουμε ότι
θέλετε να εγκαταστήσετε μία εφαρμογή που εξαρτάται από μία συγκεκριμένη
βιβλιοθήκη για να λειτουργήσει. Τόσο η εφαρμογή, όσο και η βιβλιοθήκη
διατίθενται ως πακέτα και ports του &os;. Αν χρησιμοποιήσετε την εντολή
pkg_add ή το σύστημα των ports για να εγκαταστήσετε
την εφαρμογή, αμφότερα θα παρατηρήσουν ότι η βιβλιοθήκη δεν είναι
εγκατεστημένη, και αυτόματα θα την εγκαταστήσουν πριν από το
πρόγραμμα.Έχοντας αναφέρει ότι οι δύο τεχνολογίες είναι αρκετά όμοιες, ίσως να
αναρωτιέστε γιατί το &os; προσφέρει και τις δύο. Τα πακέτα και τα
ports αμφότερα έχουν τα δικά τους πλεονεκτήματα, και το τι θα
χρησιμοποιήσετε εξαρτάται από την δική σας προτίμηση.Πλεονεκτήματα των ΠακέτωνΈνα συμπιεσμένο tarball πακέτου είναι συνήθως μικρότερο από
το συμπιεσμένο tarball που περιέχει τον πηγαίο κώδικα για την
εφαρμογή.Τα πακέτα δεν χρειάζονται μεταγλώττιση. Για
μεγάλες εφαρμογές, όπως είναι ο
Mozilla, το
KDE, ή το
GNOME αυτό μπορεί να είναι σημαντικό,
ιδιαίτερα αν βρίσκεστε σε ένα αργό μηχάνημα.Τα πακέτα δεν απαιτούν να κατανοήσετε την διαδικασία
που σχετίζεται με την μεταγλώττιση λογισμικού στο &os;.Πλεονεκτήματα των PortsΤα πακέτα συνήθως είναι μεταγλωττισμένα με συντηρητικές
επιλογές, επειδή πρέπει να λειτουργούν στον μέγιστο αριθμό
συστημάτων. Με εγκατάσταση από το port, μπορείτε να ρυθμίσετε τις
επιλογές μεταγλώττισης (για παράδειγμα) να δημιουργήσουν εκτελέσιμο
κώδικα που να εκμεταλλεύεται τις ικανότητες ενός Pentium 4 ή Athlon
επεξεργαστή.Μερικές εφαρμογές έχουν επιλογές μεταγλώττισης που σχετίζονται
με το τι μπορούν να κάνουν και τι όχι. Για παράδειγμα, ο
Apache μπορεί να μεταγλωττιστεί με ένα
ευρύ φάσμα από επιλογές. Μεταγλωττίζοντας τον από το port, δεν
είναι ανάγκη να δεχτείτε τις προεπιλεγμένες επιλογές, μπορείτε να
κάνετε τις δικές σας.Σε μερικές περιπτώσεις, μπορεί να υπάρχουν πολλαπλά πακέτα
για την ίδια εφαρμογή, με διαφορετικές ρυθμίσεις. Για παράδειγμα,
το Ghostscript διατίθεται ως ένα πακέτο
ghostscript και ένα πακέτο
ghostscript-nox11, αναλόγως αν
θα εγκαταστήσετε ή όχι έναν X11 server. Αυτού του τύπου
οι ρυθμίσεις είναι δυνατές με τα πακέτα, αλλά γρήγορα
γίνονται αδύνατες αν μία εφαρμογή έχει περισσότερες από μία ή δύο
διαφορετικές ρυθμίσεις μεταγλώττισης.Οι συνθήκες των αδειών διανομής από μερικές διανομές
λογισμικού, απαγορεύουν την διανομή εκτελέσιμου κώδικα. Πρέπει να
διανεμηθούν με την μορφή πηγαίου κώδικα.Μερικά άτομα δεν εμπιστεύονται τα έτοιμα εκτελέσιμα.
Τουλάχιστον με τον πηγαίο κώδικα, μπορείτε (θεωρητικά) να τον
διαβάσετε και να ψάξετε για πιθανά προβλήματα μόνος σας.Αν έχετε τοπικά, δικά σας patches, θα χρειαστείτε τον πηγαίο
κώδικα για να τα εφαρμόσετε.Μερικά άτομα γουστάρουν να έχουν τον πηγαίο κώδικα, ώστε να τον
διαβάσουν αν βαρεθούνε, να τον αλλάξουν (hack), να δανειστούν από
αυτόν (αν βέβαια το επιτρέπει η άδεια), κ.λ.π.Για να είστε ενήμερος για τα ανανεωμένα ports, εγγραφείτε στην
&a.ports; και στην &a.ports-bugs;.Πριν εγκαταστήσετε οποιοδήποτε εφαρμογή, πρέπει να ελέγχετε το
για θέματα ασφαλείας
που σχετίζονται με την εφαρμογή σας.Μπορείτε επίσης να εγκαταστήσετε το ports-mgmt/portaudit το οποίο αυτόματα
θα ελέγχει όλες τις εγκαταστημένες εφαρμογές για γνωστά τρωτά
σημεία. Έλεγχος επίσης θα πραγματοποιείται πριν τη μεταγλώττιση
οποιουδήποτε port. Στο ενδιάμεσο, μπορείτε να χρησιμοποιείτε την
εντολή portaudit -F -a αφότου έχετε πρώτα
εγκαταστήσει μερικά πακέτα.Το υπόλοιπο αυτού του κεφαλαίου εξηγεί πως να χρησιμοποιήσετε τα
πακέτα και τα ports για να εγκαταστήσετε και να διαχειριστείτε πρόσθετο
λογισμικό στο &os;.Βρίσκοντας την Εφαρμογή σαςΠριν εγκαταστήσετε οποιαδήποτε εφαρμογή πρέπει να γνωρίζετε τι
θέλετε να κάνει, και πως ονομάζεται η εφαρμογή.Η λίστα των διαθέσιμων εφαρμογών στο &os; μεγαλώνει συνεχώς.
Ευτυχώς, υπάρχουν πολλοί τρόποι να βρείτε αυτό που θέλετε:Στη δικτυακή τοποθεσία του &os; θα βρείτε μια
λίστα από όλες τις διαθέσιμες εφαρμογές, στο http://www.FreeBSD.org/ports/.
Η λίστα αυτή ανανεώνεται συχνά, ενώ υπάρχει και δυνατότητα
αναζήτησης. Τα ports είναι χωρισμένα σε κατηγορίες, και μπορείτε
να αναζητήσετε μία εφαρμογή είτε με το όνομα (αν το ξέρετε), ή να
δείτε όλες τις εφαρμογές που είναι διαθέσιμες σε μια
κατηγορία.FreshPortsΟ Dan Langille διατηρεί το FreshPorts, στο . Το FreshPorts
καταγράφει τις αλλαγές των εφαρμογών στο δέντρο των ports καθώς
συμβαίνουν, επιτρέποντάς σας να παρακολουθείτε ένα
ή περισσότερα ports, και μπορεί να σας στείλει email όταν αυτά
ανανεώνονται.FreshMeatΑν δεν γνωρίζετε το όνομα της εφαρμογής που θέλετε,
δοκιμάστε να χρησιμοποιήσετε ένα site σαν το FreshMeat () για να βρείτε μία
εφαρμογή, και μετά μπορείτε να ελέγξετε ξανά το site του &os; για
να δείτε αν η εφαρμογή έχει γίνει port.Αν ξέρετε το ακριβές όνομα του port, και θέλετε μόνο να
βρείτε σε ποια κατηγορία είναι, μπορείτε να χρησιμοποιήσετε την
εντολή &man.whereis.1;. Απλά γράψτε
whereis αρχείο, όπου
αρχείο είναι το πρόγραμμα που θέλετε να
εγκαταστήσετε. Αν αυτό βρίσκεται στο σύστημα σας, η εντολή θα σας
πει που είναι, όπως παρακάτω:&prompt.root; whereis lsof
lsof: /usr/ports/sysutils/lsofΑυτό μας λέει ότι το lsof (ένα εργαλείο
συστήματος) μπορεί να βρεθεί στον κατάλογο
/usr/ports/sysutils/lsof.Επιπρόσθετα, μπορείτε να χρησιμοποιήσετε μια απλή εντολή
&man.echo.1; για να εντοπίσετε την τοποθεσία κάποιου προγράμματος
μέσα στα ports. Για παράδειγμα:&prompt.root; echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsofΣημειώστε ότι το παραπάνω θα δείξει επίσης και οποιαδήποτε
αρχεία έχουν κατέβει στον κατάλογο
/usr/ports/distfiles εφόσον
ταιριάζουν στην αναζήτηση.Ακόμη ένας τρόπος να βρείτε ένα συγκεκριμένο port, είναι
χρησιμοποιώντας τον εσωτερικό μηχανισμό αναζήτησης της Συλλογής των
Ports. Γα να χρησιμοποιήσετε αυτό τον τρόπο αναζήτησης, Θα
χρειαστεί να βρίσκεστε στον κατάλογο
/usr/ports. Όταν βρεθείτε σε αυτόν τον
κατάλογο, εκτελέστε το make search
name=όνομα--προγράμματος όπου
όνομα--προγράμματος είναι το όνομα
του προγράμματος που θέλετε να βρείτε. Για παράδειγμα, αν αναζητάτε
το lsof:&prompt.root; cd /usr/ports
&prompt.root; make search name=lsof
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps: Το τμήμα της εξόδου που πρέπει να προσέξετε ιδιαίτερα
είναι η γραμμή Path:, αφού αυτή σας
λέει που να βρείτε το port. Οι υπόλοιπες πληροφορίες που
παρέχονται δεν χρειάζονται για να εγκατασταθεί το port, για αυτό
δεν θα αναλυθούν εδώ.Για πιο λεπτομερή αναζήτηση μπορείτε να χρησιμοποιήσετε επίσης
make search key=φράση όπου
φράση είναι κάποιο κείμενο προς
αναζήτηση. Αυτό αναζητά ονόματα port, σχόλια, περιγραφές και
εξαρτήσεις, και μπορεί να χρησιμοποιηθεί για να βρεθούν ports που
σχετίζονται με ένα συγκεκριμένο θέμα, εάν δεν γνωρίζετε το όνομα
του προγράμματος που αναζητάτε.Σε όλες τις παραπάνω περιπτώσεις, η φράση προς αναζήτηση είναι
case-insensitive (δεν λαμβάνει υπόψη τις διαφορές κεφαλαίων-μικρών).
Η αναζήτηση για το LSOF, θα δώσει τα ίδια
αποτελέσματα με την αναζήτηση για το lsof.ChernLeeΣυνεισφορά του Χρησιμοποιώντας το Σύστημα των ΠακέτωνΥπάρχουν διάφορα εργαλεία με τα οποία μπορείτε να διαχειριστείτε τα
πακέτα στο &os;:Σε ένα σύστημα που βρίσκεται ήδη σε λειτουργία, μπορείτε να
εκτελέσετε το sysinstall για να
εγκαταστήσετε, να διαγράψετε, και να δείτε τις εγκατεστημένες και
τις διαθέσιμες εφαρμογές. Για περισσότερες πληροφορίες, δείτε το
, Μετά την Εγκατάσταση.Τα διάφορα εργαλεία διαχείρισης μέσω της γραμμής εντολών, που
αποτελούν και το αντικείμενο συζήτησης αυτής της ενότητας.Εγκαθιστώντας ένα Πακέτοpackagesinstallingpkg_addΜπορείτε να χρησιμοποιήσετε το εργαλείο &man.pkg.add.1; για να
εγκαταστήσετε ένα πακέτο λογισμικού του &os; από ένα τοπικά
αποθηκευμένο αρχείο ή από έναν διακομιστή στο δίκτυο.Κατέβασμα ενός πακέτου χειροκίνητα και
εγκατάσταση του τοπικά&prompt.root; ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp>get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp>exit
&prompt.root; pkg_add lsof-4.56.4.tgzΕάν δεν έχετε μία τοπική πηγή πακέτων (όπως είναι ένα
&os; CD-ROM set) τότε ίσως είναι ευκολότερο να χρησιμοποιήσετε
την επιλογή για το &man.pkg.add.1;. Αυτή θα
κάνει το εργαλείο να καθορίσει αυτόματα τη σωστή μορφή και έκδοση
και έπειτα να ανακτήσει και να εγκαταστήσει το πακέτο από ένα FTP
site.pkg_add&prompt.root; pkg_add -r lsofΤο παραπάνω παράδειγμα θα κατεβάσει και θα
εγκαταστήσει το σωστό πακέτο χωρίς περαιτέρω επέμβαση του χρήστη.
Αν δεν θέλετε να χρησιμοποιήσετε το κύριο site διανομής πακέτων,
μπορείτε να χρησιμοποιήσετε κάποιο mirror. Για το σκοπό αυτό, θα
πρέπει να ρυθμίσετε σωστά την τιμή της PACKAGESITE,
ώστε να παρακάμψετε τις προεπιλεγμένες ρυθμίσεις. Το &man.pkg.add.1;
χρησιμοποιεί το &man.fetch.3; για να κατεβάσει τα
αρχεία, και αυτό με τη σειρά του χρησιμοποιεί διάφορες μεταβλητές
περιβάλλοντος, περιλαμβανομένων των
FTP_PASSIVE_MODE, FTP_PROXY, και
FTP_PASSWORD. Ίσως χρειαστεί να ρυθμίσετε μία ή
περισσότερες από αυτές αν βρίσκεστε πίσω από ένα firewall, ή ίσως να
χρειαστεί να χρησιμοποιήσετε έναν FTP/HTTP proxy. Δείτε το
&man.fetch.3; για την πλήρη λίστα των μεταβλητών. Προσέξτε ότι στο
παραπάνω παράδειγμα χρησιμοποιείται το lsof αντί
του lsof-4.56.4. Όταν γίνεται απομακρυσμένη λήψη,
πρέπει να αφαιρεθεί ο αριθμός έκδοσης του πακέτου.
Το &man.pkg.add.1; θα κατεβάσει αυτόματα την τελευταία
έκδοση της εφαρμογής.Το &man.pkg.add.1; θα κατεβάσει την τελευταία
έκδοση της εφαρμογής αν χρησιμοποιείτε &os.current; ή
&os.stable;. Αν τρέχετε μια -RELEASE έκδοση, θα
κατεβάσει την έκδοση του πακέτου που έχει
μεταγλωττιστεί με την έκδοση σας. Είναι δυνατό να το αλλάξετε
αυτό, αλλάζοντας την PACKAGESITE.
Για παράδειγμα, αν τρέχετε ένα σύστημα &os; 5.4-RELEASE,
το &man.pkg.add.1;, από προεπιλογή, θα προσπαθήσει να
κατεβάσει πακέτα από το
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/.
Αν θέλετε να αναγκάσετε το &man.pkg.add.1;
να κατεβάσει πακέτα του &os; 5-STABLE, θέστε
την PACKAGESITE ως
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/.Τα αρχεία των πακέτων διανέμονται σε μορφές
.tgz και .tbz. Μπορείτε
να τα βρείτε στο ,
ή στα CD-ROM της διανομής του &os;. Κάθε CD στο &os; 4-CD set (και
στο PowerPak, κλπ.) περιέχει πακέτα στον κατάλογο
/packages. Η κατηγοριοποίηση των πακέτων
ακολουθεί την δομή του δέντρου /usr/ports.
Κάθε κατηγορία έχει το δικό της κατάλογο, και κάθε πακέτο μπορεί να
βρεθεί στον κατάλογο All.Η δομή των καταλόγων του συστήματος πακέτων ταιριάζει με την
αντίστοιχη των ports. Τα δύο συστήματα συνεργάζονται μεταξύ τους για
να δημιουργήσουν το συνολικό σύστημα πακέτων/ports.Διαχείριση των ΠακέτωνpackagesmanagingΤο &man.pkg.info.1; είναι ένα εργαλείο που παραθέτει και
περιγράφει τα διάφορα πακέτα που είναι εγκαταστημένα.pkg_info&prompt.root; pkg_info
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...Το &man.pkg.version.1; είναι ένα εργαλείο που συνοψίζει τις
εκδόσεις όλων των εγκαταστημένων πακέτων. Συγκρίνει την έκδοση κάθε
πακέτου, με την τρέχουσα έκδοση που βρίσκεται στο δέντρο των
ports.pkg_version&prompt.root; pkg_version
cvsup =
docbook =
...Τα σύμβολα στην δεύτερη στήλη δηλώνουν την σχετική ηλικία
μεταξύ των εγκατεστημένων εκδόσεων και των εκδόσεων που είναι
διαθέσιμες στο τοπικό δέντρο των ports.ΣύμβολοΣημασία=Η έκδοση του εγκατεστημένου πακέτου ταιριάζει με αυτή
που είναι διαθέσιμη στο τοπικό δέντρο των ports.<Η εγκατεστημένη έκδοση είναι παλαιότερη από αυτή που
είναι διαθέσιμη στο δέντρο των ports.>Η εγκατεστημένη έκδοση είναι νεότερη από αυτή που είναι
διαθέσιμη στο τοπικό δέντρο των ports. (Το τοπικό δέντρο των
ports είναι πιθανότατα απαρχαιωμένο.)?Το εγκατεστημένο πακέτο δεν βρίσκεται στα περιεχόμενα
των ports. (Αυτό μπορεί να συμβεί, για παράδειγμα, αν ένα
εγκατεστημένο port έχει αφαιρεθεί από την Συλλογή των Ports,
ή έχει μετονομαστεί.)*Υπάρχουν πολλαπλές εκδόσεις του πακέτου.!Το εγκατεστημένο πακέτο υπάρχει στο index, αλλά για
κάποιο λόγο το pkg_version δεν κατάφερε να
συγκρίνει την έκδοση του εγκατεστημένου πακέτου με την
αντίστοιχη καταχώρηση στο index.Αφαιρώντας ένα Πακέτοpkg_deletepackagesdeletingΓια να αφαιρέσετε ένα εγκατεστημένο πακέτο λογισμικού,
χρησιμοποιήστε το εργαλείο &man.pkg.delete.1;.&prompt.root; pkg_delete xchat-1.7.1Σημειώστε ότι το &man.pkg.delete.1; απαιτεί το πλήρες όνομα και
αριθμό έκδοσης του πακέτου. Η παραπάνω εντολή δεν θα λειτουργήσει
αν δώσετε απλώς xchat αντί για
xchat-1.7.1. Είναι ωστόσο εύκολο να
χρησιμοποιήσετε την &man.pkg.version.1; για να βρείτε την έκδοση του
εγκατεστημένου πακέτου. Αντί για αυτό, μπορείτε επίσης να
χρησιμοποιήσετε ένα μπαλαντέρ:&prompt.root; pkg_delete xchat\*Στην περίπτωση αυτή, θα διαγραφούν όλα τα πακέτα που τα ονόματα
τους αρχίζουν με xchat.ΔιάφοραΌλες οι πληροφορίες για τα πακέτα είναι αποθηκευμένες στον
κατάλογο /var/db/pkg. Στα αρχεία αυτού του
καταλόγου, θα βρείτε τη περιγραφή κάθε πακέτου, καθώς και τη λίστα
των αρχείων που εγκαθιστά.Χρησιμοποιώντας την Συλλογή των PortsΤα παρακάτω τμήματα δίνουν βασικές οδηγίες χρήσης της
Συλλογής των Ports για εγκατάσταση ή διαγραφή προγραμμάτων στο
σύστημα σας. Μπορείτε να βρείτε λεπτομερή περιγραφή των διαθέσιμων
επιλογών του make και των μεταβλητών περιβάλλοντος
στο &man.ports.7;.Ανακτώντας την Συλλογή των PortsΠριν μπορέσετε να εγκαταστήσετε προγράμματα μέσω των ports,
πρέπει πρώτα να ανακτήσετε την Συλλογή των Ports. Πρόκειται
ουσιαστικά για μια συλλογή από Makefiles,
patches, και αρχεία περιγραφής που τοποθετούνται στο
/usr/ports.Όταν εγκαταστήσατε το &os; σύστημα σας,
το sysinstall σας ρώτησε αν θέλατε
να εγκαταστήσετε την Συλλογή των Ports. Αν επιλέξατε όχι, μπορείτε να
ακολουθήσετε αυτές τις οδηγίες για να ανακτήσετε την Συλλογή των
Ports:Μέθοδος CVSupΑυτή είναι μια γρήγορη μέθοδος για να ανακτήσετε και να
διατηρήσετε ένα ανανεωμένο αντίγραφο της Συλλογής των Ports,
χρησιμοποιώντας το πρωτόκολλο CVSup.
Αν θέλετε να μάθετε περισσότερα για το
CVSup, δείτε το
Χρησιμοποιώντας το CVSup.Η υλοποίηση του CVSup που
περιλαμβάνεται σε ένα σύστημα &os;, ονομάζεται
csup. Εμφανίστηκε για πρώτη φορά στο
&os; 6.2. Οι χρήστες παλαιότερων εκδόσεων του &os;, μπορούν
να το εγκαταστήσουν μέσω του πακέτου ή port
net/csup.Σιγουρευθείτε ότι το
/usr/ports
είναι άδειο πριν εκτελέσετε το csup για
πρώτη φορά! Εάν έχετε ήδη ανακτήσει τη Συλλογή των Ports μέσω
κάποιας άλλης πηγής, το csup
δεν θα διαγράψει patches που έχουν αφαιρεθεί στο μεταξύ.Εκτελέστε το csup:&prompt.root; csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfileΑλλάξτε το
cvsup.FreeBSD.org με έναν
κοντινό σας διακομιστή CVSup. Δείτε
το CVSup Mirrors () για την πλήρη λίστα των mirror
sites.Αν θέλετε, μπορείτε να χρησιμοποιήσετε το δικό σας
ports-supfile, ώστε να αποφύγετε
(για παράδειγμα) να δηλώσετε τον διακομιστή
CVSup στην γραμμή εντολών.Σε αυτή την περίπτωση, ως root,
αντιγράψτε το
/usr/share/examples/cvsup/ports-supfile
σε μία νέα τοποθεσία, όπως το /root ή
τον δικό σας home κατάλογο.Τροποποιήστε το ports-supfile.Αλλάξτε το
CHANGE_THIS.FreeBSD.org
με έναν κοντινό σας διακομιστή
CVSup.Δείτε το CVSup Mirrors
() για την
πλήρη λίστα των mirror sites.Εκτελέστε τώρα το csup, με τον
ακόλουθο τρόπο:&prompt.root; csup -L 2 /root/ports-supfileΕκτελώντας την εντολή &man.csup.1; αργότερα, θα
κατεβάσει και θα εφαρμόσει όλες
τις πρόσφατες αλλαγές στην Συλλογή των Ports, εκτός από το να
επανα-μεταγλωττίσει τα ports για το σύστημα σας.Μέθοδος PortsnapΤο Portsnap είναι ένα εναλλακτικό
- σύστημα για την διανομή της
- Συλλογής των Ports. Διατέθηκε πρώτη φορά στο &os; 6.0.
- Σε παλαιότερα συστήματα, μπορείτε να το εγκαταστήσετε από το πακέτο
- ports-mgmt/portsnap:
-
- &prompt.root; pkg_add -r portsnap
-
- Παρακαλώ ελέγξτε το
- Χρησιμοποιώντας το Portsnap
- για μία λεπτομερή περιγραφή όλων των χαρακτηριστικών της
- εφαρμογής.
-
-
- Από την &os; 6.1-RELEΑSE και με τις νεότερες εκδόσεις
- του Portsnap, μπορείτε
- να αποφύγετε αυτό το βήμα με ασφάλεια. Το /usr/ports θα δημιουργηθεί
- αυτόματα με την πρώτη χρήση της εντολής &man.portsnap.8;.
- Με παλαιότερες εκδόσεις του Portsnap,
- πρέπει να δημιουργήσετε έναν άδειο κατάλογο /usr/ports αν δεν υπάρχει:
-
- &prompt.root; mkdir /usr/ports
-
+ σύστημα για την διανομή της Συλλογής των Ports. Παρακαλώ ελέγξτε το
+ Χρησιμοποιώντας το
+ Portsnap για μία λεπτομερή περιγραφή όλων των
+ χαρακτηριστικών της εφαρμογής.
Κατεβάστε ένα συμπιεσμένο snapshot της
Συλλογής των Ports
/var/db/portsnap.
Αν θέλετε, μπορείτε να αποσυνδεθείτε από το Διαδίκτυο μετά από
αυτό το βήμα.&prompt.root; portsnap fetchΑν εκτελείτε το Portsnap για
πρώτη φορά, κάντε εξαγωγή του snapshot μέσα στο /usr/ports:&prompt.root; portsnap extractΕάν ήδη έχετε ένα γεμάτο /usr/ports και απλώς το ανανεώνετε,
εκτελέστε την ακόλουθη εντολή:&prompt.root; portsnap updateΜέθοδος SysinstallΑυτή η μέθοδος χρησιμοποιεί το
sysinstall για την εγκατάσταση της
Συλλογής των Ports από το μέσο εγκατάστασης. Σημειώστε ότι με αυτό
τον τρόπο θα εγκαταστήσετε το παλαιό αντίγραφο της
Συλλογής των Ports, που αντιστοιχεί στην ημερομηνία της έκδοσης του
&os; που χρησιμοποιείτε. Εάν έχετε πρόσβαση στο Διαδίκτυο, πρέπει
πάντα να χρησιμοποιείτε μία από τις μεθόδους που αναφέρθηκαν πιο
πάνω.Ως root, εκτελέστε το
sysinstall
(/stand/sysinstall σε εκδόσεις του &os;
πριν την 5.2) όπως φαίνεται παρακάτω:&prompt.root; sysinstallΕπιλέξτε το Configure,
και πιέστε Enter.Επιλέξτε το Distributions, και
πιέστε Enter.Μετακινηθείτε στο ports, και πιέστε
Space.Μετακινηθείτε στο Exit, και πιέστε
Enter.Επιλέξτε το μέσο εγκατάστασης της επιθυμίας σας, όπως CDROM,
FTP, και πάει λέγοντας.Μετακινηθείτε στο Exit και πιέστε
Enter.Πιέστε X για να βγείτε από το
sysinstall.Εγκαθιστώντας PortsportsinstallingΤο πρώτο πράγμα που πρέπει να διευκρινιστεί σχετικά
με την Συλλογή των Ports είναι η έννοια του όρου
skeleton (σκελετός). Με λίγα λόγια, ένα port skeleton
είναι η ελάχιστη συλλογή αρχείων που καθοδηγούν ένα σύστημα &os; ώστε
να μεταγλωττίσει και να εγκαταστήσει σωστά ένα πρόγραμμα. Κάθε port
skeleton περιέχει:Ένα Makefile. Το
Makefile περιέχει διάφορες δηλώσεις
που ορίζουν πως πρέπει να μεταγλωττιστεί η εφαρμογή και που
πρέπει να εγκατασταθεί στο σύστημά σας.Ένα αρχείο distinfo. Αυτό το αρχείο
περιέχει πληροφορίες για τα αρχεία που πρέπει να
κατέβουν για την μεταγλώττιση του port, και τα
checksums τους (χρησιμοποιώντας τις &man.md5.1; και
&man.sha256.1;), για να επιβεβαιωθεί ότι τα αρχεία δεν έχουν
αλλοιωθεί κατά την διάρκεια της μεταφοράς τους.Έναν κατάλογο files. Αυτός ο
κατάλογος περιέχει τα patches που επιτρέπουν στο πρόγραμμα να
μεταγλωττιστεί και εγκατασταθεί στο &os; σύστημα σας. Τα patches
είναι μικρά αρχεία που ορίζουν αλλαγές σε συγκεκριμένα αρχεία.
Είναι σε μορφή κοινού κειμένου, και βασικά λένε
Αφαίρεσε την γραμμή 10 ή
Μετέτρεψε τη γραμμή 26 σε αυτό .... Τα patches
είναι επίσης γνωστά ως diffs επειδή δημιουργούνται
με το πρόγραμμα &man.diff.1;.Αυτός ο κατάλογος μπορεί να περιέχει και άλλα αρχεία που
χρησιμοποιούνται για να μεταγλωττιστεί το port.Ένα αρχείο pkg-descr. Αυτό είναι μία πιο
λεπτομερής, συχνά πολλών γραμμών, περιγραφή του
προγράμματος.Ένα αρχείο pkg-plist. Αυτό περιέχει μια
λίστα όλων των αρχείων που θα εγκατασταθούν από το port.
Επίσης καθοδηγεί το σύστημα των ports τι αρχεία να αφαιρέσει
κατά την απεγκατάσταση.Μερικά ports έχουν και άλλα αρχεία, όπως το
pkg-message. Το σύστημα των ports χρησιμοποιεί
αυτά τα αρχεία για να χειριστεί ειδικές περιστάσεις. Αν θέλετε
περισσότερες λεπτομέρειες για αυτά τα αρχεία, και τα ports
γενικότερα, δείτε το &os; Porter's
Handbook.Το port περιέχει οδηγίες για το πως να μεταγλωττιστεί ο πηγαίος
κώδικας, αλλά δεν περιέχει τον πηγαίο κώδικα. Μπορείτε να
προμηθευτείτε τον πηγαίο κώδικα από ένα CD-ROM ή από το Διαδίκτυο.
Ο πηγαίος κώδικας διανέμεται με οποιοδήποτε τρόπο επιθυμεί ο
δημιουργός του. Συχνά είναι ένα tarred και gzipped αρχείο,
αλλά μπορεί να είναι συμπιεσμένος με κάποιο άλλο εργαλείο ή να είναι
ακόμα και ασυμπίεστος. Ο πηγαίος κώδικας του προγράμματος, σε
οποιαδήποτε μορφή κι αν διατίθεται, λέγεται distfile.
Οι δύο μέθοδοι για να εγκαταστήσετε ένα &os; port περιγράφονται
παρακάτω.Πρέπει να συνδεθείτε ως root για να
εγκαταστήσετε ports.Πριν εγκαταστήσετε οποιαδήποτε port, πρέπει να σιγουρευτείτε
ότι έχετε μία ανανεωμένη Συλλογή των Ports, και πρέπει να ελέγξετε
το για θέματα
ασφαλείας σχετικά με το port που ενδιαφέρεστε.Αν θέλετε να ελέγχετε αυτόματα για τυχόν προβλήματα ασφαλείας
πριν από κάθε εγκατάσταση νέας εφαρμογής, μπορείτε να
χρησιμοποιήσετε το portaudit.
Θα βρείτε αυτό το εργαλείο στην Συλλογή των Ports
(ports-mgmt/portaudit). Είναι
καλή ιδέα να εκτελέσετε το portaudit -F πριν
εγκαταστήσετε ένα νέο port, για να ανακτήσετε την τρέχουσα βάση
δεδομένων προβλημάτων ασφαλείας. Αντίστοιχος έλεγχος και ανανέωση
της βάσης δεδομένων εκτελείται επίσης αυτόματα κατά τον καθημερινό
έλεγχο ασφαλείας του συστήματος. Για περισσότερες
πληροφορίες διαβάστε τις σελίδες manual &man.portaudit.1; και
&man.periodic.8;.Η Συλλογή των Ports προϋποθέτει ότι έχετε λειτουργική σύνδεση με
το Διαδίκτυο. Εάν δεν έχετε, θα χρειαστεί να βάλετε μόνος σας ένα
αντίγραφο του distfile μέσα στο
/usr/ports/distfiles.Αρχικά, μετακινηθείτε στον κατάλογο του port που θέλετε να
εγκαταστήσετε:&prompt.root; cd /usr/ports/sysutils/lsofΜόλις βρεθείτε στον κατάλογο lsof, θα
δείτε τον port skeleton. Το επόμενο βήμα είναι να μεταγλωττίσετε,
ή να κτίσετε (build), το port. Αυτό γίνεται απλά
πληκτρολογώντας make στην γραμμή εντολών. Όταν το
κάνετε, θα δείτε κάτι όπως αυτό:&prompt.root; make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===> Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[configure output snipped]
...
===> Building for lsof-4.57
...
[compilation output snipped]
...
&prompt.root;Προσέξτε ότι μόλις η μεταγλώττιση ολοκληρωθεί θα επιστρέψετε
στην γραμμή εντολών. Το επόμενο βήμα είναι να εγκαταστήσετε το
port. Για να το εγκαταστήσετε, χρειάζεται απλώς να προσθέσετε μια
λέξη στην εντολή make, και αυτή η λέξη είναι
install:&prompt.root; make install
===> Installing for lsof-4.57
...
[installation output snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;Μόλις επιστρέψετε στην γραμμή εντολών, θα πρέπει να μπορείτε
να εκτελέσετε την εφαρμογή που μόλις εγκαταστήσατε. Θα δείτε μια
προειδοποίηση ασφαλείας, επειδή το lsof είναι ένα
πρόγραμμα που τρέχει με αυξημένα προνόμια. Κατά την μεταγλώττιση
και εγκατάσταση των ports, θα πρέπει να προσέχετε οποιαδήποτε
προειδοποίηση εμφανιστεί.Μια καλή ιδέα, είναι να διαγράψετε τον υποκατάλογο
που περιέχει όλα τα προσωρινά αρχεία που χρησιμοποιήθηκαν κατά την
μεταγλώττιση. Όχι μόνο καταναλώνουν πολύτιμο χώρο, άλλα μπορεί να
προκαλέσουν προβλήματα αργότερα όταν θα θελήσετε να εγκαταστήσετε μια
νεότερη έκδοση του port.&prompt.root; make clean
===> Cleaning for lsof-4.57
&prompt.root;Μπορείτε να γλιτώσετε δύο πρόσθετα βήματα απλώς εκτελώντας
make install clean αντί
για make,
make install και
make clean
ως τρία ξεχωριστά βήματα.Μερικά κελύφη κρατάνε μια λίστα από τις εντολές που βρίσκονται
διαθέσιμες στους καταλόγους που αναφέρονται στην μεταβλητή
περιβάλλοντος PATH, για να επιταχύνουν τις
αναζητήσεις για τα εκτελέσιμα αρχεία αυτών των εντολών.
Αν χρησιμοποιείτε ένα από αυτά τα κελύφη, θα πρέπει
να χρησιμοποιήσετε την εντολή rehash μετά
την εγκατάσταση ενός port, πριν μπορέσετε να χρησιμοποιήσετε τις
νέες εντολές. Αυτή η εντολή λειτουργεί σε κελύφη όπως το
tcsh. Χρησιμοποιήστε την εντολή
hash -r για κελύφη όπως το
sh. Δείτε την τεκμηρίωση του κελύφους σας για
περισσότερες πληροφορίες.Μερικά προϊόντα τρίτων κατασκευαστών σε DVD-ROM, όπως το &os;
Toolkit από το &os; Mall, περιέχουν
distfiles. Αυτά μπορούν να χρησιμοποιηθούν με την Συλλογή των Ports.
Προσαρτήστε το DVD-ROM στο /cdrom. Αν
χρησιμοποιείτε κάποιο διαφορετικό σημείο προσάρτησης, ρυθμίστε την
μεταβλητή CD_MOUNTPTS του make. Τα αναγκαία
distfiles θα χρησιμοποιηθούν αυτόματα αν υπάρχουν στο δισκάκι.Πρέπει να γνωρίζετε ότι οι άδειες μερικών ports δεν επιτρέπουν
την διανομή τους σε CD-ROM. Αυτό μπορεί να οφείλεται π.χ. στο ότι
πρέπει να συμπληρώσετε μια φόρμα εγγραφής πριν
κατεβάσετε την εφαρμογή, ή στο ότι δεν επιτρέπεται η
επαναδιανομή, ή σε κάποιο άλλο λόγο. Εάν θέλετε να εγκαταστήσετε
ένα port που δεν περιλαμβάνεται στο CD-ROM, θα χρειαστεί να είστε
συνδεδεμένος στο Διαδίκτυο για να το επιτύχετε.Το σύστημα των ports χρησιμοποιεί το &man.fetch.3; για να
κατεβάσει τα αρχεία. Το &man.fetch.3;
χρησιμοποιεί διάφορες μεταβλητές περιβάλλοντος, περιλαμβανομένων των
FTP_PASSIVE_MODE, FTP_PROXY, και
FTP_PASSWORD. Ίσως χρειαστεί να ρυθμίσετε μία ή
περισσότερες αν βρίσκεστε πίσω από ένα firewall, ή ίσως να χρειαστεί
να χρησιμοποιήσετε έναν FTP/HTTP proxy. Δείτε το &man.fetch.3; για
μια πλήρη λίστα των μεταβλητών αυτών.Για χρήστες που δεν μπορούν να είναι συνδεδεμένοι όλη την ώρα,
διατίθεται η επιλογή
make fetch.
Απλώς εκτελέστε την εντολή στον κατάλογο
(/usr/ports) και τα απαραίτητα αρχεία
θα κατέβουν για εσάς. Η εντολή αυτή θα λειτουργήσει
και σε υποκαταλόγους, όπως για παράδειγμα:
/usr/ports/net. Προσέξτε ότι αν ένα port
εξαρτάται από βιβλιοθήκες ή άλλα ports, η εντολή αυτή
δεν θα ανακτήσει τα distfiles τους.
Αντικαταστήστε το fetch με το
fetch-recursive
αν θέλετε μαζί με το port να ανακτήσετε και όλες τις
εξαρτήσεις του.Μπορείτε να μεταγλωττίσετε όλα τα ports σε μία κατηγορία ή
ακόμα και σε όλες, εκτελώντας το make στον αρχικό
κατάλογο, όπως με την προαναφερθείσα
make fetch μέθοδο.
Αυτό όμως είναι επικίνδυνο, γιατί μερικά ports δεν μπορούν να
συνυπάρχουν. Σε άλλες περιπτώσεις, μερικά ports μπορεί να
εγκαταστήσουν δυο διαφορετικά αρχεία με το με το ίδιο
όνομα.Σε μερικές σπάνιες περιπτώσεις, οι χρήστες μπορεί να χρειάζεται
να ανακτήσουν τα tarballs από ένα site διαφορετικό από τα
MASTER_SITES (η τοποθεσία από όπου
κατεβαίνουν τα αρχεία). Μπορείτε να αλλάξετε την
επιλογή MASTER_SITES με την ακόλουθη
εντολή:&prompt.root; cd /usr/ports/directory
&prompt.root; make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetchΣε αυτό το παράδειγμα αλλάξαμε την επιλογή
MASTER_SITES σε ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.Μερικά ports επιτρέπουν (ή απαιτούν) να δώσετε επιλογές
μεταγλώττισης που μπορούν να ενεργοποιήσουν/απενεργοποιήσουν
τμήματα της εφαρμογής που είναι αχρείαστα, συγκεκριμένες επιλογές
ασφαλείας, και άλλες τροποποιήσεις. Κοινά παραδείγματα τέτοιων
ports είναι τα www/mozilla,
security/gpgme, και το
mail/sylpheed-claws. Όταν
υπάρχουν διαθέσιμες τέτοιες επιλογές, θα εμφανιστεί στην οθόνη
σας σχετικό μήνυμα.Παρακάμπτοντας τους Προεπιλεγμένους Καταλόγους των
PortsΜερικές φορές είναι χρήσιμο (ή επιτακτικό) να χρησιμοποιήσετε
ένα διαφορετικό κατάλογο εργασίας και εγκατάστασης. Οι μεταβλητές
WRKDIRPREFIX και PREFIX
μπορούν να παρακάμψουν τους προεπιλεγμένους καταλόγους. Για
παράδειγμα, η εντολή:&prompt.root; make WRKDIRPREFIX=/usr/home/example/ports installθα μεταγλωττίσει το port στο
/usr/home/example/ports και θα εγκαταστήσει
τα πάντα στο /usr/local, ενώ η εντολή:&prompt.root; make PREFIX=/usr/home/example/local installθα μεταγλωττίσει το port στο /usr/ports και
θα το εγκαταστήσει στο
/usr/home/example/local.Και φυσικά η εντολή:&prompt.root; make WRKDIRPREFIX=../ports PREFIX=../local installθα συνδυάσει και τα δυο (είναι πολύ μεγάλη για να την δείξουμε
εδώ, άλλα πρέπει να πήρατε την γενική ιδέα).Εναλλακτικά, αυτές οι μεταβλητές μπορούν να ρυθμιστούν ως μέρος
του περιβάλλοντος σας. Διαβάστε την σελίδα manual για το κέλυφος
σας, για να βρείτε τις σχετικές οδηγίες.Αντιμετωπίζοντας το imakeΜερικά ports που χρησιμοποιούν το imake
(μέρος του X Window System) δεν συνεργάζονται σωστά με το
PREFIX, και επιμένουν να εγκατασταθούν
στο /usr/X11R6. Όμοια, μερικά Perl
ports αγνοούν το PREFIX και εγκαθίστανται στο
δέντρο Perl. Το να κάνετε αυτά τα ports να σέβονται το
PREFIX είναι μία δύσκολη ή αδύνατη
δουλειά.Επαναρύθμιση Επιλογών PortsΌταν μεταγλωττίζετε κάποια ports, μπορεί να εμφανιστεί στην
οθόνη σας ένα μενού επιλογών (βασισμένο σε ncurses) το οποίο να σας
επιτρέπει να αλλάξετε διάφορες επιλογές μεταγλώττισης. Δεν είναι
σπάνιο κάποιοι χρήστες να θέλουν να επισκεφτούν ξανά αυτό το μενού,
για να προσθέσουν, να αφαιρέσουν ή να αλλάξουν κάποιες επιλογές,
μετά την μεταγλώττιση του port. Μια επιλογή είναι να μετακινηθείτε
στον κατάλογο του port και να γράψετε
make config, με το
οποίο θα εμφανιστεί ξανά το μενού με τις προηγούμενες ρυθμίσεις σας
ήδη επιλεγμένες. Μια άλλη δυνατότητα, είναι να χρησιμοποιήσετε την
εντολή make showconfig,
με την οποία θα δείτε όλες τις επιλεγμένες ρυθμίσεις του port.
Τέλος, μια ακόμα επιλογή είναι να εκτελέσετε την εντολή
make rmconfig η οποία
θα αφαιρέσει όλες τις αποθηκευμένες επιλογές και θα σας επιτρέψει να
ξεκινήσετε ξανά από την αρχή. Όλες αυτές οι επιλογές, και ακόμα
περισσότερες, εξηγούνται στη σελίδα manual του &man.ports.7;.Αφαιρώντας Εγκατεστημένα PortsportsremovingΤώρα που γνωρίσατε πως να εγκαθιστάτε ports, πιθανώς θα
αναρωτιέστε πως αφαιρούνται, στην περίπτωση που εγκαταστήσατε ένα
και αργότερα αποφασίσατε ότι εγκαταστήσατε το λάθος port.
Θα αφαιρέσουμε το προηγούμενο παράδειγμα (που ήταν το
lsof για όσους δεν το πρόσεξαν). Τα ports
αφαιρούνται όπως και τα πακέτα (το αναλύσαμε στην ενότητα Χρησιμοποιώντας το Σύστημα των
Πακέτων), χρησιμοποιώντας την
εντολή &man.pkg.delete.1;:&prompt.root; pkg_delete lsof-4.57Αναβαθμίζοντας τα PortsportsupgradingΑρχικά, δείτε τα παρωχημένα ports για τα οποία υπάρχουν
διαθέσιμες νεότερες εκδόσεις στην Συλλογή των Ports, με την εντολή
&man.pkg.version.1;:&prompt.root; pkg_version -v/usr/ports/UPDATINGΜόλις ανανεώσετε την Συλλογή των Ports, πρέπει να ελέγξετε το
αρχείο /usr/ports/UPDATING, πριν επιχειρήσετε
την αναβάθμιση ενός port. Αυτό το αρχείο περιγράφει διάφορα πιθανά
προβλήματα, καθώς και ενδεχόμενα πρόσθετα βήματα που πρέπει να
εκτελέσετε όταν ανανεώνετε ένα port. Παραδείγματα των παραπάνω,
είναι η αλλαγή μορφής κάποιων αρχείων, αλλαγή στην τοποθεσία
των αρχείων ρυθμίσεων, ή άλλες ασυμβατότητες
με παλαιότερες εκδόσεις.Αν το UPDATING αναιρεί κάτι που διαβάσατε
εδώ, θεωρήστε ότι ισχύει το UPDATING.Αναβαθμίζοντας Ports με το PortupgradeportupgradeΤο εργαλείο portupgrade είναι
σχεδιασμένο για να αναβαθμίζει εύκολα εγκατεστημένα ports.
Διατίθεται από το
ports-mgmt/portupgrade port.
Εγκαταστήστε το όπως κάθε port, χρησιμοποιώντας την εντολή
make install clean:&prompt.root; cd /usr/ports/ports-mgmt/portupgrade
&prompt.root; make install cleanΗ εντολή pkgdb -F θα διαβάσει και θα
διορθώσει όλες τις ασυνέπειες που ίσως υπάρχουν στη λίστα των
εγκατεστημένων ports. Είναι καλή ιδέα είναι να την εκτελείτε
συχνά, ενδεχομένως πριν από κάθε αναβάθμιση.Όταν εκτελείτε το portupgrade -a, το
portupgrade θα αρχίσει να αναβαθμίζει
όλα τα παρωχημένα ports που είναι εγκατεστημένα στο σύστημα σας.
Χρησιμοποιήστε την επιλογή αν θέλετε να σας
ρωτά για επιβεβαίωση για κάθε ξεχωριστή αναβάθμιση.&prompt.root; portupgrade -aiΑν θέλετε να αναβαθμίσετε μόνο μία συγκεκριμένη εφαρμογή, και
όχι όλα τα διαθέσιμα ports, χρησιμοποιήστε το
portupgrade pkgname.
Συμπεριλάβετε την επιλογή αν το
portupgrade πρέπει πρώτα να αναβαθμίσει
όλα τα ports που απαιτούνται για την συγκεκριμένη εφαρμογή.&prompt.root; portupgrade -R firefoxΓια να χρησιμοποιήσετε πακέτα αντί για ports στην εγκατάσταση,
δώστε την επιλογή . Με αυτή την επιλογή το
portupgrade αναζητά
τους τοπικούς καταλόγους που ορίζονται στο PKG_PATH,
ή ανακτά τα πακέτα από απομακρυσμένα sites εάν δεν βρεθούν τοπικά.
Αν τα πακέτα δεν μπορούν να ανακτηθούν με τους παραπάνω τρόπους, το
portupgrade θα χρησιμοποιήσει τα ports.
Για να αποφύγετε εντελώς την χρήση των ports, καθορίστε την επιλογή
.&prompt.root; portupgrade -PR gnome2Για να ανακτήσετε απλώς τα distfiles (ή τα πακέτα, αν έχετε
ορίσει την επιλογή ) χωρίς να μεταγλωττίσετε ή να
εγκαταστήσετε τίποτα, χρησιμοποιήστε το .
Για περισσότερες πληροφορίες, δείτε το &man.portupgrade.1;.Αναβαθμίζοντας Ports με το PortmanagerportmanagerΤο Portmanager είναι ένα ακόμα
εργαλείο για εύκολη αναβάθμιση εγκατεστημένων ports. Διατίθεται
από το ports-mgmt/portmanager
port:&prompt.root; cd /usr/ports/ports-mgmt/portmanager
&prompt.root; make install cleanΌλα τα εγκατεστημένα ports μπορούν να αναβαθμιστούν
χρησιμοποιώντας αυτή την απλή εντολή:&prompt.root; portmanager -uΜπορείτε να προσθέσετε την επιλογή για να
ερωτηθείτε να επιβεβαιώσετε κάθε βήμα που θα εκτελέσει το
Portmanager.
Το Portmanager μπορεί επίσης
να χρησιμοποιηθεί για να εγκαταστήσετε νέα ports στο σύστημα.
Σε αντίθεση με την εντολή
make install clean, το
Portmanager θα αναβαθμίσει όλες
τις εξαρτήσεις πριν την μεταγλώττιση και εγκατάσταση του
επιλεγμένου port.&prompt.root; portmanager x11/gnome2Αν υπάρχουν προβλήματα που σχετίζονται με τις εξαρτήσεις ενός
επιλεγμένου port, μπορείτε να χρησιμοποιήσετε το
Portmanager για να τις
επανα-μεταγλωττίσει όλες με την σωστή σειρά. Μόλις τελειώσει με
τις εξαρτήσεις, θα επανα-μεταγλωττίσει και το προβληματικό
port.&prompt.root; portmanager graphics/gimp -fΓια περισσότερες πληροφορίες δείτε τη σελίδα manual
&man.portmanager.1;.Αναβαθμίζοντας τα Ports μέσω του PortmasterportmasterΤο Portmaster είναι ένα ακόμα
εργαλείο για την αναβάθμιση των εγκατεστημένων ports. Το
Portmaster σχεδιάστηκε ώστε να
χρησιμοποιεί τα εργαλεία που παρέχει το βασικό
σύστημα (δεν εξαρτάται από άλλα ports) και χρησιμοποιεί τις
πληροφορίες του /var/db/pkg
για να καθορίσει ποια ports θα αναβαθμίσει. Είναι διαθέσιμο μέσω
του port
ports-mgmt/portmaster:&prompt.root; cd /usr/ports/ports-mgmt/portmaster
&prompt.root; make install cleanΤο Portmaster ομαδοποιεί τα ports
σε τέσσερις κατηγορίες:Root ports (δεν εξαρτώνται από άλλα, και ούτε άλλα
εξαρτώνται από αυτά)Trunk ports (δεν εξαρτώνται από άλλα, ωστόσο κάποια πακέτα
εξαρτώνται από αυτά)Branch ports (έχουν εξαρτήσεις και προς τις δύο
κατευθύνσεις)Leaf ports (εξαρτώνται από άλλα, αλλά όχι το
αντίθετο)Μπορείτε να δείτε μια λίστα όλων των εγκατεστημένων ports και
να ψάξετε για ενημερωμένες εκδόσεις, χρησιμοποιώντας την επιλογή
:&prompt.root; portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports
===>>> 137 total installed ports
===>>> 83 have new versions availableΜπορείτε να αναβαθμίσετε όλα τα εγκατεστημένα ports με την
παρακάτω απλή εντολή:&prompt.root; portmaster -aΑπό προεπιλογή, το Portmaster
θα δημιουργήσει αντίγραφο ασφαλείας του εγκατεστημένου πακέτου
πριν το διαγράψει. Αν η εγκατάσταση της νέας έκδοσης είναι
επιτυχής, το Portmaster θα σβήσει το
αντίγραφο αυτό. Αν χρησιμοποιήσετε την επιλογή
, το Portmaster δεν
θα σβήσει αυτόματα το αντίγραφο. Αν χρησιμοποιήσετε την επιλογή
, θα θέσετε το
Portmaster σε διαδραστική λειτουργία,
όπου θα σας ζητάει επιβεβαίωση πριν την αναβάθμιση κάθε
port.Αν αντιμετωπίσετε λάθη κατά τη διαδικασία της αναβάθμισης,
μπορείτε να χρησιμοποιήσετε την επιλογή για
να αναβαθμίσετε και να μεταγλωττίσετε ξανά όλα τα ports:&prompt.root; portmaster -afΜπορείτε επίσης να χρησιμοποιήσετε το
Portmaster για να εγκαταστήσετε νέα
ports στο σύστημα σας, αναβαθμίζοντας και όλες τις εξαρτήσεις τους
πριν τη μεταγλώττιση και εγκατάσταση τους:&prompt.root; portmaster shells/bashΠαρακαλούμε δείτε τη σελίδα manual του &man.portmaster.8; για
περισσότερες πληροφορίες.Ports και Αποθηκευτικός Χώροςportsdisk-spaceΗ Συλλογή των Ports καταναλώνει διαθέσιμο χώρο στο δίσκο με την
πάροδο του χρόνου. Μετά την μεταγλώττιση και εγκατάσταση λογισμικού
από τα ports, πρέπει πάντα να θυμάστε να καθαρίζετε τους προσωρινούς
καταλόγους work
χρησιμοποιώντας την εντολή
make clean. Mπορείτε να
καθαρίσετε όλη την Συλλογή των Ports με την ακόλουθη εντολή:&prompt.root; portsclean -CΜε την πάροδο του χρόνου, θα συσσωρευτούν πολλά αρχεία διανομής
πηγαίου κώδικα στον κατάλογο
distfiles.
Μπορείτε να τα αφαιρέσετε χειροκίνητα, ή μπορείτε να χρησιμοποιήσετε
την ακόλουθη εντολή για να διαγράψετε όλα τα distfiles που δεν
σχετίζονται πλέον με κανένα port:&prompt.root; portsclean -DΉ για να αφαιρέσετε όλα τα distfiles που δεν σχετίζονται με
κανένα port που βρίσκεται εγκατεστημένο στο σύστημα σας:&prompt.root; portsclean -DDΤο εργαλείο portsclean εγκαθίσταται ως μέρος
του portupgrade.Μην ξεχνάτε να αφαιρείτε τα εγκατεστημένα ports όταν δεν τα
χρειάζεστε πλέον. Ένα καλό εργαλείο για να αυτοματοποιηθεί αυτή η
εργασία, είναι το port
ports-mgmt/pkg_cutleaves.Ενέργειες μετά την ΕγκατάστασηΜετά την εγκατάσταση μιας νέας εφαρμογής, λογικά θα θέλετε
να διαβάσετε ότι τεκμηρίωση υπάρχει, να τροποποιήσετε τα
αρχεία ρυθμίσεων που χρειάζεται, να βεβαιωθείτε ότι η
εφαρμογή ξεκινάει κατά την εκκίνηση (αν είναι daemon), κ.λ.π.Τα ακριβή βήματα που θα χρειαστούν για να ρυθμίσετε κάθε
εφαρμογή, θα είναι προφανώς διαφορετικά. Όμως, αν μόλις
εγκαταστήσατε μια νέα εφαρμογή και αναρωτιέστε Τώρα τι;
οι παρακάτω συμβουλές μπορεί να σας βοηθήσουν:Χρησιμοποιήστε το &man.pkg.info.1; για να δείτε τι αρχεία
εγκαταστάθηκαν, και που. Για παράδειγμα, αν μόλις εγκαταστήσατε το
FooPackage version 1.0.0, τότε η εντολή:&prompt.root; pkg_info -L foopackage-1.0.0 | lessθα σας δείξει όλα τα αρχεία που εγκαταστάθηκαν από αυτό το
πακέτο. Προσέξτε τα αρχεία στον κατάλογο
man/, που θα είναι σελίδες manual, τους
κατάλογους etc/, όπου θα είναι τα αρχεία
ρυθμίσεων, και το doc/, όπου θα βρίσκεται πιο
περιεκτική τεκμηρίωση.Αν δεν είστε σίγουρος ποια έκδοση της εφαρμογής εγκαταστήσατε,
μια εντολή όπως αυτή:&prompt.root; pkg_info | grep -i foopackageθα βρει όλα τα εγκατεστημένα πακέτα που έχουν το
foopackage στο όνομα του πακέτου.
Αντικαταστήστε το foopackage στην
γραμμή εντολών με το πακέτο που αναζητάτε.Μόλις δείτε που βρίσκονται τα manual pages της εφαρμογής, δείτε
τα με την &man.man.1;. Όμοια, δείτε τα παραδείγματα των αρχείων
ρύθμισης, και όποια άλλη πρόσθετη τεκμηρίωση διατίθεται.Αν υπάρχει web site για την εφαρμογή, ελέγξτε το για πρόσθετη
τεκμηρίωση, συχνές ερωτήσεις (FAQ), και άλλα. Αν δεν είστε
σίγουρος για την διεύθυνσή του web site, ίσως το βρείτε στην έξοδο
της εντολής:&prompt.root; pkg_info foopackage-1.0.0Αν υπάρχει γραμμή WWW:, θα πρέπει να
έχει το URL για το web site της εφαρμογής.Ports που πρέπει να ξεκινούν κατά την εκκίνηση
(όπως διακομιστές Internet) συνήθως εγκαθιστούν ένα script στο
/usr/local/etc/rc.d. Πρέπει να ελέγξετε το
script για την ορθότητα του και να το τροποποιήσετε ή να το
μετονομάσετε αν χρειάζεται. Δείτε το Εκκινώντας
Υπηρεσίες για περισσότερες πληροφορίες.Αντιμετωπίζοντας Χαλασμένα PortsΑν έρθετε αντιμέτωπος με ένα port το οποίο δεν λειτουργεί,
υπάρχουν κάποια πράγματα που μπορείτε να κάνετε:Δείτε αν εκκρεμεί κάποια διόρθωση για το port στο
Problem Report
database. Εάν ναι, μπορείτε να χρησιμοποιήσετε τη
προτεινόμενη διόρθωση.Ζητήστε βοήθεια από τον συντηρητή του port. Πληκτρολογήστε
make maintainer ή
διαβάστε το Makefile για να βρείτε την
διεύθυνση email του συντηρητή. Στο μήνυμα σας, θυμηθείτε να
συμπεριλάβετε το όνομα και την έκδοση του port (στείλτε τη γραμμή
$&os;: από το
Makefile) καθώς και την έξοδο του
σφάλματος.Μερικά ports δεν συντηρούνται από κάποιο συγκεκριμένο άτομο,
αλλά από κάποια mailing
list. Πολλές, αν όχι όλες, από αυτές τις διευθύνσεις
έχουν την μορφή
freebsd-listname@FreeBSD.org.
Παρακαλούμε να το έχετε υπόψη σας κατά τη διατύπωση των
ερωτήσεων σας.Συγκεκριμένα, τα ports που φαίνονται ότι συντηρούνται από την
freebsd-ports@FreeBSD.org, δεν
συντηρούνται από κανέναν στην πραγματικότητα. Διορθώσεις και
υποστήριξη, αν υπάρχουν, έρχονται γενικά από την κοινότητα που
συμμετέχει στην συγκεκριμένη mailing list. Χρειαζόμαστε πάντοτε
περισσότερους εθελοντές!Αν δεν λάβετε απάντηση,
μπορείτε να χρησιμοποιήσετε το &man.send-pr.1; για να στείλετε
μια αναφορά σφάλματος (δείτε το Γράφοντας
Αναφορές Σφάλματος για το &os;).Διορθώστε το! Το Porter's
Handbook περιέχει λεπτομερείς πληροφορίες για την υποδομή
των Ports ώστε να μπορείτε να διορθώσετε το
περιστασιακό προβληματικό port ή ακόμα και να δημιουργήσετε ένα
δικό σας port!Ανακτήστε το πακέτο από ένα κοντινό σας FTP site. Η
κύρια συλλογή πακέτων βρίσκεται στο ftp.FreeBSD.org, στον κατάλογο
πακέτων. Πριν τη χρησιμοποιήσετε, ελέγξτε
πρώτα το τοπικό σας mirror.
Τα πακέτα είναι πιο σίγουρο ότι θα λειτουργήσουν,
από το να προσπαθείτε να μεταγλωττίσετε τον πηγαίο κώδικα, και
η διαδικασία τελειώνει πιο γρήγορα. Χρησιμοποιήστε το πρόγραμμα
&man.pkg.add.1; για να εγκαταστήσετε το πακέτο στο
σύστημα σας.