Αν έχετε πολλαπλά μηχανήματα στα οποία πρόκειται να χρησιμοποιήσετε το ίδιο δέντρο πηγαίου κώδικα, είναι σπατάλη πόρων (δίσκου, δικτύου και επεξεργαστή) να επαναλαμβάνετε σε όλα τη διαδικασία ανάκτησης και μεταγλώττισης. Η λύση είναι να ορίσετε ένα μηχάνημα να εκτελεί το μεγαλύτερο μέρος της εργασίας, ενώ τα υπόλοιπα θα μπορούν να την ανακτούν μέσω 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
αν πρόκειται να μεταγλωττίζει τους πυρήνες τους.
Έχοντας πραγματοποιήσει όλα τα παραπάνω, είστε έτοιμος να
μεταγλωττίσετε τα πάντα. Μεταγλωττίστε τον πυρήνα και το βασικό
σύστημα όπως περιγράψαμε στο Τμήμα 25.7.7.2, «Μεταγλωττίστε το Βασικό Σύστημα»
χρησιμοποιώντας το μηχάνημα μεταγλώττισης, αλλά μην εγκαταστήσετε
τίποτα. Μετά το τέλος της μεταγλώττισης, χρησιμοποιήστε το μηχάνημα
δοκιμών και εγκαταστήστε τον πυρήνα που μόλις δημιουργήσατε. Αν το
μηχάνημα αυτό προσαρτά το /usr/src
και το
/usr/obj
μέσω NFS, όταν το επανεκκινήσετε σε
κατάσταση ενός χρήστη, θα χρειαστεί να ενεργοποιήσετε το δίκτυο και
να τα προσαρτήσετε. Ο ευκολότερος τρόπος για αυτό, είναι να
εκκινήσετε σε κατάσταση πολλαπλών χρηστών και έπειτα να εκτελέσετε
shutdown now
για να μεταβείτε σε κατάσταση ενός
χρήστη. Μόλις γίνει αυτό, μπορείτε να εγκαταστήσετε τον νέο πυρήνα
και το βασικό σύστημα, και να εκτελέσετε το
mergemaster
όπως θα κάνατε συνήθως. Όταν
τελειώσετε, επανεκκινήστε αυτό το μηχάνημα στην κανονική λειτουργία
πολλαπλών χρηστών.
Όταν βεβαιωθείτε ότι όλα λειτουργούν σωστά στο μηχάνημα δοκιμών, χρησιμοποιήστε την ίδια διαδικασία για να εγκαταστήσετε το νέο λογισμικό σε κάθε ένα από τα υπόλοιπα μηχανήματα του σετ μεταγλώττισης.
Μπορείτε να χρησιμοποιήσετε τις ίδιες ιδέες και για το δέντρο
των ports. Το πρώτο κρίσιμο βήμα είναι να προσαρτήσετε το
/usr/ports
από το ίδιο μηχάνημα, σε όλα τα
μηχανήματα του σετ μεταγλώττισης. Μπορείτε έπειτα να ρυθμίσετε το
/etc/make.conf
ώστε να διαμοιράζονται τα
distfiles. Θα πρέπει να θέσετε το DISTDIR
σε ένα
κοινόχρηστο κατάλογο, στον οποίο θα δώσετε δικαιώματα εγγραφής σε
οποιοδήποτε χρήστη έχετε δηλώσει ως root
στο
NFS. Σε κάθε μηχάνημα θα πρέπει επίσης να οριστεί η μεταβλητή
WRKDIRPREFIX
ώστε να δείχνει σε ένα τοπικό
κατάλογο. Τέλος, αν σκοπεύετε να μεταγλωττίζετε και να διανέμετε
έτοιμα πακέτα, θα πρέπει να θέσετε την μεταβλητή
PACKAGES
σε ένα κατάλογο, όπως κάνατε και με την
DISTDIR
.
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την
τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην
<doc@FreeBSD.org>.