Tuesday, October 21, 2008

Η χαρά του make release :)

"Ανακάλυψα" σήμερα το make release. Τα εισαγωγικά σημαίνουν ότι ήξερα την ύπαρξη του:

Οργάνωση Εκδόσεων του FreeBSD

αλλά δεν το είχα δοκιμάσει ποτέ.

Με απλά λόγια, το make release θα σας επιτρέψει να φτιάξετε το δικό σας FreeBSD release, από τα sources που έχετε ήδη στο δίσκο σας (ή που πρόκειται να κατεβάσετε). Θα σας φτιάξει μάλιστα και ένα ωραίο iso, έτοιμο για να το γράψετε σε CD και να το εγκαταστήσετε όπου θέλετε.

Δεν είναι καθόλου περίεργο που το documentation του FreeBSD περιέχει και man page σχετικό με το release:

$ man release

θα σας δώσει περισσότερες πληροφορίες από αυτές που πραγματικά θέλετε να ξέρετε σχετικά με την διαδικασία. Γενικά όμως, αυτό που μας ενδιαφέρει είναι μια εντολή:

# make release

Ωστόσο, πρέπει να διαβάσετε τι χρειάζεται από πριν:


  • Πρέπει να έχετε κάνει make buildworld στο σύστημα σας. Αυτό φυσικά προυποθέτει ότι έχετε όλα τα system sources. Αλλά σαν σωστός BSDer, πάντα τα έχετε, έτσι δεν είναι;

  • Χρειάζεστε αντίγραφο του CVS repository του FreeBSD. Προσοχή: δεν εννοούμε checkout μιας συγκεκριμένης έκδοσης / tag. Μιλάμε για πλήρες αντίγραφο του CVS (ναι αυτό με τα ",v" αρχεία) το οποίο φυσικά είναι τεράστιο. Αλλά παρακάτω θα σας πω πως να το αποφύγετε, αν το μόνο που θέλετε είναι να κάνετε release τα sources που έχετε ήδη εγκατεστημένα.

  • Ένα ευχάριστο βροχερό απόγευμα για να βλέπετε τον compiler να γεμίζει γραμμές το terminal...



Το σύστημα μου αυτή τη στιγμή έχει 7.1-PRERELEASE. Μετά από μια γρήγορη ματιά στο παράδειγμα του man page κατέληξα σε αυτό:

# cd /usr/src
# make buildworld
# cd release
# make release CHROOTDIR=/data/release \
BUILDNAME=7.1-PRERELEASE \
CVSROOT=/data/ncvs \
EXTSRCDIR=/usr/src \
-DNODOC -DNOPORTS \
-DNO_FLOPPIES \
-DMAKE_ISOS


To CVSROOT που βλέπετε είναι ψεύτικο! Στην πραγματικότητα τα sources για το build θα αντιγραφούν απευθείας από το EXTSRCDIR. Αν όμως δεν βάλετε το CVSROOT η make release αρχνείται να ξεκινήσει. Το make buildworld δεν είναι απαραίτητο αν έχετε ήδη κάνει τα sources buid στο παρελθόν. Στην πραγματικότητα το make release θα κάνει make installworld από το σύστημα σας σε ένα περιβάλλον chroot, και μέσα σε αυτό θα κάνει build τα sources που δώσατε (είτε μέσω του EXTSRCDIR, είτε μέσω του CVS). Όλα αυτά αναλύονται πολύ καλά στο man page του release. Έχετε τη δυνατότητα να περιλάβετε doc και ports στο δικό σας release, κάτι που απέφυγα αφού θέλω μόνο το βασικό σύστημα.

Αν επιλέξετε τη μέθοδο του CVS θα μπορείτε να κάνετε build όποια έκδοση του FreeBSD θέλετε - και φυσικά το CURRENT. Το μόνο κακό είναι ότι με τόσα χρόνια ιστορίας που έχει το CVS repository του FreeBSD και με την ταχύτητα της γραμμής μου, μέχρι να τελειώσει η cvsup, μάλλον θα έχει βγει και το 8.0-RELEASE...

2 comments:

Giorgos Keramidas said...

Δεν είναι καθόλου περίεργο που το documentation του FreeBSD περιέχει και man page σχετικό με το release

Χαχα, ακριβώς!

up-to-date manpages rule :-)

Το "make release" χρειάζεται και κάποιο pre-built package collection, βέβαια, αλλιώς μπορεί να κάνει μερικούς αιώνες να τελειώσει. Αλλά το γεγονός ότι μπορείς να το ξεκινήσεις με μία εντολή και να φτιάξεις, ας πούμε, custom installation DVDs (με τον κώδικα που έκανε commit στο 8.0-CURRENT ο Ken Smith) είναι πολύ ωραίο feature.

Μανώλης Κιαγιάς said...

Ναι, και με τα διάφορα NOPORTS, NODOCS κλπ. που έβαλα, έφτιαξα ένα ωραίο 7.1-PRERELEASE με το οποίο εγκατέστησα και το καινούριο μου Aspire One το οποίο φαίνεται αρκετά BSD-friendly :)
Μόλις βρω λίγο χρόνο θα γράψω για αυτό...