Sunday, October 23, 2011

Αναβάθμιση σε FreeBSD 9.0-RC1

Σήμερα το πρωί, το 9.0-RC1 έγινε διαθέσιμο μέσω του freebsd-update. Υπάρχουν όμως συγκεκριμένες οδηγίες, καθώς το ίδιο το πρόγραμμα freebsd-update χρειάζεται αλλαγές για να λειτουργήσει με το νέο packaging του FreeBSD 9.0. Μπορείτε να διαβάσετε την πλήρη ανακοίνωση εδώ. Ξεκίνησα λοιπόν την αναβάθμιση του pegasus, ενός από τα βασικά μου desktop μηχανήματα με (ευτυχώς) επαρκή επεξεργαστική ισχύ.

Προετοιμασία


Ο pegasus χρησιμοποιούσε 8.2-RELEASE-p4 64bit. Πριν την εκκίνηση του upgrade αποφάσισα να σβήσω όλα τα πακέτα - μετά από μια αναβάθμιση σε major έκδοση συνήθως απαιτείται να γίνουν rebuild τα πάντα (το γνωστό portupgrade -af το οποίο αλλάζει το κλίμα του πλανήτη). Αντί για αυτό - και καθώς τα πακέτα ήταν ήδη παλιά - αποφάσισα να τα σβήσω όλα και να βάλω νέα μετά την αναβάθμιση.

Το σβήσιμο των πακέτων μπορεί να γίνει με pkg_delete -a αλλά αυτό αργεί. Τη στιγμή που θέλουμε να τα σβήσουμε όλα, είναι προτιμότερο να διαγράψουμε όλο το /usr/local (αφού κρατήσουμε backup το /usr/local/etc) και να διαγράψουμε επίσης τα περιεχόμενα του /var/db/pkg. Όλα (σχεδόν) τα ports εγκαθιστούνται στο /usr/local και τους υποκαταλόγους του, οπότε αυτή είναι μια γρήγορη μέθοδος να τα... ξεφορτωθούμε. Μια εξαίρεση είναι το linux_base το οποίο αν το έχετε εγκατεστημένο, καλό θα είναι να το βγάλετε με τον παραδοσιακό τρόπο (pkg_delete) πριν συνεχίσετε.

Αν χρησιμοποιείται σαν default shell το bash, μη ξεχάσετε να το αλλάξετε σε ένα από τα shell που ανήκουν στο βασικό σύστημα (π.χ. csh):

chsh -s csh
Password:


Κάντε logout - login για να ενεργοποιηθεί. Έπειτα σβήστε τα πάντα αφού κρατήσετε backup το /usr/local/etc. Εννοείται φυσικά ότι θα κλείσετε το γραφικό περιβάλλον και τα προγράμματα που χρησιμοποιείτε πριν αρχίσετε το σβήσιμο!

# cd /usr/
# mv local/etc .
# rm -rf local
# mkdir local
# mv etc local
# cd /var/db
# rm -rf pkg
# mkdir pkg


Αυτό ήταν! Εκτελώντας pkg_info θα διαπιστώσετε ότι δεν έχετε κανένα εγκατεστημένο πακέτο. Μπορείτε τώρα να συνεχίσετε με το upgrade.

Το upgrade


Κάνουμε πρώτα την ενημέρωση του freebsd-update όπως αναγράφεται στο announcement:

# sed -i '' -e 's/=_/=%@_/' /usr/sbin/freebsd-update

και έπειτα εκτελούμε:

# freebsd-update -r 9.0-RC1 upgrade

Διαβάζουμε τα μηνύματα, εκτελούμε το merge των αρχείων όπου ζητείται και εκτελούμε:

# freebsd-update install

Κάνουμε επανεκκίνηση με το νέο πυρήνα (αν χρησιμοποιούσατε custom πυρήνα, βεβαιωθείτε ότι έχετε βάλει κατάλληλα αρθρώματα στο /boot/loader.conf για να λειτουργήσετε με το GENERIC), και εκτελούμε ξανά:

# freebsd-update install

Με αυτό το δεύτερο install γίνεται η εγκατάσταση του userland. Αν σας ζητήσει να κάνετε rebuild όλα τα ports και να το ξανατρέξετε, μπορείτε να το κάνετε απευθείας. Μη ξεχνάτε, δεν έχετε ports εγκατεστημένα!

# freebsd-update install

Εγκατάσταση του Source


Λόγω της αλλαγής packaging στο FreeBSD 9.0, το freebsd-update δεν αναβαθμίζει τον πηγαίο κώδικα στο /usr/src αν τον έχετε εγκατεστημένο (και φυσικά τον έχετε, γιατί δεν νοείται FreeBSD χωρίς source). Αντίθετα, τον σβήνει! Ελέγξτε αν έχει μείνει κάτι μέσα στο /usr/src που χρειάζεστε ή έχετε αλλάξει (κάποιο ξεχασμένο kernel configuration file ίσως; Είναι κακή ιδέα να τα αποθηκεύετε εκεί). Διαγράψτε τυχόν υπολείμματα και πάμε να εγκαταστήσουμε το νέο source:

# cd /usr
# rm -rf src
# mkdir src
# cd src
# fetch ftp://ftp.otenet.gr/pub/FreeBSD/releases/amd64/amd64/9.0-RC1/src.txz
# cd /
# tar xvpzf /usr/src/src.txz
# rm /usr/src/src.txz


Αυτό ήταν. Μπορείτε τώρα να δημιουργήσετε ξανά προσαρμοσμένο πυρήνα και να αρχίσετε να εγκαθιστάτε ξανά τις εφαρμογές σας. Καλό απόγευμα (και ξενύχτι) :)

No comments: