Η εφαρμογή ενημερώσεων ασφαλείας αποτελεί ένα σημαντικό τμήμα της συντήρησης λογισμικού, ειδικά όταν πρόκειται για το λειτουργικό σύστημα. Για μεγάλο διάστημα, η διαδικασία αυτή δεν ήταν εύκολη στο FreeBSD. Έπρεπε να εφαρμοστούν patches στον πηγαίο κώδικα, να γίνει μεταγλώττιση του από την αρχή, και να εγκατασταθούν ξανά τα νέα εκτελέσιμα.
Αυτό δεν είναι πλέον αναγκαίο, καθώς το FreeBSD διαθέτει τώρα ένα
βοηθητικό πρόγραμμα, το freebsd-update
. Το πρόγραμμα
παρέχει δύο διαφορετικές λειτουργίες. Η πρώτη είναι η δυνατότητα
δυαδικής (binary) ενημέρωσης του βασικού συστήματος με τις τελευταίες
διορθώσεις ασφάλειας και λαθών, χωρίς να χρειάζεται ξανά μεταγλώττιση
και εγκατάσταση. Η δεύτερη είναι η δυνατότητα αναβάθμισης του
συστήματος σε μια νέα μικρή ή μεγάλη επίσημη έκδοση (release).
Δυαδικές διορθώσεις λαθών και ασφάλειας, διατίθενται για όλες
τις αρχιτεκτονικές και εκδόσεις που υποστηρίζονται από την ομάδα
ασφάλειας. Πριν προχωρήσετε στην αναβάθμιση σε μια νέα έκδοση,
θα πρέπει να διαβάσετε τις σχετικές με αυτήν ανακοινώσεις, καθώς
μπορεί να περιέχουν σημαντικές πληροφορίες. Μπορείτε να δείτε τις
ανακοινώσεις εκδόσεων στην παρακάτω τοποθεσία:
http://www.FreeBSD.org/releases/
.
Αν υπάρχει κάποιο crontab
που χρησιμοποιεί τις
δυνατότητες του freebsd-update
, θα πρέπει να
απενεργοποιηθεί πριν ξεκινήσει η παρακάτω διαδικασία. Μπορείτε να
εγκαταστήσετε την τελευταία έκδοση του
freebsd-update
κατεβάζοντας το συμπιεσμένο πακέτο
από το παραπάνω URL και εκτελώντας τις παρακάτω
εντολές:
#
gunzip -c freebsd-update-upgrade.tgz | tar xvf -
#
mv freebsd-update.sh /usr/sbin/freebsd-update
#
mv freebsd-update.conf /etc
Δεν απαιτείται να κατεβάσετε την τελευταία έκδοση, αν χρησιμοποιείτε κάποια από τις τρέχουσες εκδόσεις του FreeBSD.
Κάποιοι χρήστες ίσως θέλουν να αλλάξουν το προεπιλεγμένο αρχείο
ρυθμίσεων /etc/freebsd-update.conf
, ώστε
να έχουν καλύτερο έλεγχο της διαδικασίας. Οι επιλογές είναι γενικά
αρκετά καλά τεκμηριωμένες, αλλά οι παρακάτω ίσως να χρειάζονται
κάποιες επιπλέον επεξηγήσεις:
# Components of the base system which should be kept updated. Components src world kernel
Αυτή η παράμετρος ελέγχει ποια τμήματα του FreeBSD θα διατηρούνται
ενημερωμένα. Η προεπιλογή είναι να ενημερώνεται ο πηγαίος κώδικας,
όλο το βασικό σύστημα, και ο πυρήνας. Τα τμήματα είναι τα ίδια
που διατίθενται και κατά την εγκατάσταση, για παράδειγμα αν βάλετε
την επιλογή 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 FreeBSD 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 τύπου diff(1)
παρόμοια με το mergemaster(8) αλλά με λιγότερες επιλογές. Οι
συγχωνεύσεις είτε γίνονται δεκτές, είτε προκαλούν το άνοιγμα κάποιου
συντάκτη κειμένου, διαφορετικά η εκτέλεση του
freebsd-update
ακυρώνεται. Αν δεν είστε
σίγουρος, κρατήστε αντίγραφο ασφαλείας του καταλόγου
/etc
και απλώς δεχθείτε τις
αλλαγές. Δείτε το Τμήμα 25.7.11.1, «mergemaster
» για
περισσότερες πληροφορίες σχετικά με την εντολή
mergemaster
.
# Directory in which to store downloaded updates and temporary # files used by FreeBSD Update. # WorkDir /var/db/freebsd-update
Στον κατάλογο αυτό φυλάσσονται όλα τα patches και τα προσωρινά αρχεία. Σε περιπτώσεις όπου ο χρήστης εκτελεί αναβάθμιση σε μια νεότερη έκδοση του FreeBSD, θα πρέπει να διαθέτει τουλάχιστον ένα 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 FreeBSD Update should figure out # which actually are installed and upgrade those (StrictComponents no)? # StrictComponents no
Αν θέσετε την παραπάνω επιλογή στο yes
,
το freebsd-update
θα υποθέσει ότι η λίστα
Components
είναι πλήρης και δεν θα επιχειρήσει
να προχωρήσει σε αλλαγές εκτός λίστας. Ουσιαστικά, το
freebsd-update
θα προσπαθήσει να ενημερώσει κάθε
αρχείο που ανήκει στη λίστα Components
.
Τα patches που σχετίζονται με την ασφάλεια, αποθηκεύονται σε ένα απομακρυσμένο μηχάνημα και μπορούν να μεταφορτωθούν και να εγκατασταθούν με την ακόλουθη εντολή:
#
freebsd-update fetch
#
freebsd-update install
Αν με την παραπάνω εντολή εγκατασταθούν ενημερώσεις στον πυρήνα,
θα χρειαστεί να επανεκκινήσετε το σύστημα. Αν όλα πάνε καλά, το
σύστημα θα είναι πλέον ενημερωμένο και μπορείτε να εκτελείτε το
freebsd-update
αυτόματα με την βοήθεια του
cron(8). Μια απλή καταχώριση στο αρχείο
/etc/crontab
είναι επαρκής για αυτό
το σκοπό:
@daily root freebsd-update cron
Η παραπάνω καταχώριση ορίζει ότι το
freebsd-update
θα εκτελείται μια φορά την ημέρα.
Με τον τρόπο αυτό, και όταν η εκτέλεση είναι μέσω της επιλογής
cron
, το freebsd-update
απλώς
θα ελέγχει για ενημερώσεις. Αν υπάρχουν, η εφαρμογή θα τις
κατεβάζει, αλλά δεν θα τις εγκαθιστά. Θα στέλνει όμως ένα email
στο χρήστη root
ώστε να τις εγκαταστήσει
χειροκίνητα.
Αν οτιδήποτε πάει στραβά, το freebsd-update
έχει την ικανότητα να επιστρέφει στην προηγούμενη σταθερή κατάσταση,
αναιρώντας το τελευταίο σετ αλλαγών με την ακόλουθη εντολή:
#
freebsd-update rollback
Με την ολοκλήρωση της εντολής, θα πρέπει να επανεκκινήσετε το σύστημα αν έχουν γίνει αλλαγές στον πυρήνα ή σε κάποιο από τα αρθρώματα του. Αυτό θα επιτρέψει στο FreeBSD να φορτώσει τα νέα εκτελέσιμα στη μνήμη.
Το βοηθητικό πρόγραμμα freebsd-update
μπορεί
να ενημερώσει αυτόματα μόνο τον πυρήνα GENERIC
.
Αν χρησιμοποιείται προσαρμοσμένος πυρήνας, θα πρέπει να
μεταγλωττιστεί ξανά, όταν το freebsd-update
τελειώσει με την εγκατάσταση των υπόλοιπων ενημερώσεων. Ωστόσο, το
freebsd-update
θα ανιχνεύσει και θα ενημερώσει
τον πυρήνα GENERIC
στο /boot/GENERIC
(αν υπάρχει), ακόμα
και αν δεν είναι ο ενεργός πυρήνας του συστήματος (αυτός που
εκτελείται τη συγκεκριμένη στιγμή).
Είναι γενικά καλή ιδέα να έχετε πάντα ένα αντίγραφο του
πυρήνα GENERIC
στον κατάλογο /boot/GENERIC
. Θα σας βοηθήσει στην
διάγνωση διάφορων προβλημάτων, καθώς και στην αναβάθμιση σε επόμενες
εκδόσεις του FreeBSD, μέσω του freebsd-update
.
Η διαδικασία αυτή περιγράφεται στο
Τμήμα 25.2.3, «Αναβαθμίσεις σε Μικρές και Μεγάλες Εκδόσεις».
Αν δεν έχουν γίνει αλλαγές στις προεπιλεγμένες ρυθμίσεις στο
αρχείο /etc/freebsd-update.conf
, το
freebsd-update
θα εγκαταστήσει τα ανανεωμένα αρχεία
πηγαίου κώδικα μαζί με τις υπόλοιπες ενημερώσεις. Μπορείτε έπειτα να
προχωρήσετε στη μεταγλώττιση και εγκατάσταση νέου προσαρμοσμένου
πυρήνα, με το συνήθη τρόπο.
Οι ενημερώσεις που διανέμονται μέσω του
freebsd-update
δεν περιλαμβάνουν πάντοτε αλλαγές
στον πυρήνα. Δεν είναι απαραίτητο να επαναμεταγλωττίσετε τον
προσαρμοσμένο πυρήνα σας, αν η εκτέλεση του
freebsd-update install
δεν επέφερε αλλαγές στα
αρχεία πηγαίου κώδικα του πυρήνα. Ωστόσο, το
freebsd-update
ενημερώνει πάντοτε το αρχείο
/usr/src/sys/conf/newvers.sh
. Το αρχείο αυτό
περιέχει το τρέχον επίπεδο ενημερώσεων (patch level) το οποίο και
αναφέρεται ως αριθμός -p
από εντολές όπως η
uname -r
. Μεταγλωττίζοντας ξανά τον
προσαρμοσμένο πυρήνα σας (ακόμα και αν δεν υπάρχουν άλλες αλλαγές)
θα δώσετε τη δυνατότητα στην uname(1) να αναφέρει με ακρίβεια
το επίπεδο ενημερώσεων. Αυτό μπορεί να είναι ιδιαίτερα χρήσιμο
όταν συντηρείτε πολλαπλά συστήματα, καθώς σας επιτρέπει να
αξιολογήσετε με μια ματιά τι ενημερώσεις έχουν εγκατασταθεί στο
καθένα.
Η διαδικασία αυτή θα απομακρύνει τα παλιά αρχεία αντικειμενικού κώδικα (object files) καθώς και τις παλιές βιβλιοθήκες, κάνοντας τις περισσότερες εφαρμογές τρίτων κατασκευαστών να μη λειτουργούν. Σας συνιστούμε είτε να απεγκαταστήσετε όλα τα εγκατεστημένα ports και να τα εγκαταστήσετε ξανά, ή να τα αναβαθμίσετε αργότερα, χρησιμοποιώντας το βοηθητικό πρόγραμμα ports-mgmt/portupgrade. Οι περισσότεροι χρήστες θα θέλουν να κάνουν μια δοκιμαστική μεταγλώττιση χρησιμοποιώντας την ακόλουθη εντολή:
#
portupgrade -af
Με αυτό τον τρόπο εξασφαλίζεται ότι τα πάντα θα επανεγκατασταθούν
σωστά. Σημειώστε ότι αν θέσετε την μεταβλητή περιβάλλοντος
BATCH
στην τιμή yes
, όλες οι
πιθανές ερωτήσεις που θα εμφανιστούν κατά τη διαδικασία, θα
απαντηθούν αυτόματα με yes
. Έτσι δεν υπάρχει πλέον
ανάγκη για παρέμβαση του χρήστη κατά τη διάρκεια της διαδικασίας
μεταγλώττισης.
Αν χρησιμοποιείται προσαρμοσμένος πυρήνας, η διαδικασία
αναβάθμισης είναι ελαφρά πιο πολύπλοκη. Θα χρειαστείτε ένα αντίγραφο
του πυρήνα GENERIC
στον κατάλογο /boot/GENERIC
. Αν δεν υπάρχει ήδη ο
πυρήνας GENERIC
στο σύστημα σας, μπορείτε να τον
ανακτήσετε χρησιμοποιώντας μια από τις παρακάτω μεθόδους:
Αν έχετε μεταγλωττίσει προσαρμοσμένο πυρήνα μόνο μια φορά, ο
πυρήνας στον κατάλογο /boot/kernel.old
είναι στην
πραγματικότητα ο GENERIC
. Απλώς μετονομάστε
τον κατάλογο σε /boot/GENERIC
.
Αν έχετε φυσική πρόσβαση στο μηχάνημα, μπορείτε να
εγκαταστήσετε ένα αντίγραφο του πυρήνα GENERIC
από το CD-ROM της εγκατάστασης. Τοποθετήστε το CD-ROM στον οδηγό
και χρησιμοποιήστε τις παρακάτω εντολές:
#
mount /cdrom
#
cd /cdrom/X.Y-RELEASE/kernels
#
./install.sh GENERIC
Αντικαταστήστε το X.Y-RELEASE
με τους πραγματικούς αριθμούς της έκδοσης που χρησιμοποιείτε.
Ο πυρήνας GENERIC
θα εγκατασταθεί από
προεπιλογή στον κατάλογο /boot/GENERIC
.
Αν δεν έχετε κάποια από τις παραπάνω επιλογές, μπορείτε να
μεταγλωττίσετε και να εγκαταστήσετε τον πυρήνα
GENERIC
μέσω του πηγαίου κώδικα:
#
cd /usr/src/
#
env DESTDIR=/boot/GENERIC make kernel
#
mv /boot/GENERIC/boot/kernel/* /boot/GENERIC
#
rm -rf /boot/GENERIC/boot
Για να αναγνωριστεί αυτός ο πυρήνας ως
GENERIC
από το
freebsd-update
, δεν θα πρέπει να έχουν γίνει
αλλαγές στο αρχείο ρυθμίσεων του GENERIC
.
Συνίσταται επίσης η μεταγλώττιση να γίνει χωρίς άλλες
εξειδικευμένες ρυθμίσεις (κατά προτίμηση με κενό το
/etc/make.conf
).
Δεν χρειάζεται τη δεδομένη στιγμή να επανεκκινήσετε με τον πυρήνα
GENERIC
.
Είναι δυνατές οι αναβαθμίσεις τόσο σε μικρές όσο και σε μεγάλες
εκδόσεις, δίνοντας στην εντολή freebsd-update
τον
επιθυμητό αριθμό έκδοσης. Για παράδειγμα, η ακόλουθη εντολή θα
αναβαθμίσει το σύστημα σε FreeBSD 8.1:
#
freebsd-update -r 8.1-RELEASE upgrade
Μετά τη λήψη της εντολής, το
freebsd-update
θα αξιολογήσει την κατάσταση του
συστήματος και του αρχείου ρυθμίσεων του, σε μια απόπειρα να μαζέψει
τις απαραίτητες πληροφορίες για την αναβάθμιση του συστήματος.
Οι πληροφορίες που ανιχνεύθηκαν θα εμφανιστούν στην οθόνη με τη μορφή
μιας λίστας εγκατεστημένων προγραμμάτων. Για παράδειγμα:
Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.0-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 8.0-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 και ολοκληρωθεί με επιτυχία η διαδικασία της συγχώνευσης όλων των αρχείων ρύθμισης, ο χρήστης θα πρέπει να επιβεβαιώσει την τελική εγκατάσταση.
Με το τέλος αυτής τη διαδικασίας, η αναβάθμιση μπορεί να οριστικοποιηθεί στο δίσκο, με τη χρήση της ακόλουθης εντολής:
#
freebsd-update install
Στην πρώτη φάση, θα αλλαχθεί ο πυρήνας και τα σχετικά αρθρώματα.
Στο σημείο αυτό, θα πρέπει να γίνει επανεκκίνηση του μηχανήματος.
Σε μηχάνημα με προσαρμοσμένο πυρήνα, χρησιμοποιήστε την εντολή
nextboot(8) ώστε να θέσετε τον πυρήνα για την επόμενη εκκίνηση
στον /boot/GENERIC
(ο οποίος
έχει ήδη αναβαθμιστεί):
#
nextboot -k GENERIC
Πριν επανεκκινήσετε με τον πυρήνα GENERIC
,
βεβαιωθείτε ότι περιέχει όλα τα προγράμματα οδήγησης που απαιτούνται
για την επιτυχή εκκίνηση του συστήματος σας (και τη λειτουργία του
δικτύου, αν αναβαθμίζετε κάποιο απομακρυσμένο μηχάνημα).
Ειδικότερα, αν ο προηγούμενος προσαρμοσμένος πυρήνας περιείχε
λειτουργίες που συνήθως παρέχονται από αρθρώματα (modules),
βεβαιωθείτε ότι φροντίσατε να φορτωθούν προσωρινά στον πυρήνα
GENERIC
χρησιμοποιώντας τις δυνατότητες του
αρχείου /boot/loader.conf
. Ίσως επίσης να
θέλετε να απενεργοποιήσετε υπηρεσίες, προσαρτήσεις δίσκων και
δικτύου κ.λ.π. που δεν είναι απαραίτητες, μέχρι την ολοκλήρωση της
διαδικασίας αναβάθμισης.
Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να επανεκκινήσετε το μηχάνημα με τον νέο πυρήνα:
#
shutdown -r now
Μόλις το σύστημα επανέλθει σε λειτουργία, θα πρέπει να εκτελέσετε
ξανά το freebsd-update
. Η προηγούμενη λειτουργία
έχει αποθηκευθεί, και έτσι το freebsd-update
δεν θα
ξεκινήσει από την αρχή, αλλά θα απομακρύνει όλες τις παλιές
κοινόχρηστες βιβλιοθήκες και τα αρχεία αντικειμενικού κώδικα. Για να
συνεχίσετε σε αυτό το στάδιο, δώστε την ακόλουθη εντολή:
#
freebsd-update install
Ανάλογα με το αν υπήρξαν αλλαγές στους αριθμούς εκδόσεων των βιβλιοθηκών, ίσως να υπάρχουν μόνο δύο φάσεις εγκατάστασης αντί για τρεις.
Όλο το λογισμικό τρίτου κατασκευαστή θα πρέπει τώρα να μεταγλωττιστεί και να επανεγκατασταθεί από την αρχή. Αυτό απαιτείται καθώς το εγκατεστημένο λογισμικό ίσως εξαρτάται από βιβλιοθήκες οι οποίες αφαιρέθηκαν κατά τη διαδικασία της αναβάθμισης. Μπορείτε να χρησιμοποιήσετε την εντολή ports-mgmt/portupgrade για να αυτοματοποιήσετε αυτή τη διαδικασία. Για να ξεκινήσετε, δώστε τις παρακάτω εντολές:
#
portupgrade -f ruby
#
rm /var/db/pkg/pkgdb.db
#
portupgrade -f ruby18-bdb
#
rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
#
portupgrade -af
Μόλις ολοκληρωθεί το παραπάνω, ολοκληρώστε τη διαδικασία
αναβάθμισης με μια τελευταία κλήση της εντολής
freebsd-update
. Δώστε την παρακάτω εντολή για να
ολοκληρώσετε οτιδήποτε έχει απομείνει στη διαδικασία
αναβάθμισης:
#
freebsd-update install
Αν χρησιμοποιούσατε προσωρινά τον πυρήνα
GENERIC
, αυτή είναι η κατάλληλη στιγμή για να
μεταγλωττίσετε και να εγκαταστήσετε νέο προσαρμοσμένο πυρήνα, με το
συνήθη τρόπο.
Επανεκκινήστε το μηχάνημα σας στην νέα έκδοση του FreeBSD. Η διαδικασία έχει ολοκληρωθεί.
Το βοηθητικό πρόγραμμα freebsd-update
μπορεί να
χρησιμοποιηθεί για να ελέγξετε την κατάσταση της εγκατεστημένης
έκδοσης του FreeBSD σε σχέση με μια γνωστή και σωστή εγκατάσταση.
Η επιλογή αυτή συγκρίνει και αξιολογεί την τρέχουσα έκδοση των
προγραμμάτων συστήματος, των βιβλιοθηκών και των αρχείων ρύθμισης.
Για να ξεκινήσετε τη σύγκριση, δώστε την ακόλουθη εντολή:
#
freebsd-update IDS >> outfile.ids
Αν και το όνομα της εντολής είναι IDS, δεν
θα πρέπει σε καμιά περίπτωση να θεωρηθεί υποκατάστατο ενός
συστήματος ανίχνευσης εισβολέα (intrusion detection system) όπως
είναι για παράδειγμα το
security/snort.
Καθώς το freebsd-update
αποθηκεύει τα δεδομένα
του στο δίσκο, υπάρχει πάντα η πιθανότητα να έχει γίνει αλλοίωση
τους. Αν και η πιθανότητα αυτή μπορεί να μειωθεί χρησιμοποιώντας
τη ρύθμιση kern.securelevel
και αποθηκεύοντας
τα δεδομένα της εντολής freebsd-update
σε ένα
σύστημα αρχείων μόνο για ανάγνωση, μια ακόμα καλύτερη λύση θα ήταν
να συγκρίνετε το σύστημα με κάποιο δίσκο που θεωρείτε σίγουρα
ασφαλή. Μπορείτε να χρησιμοποιήσετε ένα δίσκο
DVD ή ένα εξωτερικό δίσκο USB
που φυλάσσετε σε ασφαλή τοποθεσία.
Θα γίνει τώρα μια επιθεώρηση του συστήματος και θα εκτυπωθεί
μια λίστα από αρχεία και τιμές hash του τύπου sha256(1),
τόσο για το εγκατεστημένο όσο και για το γνωστό σύστημα. Επειδή
πρόκειται για μεγάλη λίστα, την ανακατευθύνουμε στο αρχείο
outfile.ids
. Στην οθόνη το κείμενο θα κυλούσε
πολύ γρήγορα, και σύντομα θα γέμιζε την προσωρινή μνήμη απεικόνισης
της κονσόλας.
Οι γραμμές αυτές έχουν γενικά μεγάλο μήκος, αλλά είναι εύκολο να επεξεργαστούμε την έξοδο. Για παράδειγμα, για να δείτε μια λίστα όλων των αρχείων που διαφέρουν από αυτά της επίσημης έκδοσης, δώστε την ακόλουθη εντολή:
#
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
.
Εκτός από την χρήση που αναφέραμε προηγουμένως, το σύστημα αυτό μπορεί να χρησιμοποιηθεί και ως τμήμα μιας λεπτομερούς διαδικασίας αναβάθμισης.
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την
τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην
<doc@FreeBSD.org>.