Ανακαλύψτε τα χαρακτηριστικά γνωρίσματα που διαθέτει το Portage, όπως υποστήριξη για κατανεμημένη μεταγλώττιση, ccache και άλλα. 1.33 2010-07-12
Χαρακτηριστικά Γνωρίσματα του Portage

Το Portage διαθέτει ορισμένα χαρακτηριστικά γνωρίσματα που κάνουν την εμπειρία με το Gentoo ακόμη καλύτερη. Πολλά από τα χαρακτηριστικά αυτά βασίζονται σε ορισμένα εργαλεία λογισμικού που βελτιώνουν την απόδοση, αξιοπιστία, ασφάλεια, ...

Για να ενεργοποιήσετε ή απενεργοποιήσετε ορισμένα χαρακτηριστικά του Portage πρέπει να επεξεργαστείτε από το αρχείο /etc/make.conf τη μεταβλητή FEATURES που περιέχει τις διάφορες λέξεις κλειδιά των χαρακτηριστικών αυτών, χωρισμένες με τον κενό χαρακτήρα. Σε ορισμένες περιπτώσεις, θα χρειαστεί επίσης να εγκαταστήσετε κάποιο πρόσθετο εργαλείο στο οποίο βασίζεται ένα χαρακτηριστικό.

Παρακάτω, δεν παρουσιάζονται όλα τα χαρακτηριστικά που υποστηρίζει το Portage. Για μια πλήρη επισκόπηση, συμβουλευτείτε τη σελίδα man του αρχείου make.conf:

$ man make.conf

Για να δείτε ποια FEATURES (χαρακτηριστικά) είναι ενεργοποιημένα εξ' ορισμού, εκτελέστε emerge --info και αναζητήστε για τη μεταβλητή FEATURES ή χρησιμοποιήστε το grep:

$ emerge --info | grep FEATURES
Κατανεμημένη Μεταγλώττιση Χρήση του distcc

Το distcc είναι μια εφαρμογή για την κατανομή των διαδικασιών μεταγλωττίσεων σε διάφορα, όχι παρόμοια απαραίτητα, μηχανήματα σε ένα δίκτυο. Ο πελάτης distcc στέλνει όλες τις απαραίτητες πληροφορίες στους διαθέσιμους διακομιστές distcc (που εκτελούν το distccd), ώστε να είναι σε θέση να μεταγλωττίσουν τμήματα του κώδικα για τον πελάτη. Το τελικό αποτέλεσμα είναι μικρότερος χρόνος μεταγλώττισης.

Μπορείτε να δείτε περισσότερες πληροφορίες σχετικά με το distcc (και πως να το κάνετε να δουλέψει με το Gentoo) στην τεκμηρίωση Gentoo Distcc Documentation.

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

Το distcc περιλαμβάνει ένα γραφικό εργαλείο επισκόπησης για να παρακολουθείτε τις διεργασίες που στέλνει ο υπολογιστής σας για μεταγλώττιση. Αν χρησιμοποιείτε το Gnome, συμπεριλάβετε το 'gnome' στη μεταβλητή USE. Αν δεν χρησιμοποιείτε όμως το Gnome και ακόμη επιθυμείτε να χρησιμοποιείτε το εργαλείο, συμπεριλάβετε το 'gtk' στη μεταβλητή USE.

# emerge distcc
Ενεργοποίηση της Υποστήριξης του Portage

Προσθέστε το distcc στη μεταβλητή FEATURES στο αρχείο /etc/make.conf. Στη συνέχεια, αλλάξτε τη μεταβλητή MAKEOPTS όπως επιθυμείτε. Ένα γενικό πλαίσιο είναι να θέτετε την τιμή "-jX" με X τον αριθμό των επεξεργαστών (CPUs) που εκτελούν το distccd (συμπεριλαμβανομένου του τοπικού υπολογιστή) συν ένα, ωστόσο, μπορεί να έχετε καλύτερα αποτελέσματα με άλλα νούμερα.

Εκτελέστε στη συνέχεια distcc-config και εισάγετε τη λίστα με τους διαθέσιμους διακομιστές distcc. Για παράδειγμα, υποθέτουμε ότι οι διαθέσιμοι διακομιστές DistCC είναι οι 192.168.1.102 (ο τοπικός υπολογιστής), 192.168.1.103 και 192.168.1.104 (δύο "απομακρυσμένοι" σταθμοί):

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Ακόμη, μην παραλείψετε να εκκινήσετε το δαίμονα (daemon) distccd:

# rc-update add distccd default
# /etc/init.d/distccd start
Χρήση Προσωρινής Μνήμης για τη Μεταγλώττιση Σχετικά με το ccache

Το ccache είναι μια γρήγορη λανθάνουσα μνήμη για το μεταγλωττιστή. Όταν μεταγλωττίζετε μια εφαρμογή, αποθηκεύει σε προσωρινή μνήμη τα ενδιάμεσα αποτελέσματα, ώστε την επόμενη φορά που θα επαναμεταγλωττιστεί η ίδια εφαρμογή, ο χρόνος μεταγλώττισης να μειωθεί δραματικά. Μεταγενέστερες επαναμεταγλωττίσεις θα πρέπει να είναι γρηγορότερες. Η ccache είναι χρήσιμη μόνο αν επαναμεταγλωττίζετε την ίδια εφαρμογή πολλές φορές· οπότε είναι κυρίως χρήσιμη σε προγραμματιστές εφαρμογών.

Αν σας ενδιαφέρουν τα συν και πλην του ccache, επισκεφθείτε την ιστοσελίδα του ccache.

Το ccache είναι γνωστό ότι προκαλεί αρκετές αποτυχίες μεταγλώττισης. Ορισμένες φορές το ccache θα διατηρεί παλιά αντικείμενο κώδικα ή κατεστραμμένα αρχεία, τα οποία μπορεί να οδηγήσουν σε πακέτα που δεν μπορούν να εγκατασταθούν. Αν αυτό συμβεί (αν λαμβάνετε σφάλματα όπως "File not recognized: File truncated"), προσπαθήστε να επαναμεταγλωττίσετε την εφαρμογή με το ccache απενεργοποιημένο (FEATURES="-ccache" στο /etc/make.conf) πριν το αναφέρετε ως bug. Αν δεν κάνετε δουλειά ανάπτυξης κώδικα, μην ενεργοποιήσετε το ccache.
Εγκατάσταση του ccache

Για να εγκαταστήσετε το ccache, εκτελέστε emerge ccache:

# emerge ccache
Ενεργοποίηση της Υποστήριξης του Portage

Ανοίξτε με ένα επεξεργαστή κειμένου το αρχείο /etc/make.conf και προσθέστε το ccache στη μεταβλητή FEATURES. Στη συνέχεια, προσθέστε μία νέα μεταβλητή με όνομα CCACHE_SIZE και θέστε τιμή το "2G":

CCACHE_SIZE="2G"

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

# CCACHE_DIR="/var/tmp/ccache" ccache -s

Ο κατάλογος /var/tmp/ccache είναι ο εξ' ορισμού κατάλογος του Portage για το ccache. Αν θέλετε να αλλάξετε αυτή τη ρύθμιση, μπορείτε να θέσετε την τιμή της μεταβλητής CCACHE_DIR στο αρχείο /etc/make.conf.

Ωστόσο, αν εκτελέσετε ccache, θα χρησιμοποιήσει τον προεπιλεγμένο κατάλογο ${HOME}/.ccache. Για αυτό το λόγο πρέπει να θέσετε τιμή στη μεταβλητή CCACHE_DIR όταν ζητάτε τα ccache στατιστικά για το Portage.

Χρησιμοποίηση του ccache για Μεταγλώττιση Κώδικα C εκτός του Portage

Αν επιθυμείτε να χρησιμοποιείτε το ccache για μεταγλωττίσεις εκτός του Portage, προσθέστε το /usr/lib/ccache/bin στην αρχή της μεταβλητής περιβάλλοντος PATH (πριν το /usr/bin). Αυτό γίνεται με επεξεργασία του .bash_profile, στον προσωπικό φάκελο του χρήστη. Η χρήση του .bash_profile είναι μονόδρομος για τον ορισμό μεταβλητών περιβάλλοντος PATH:

PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
Υποστήριξη για Πακέτα Εκτελέσιμων Δημιουργία των Προ-χτισμένων Πακέτων

Το Portage υποστηρίζει την εγκατάσταση από προ-χτισμένα πακέτα. Παρόλο που το Gentoo δεν παρέχει prebuilt πακέτα από μόνο του (εκτός από τα στιγμιότυπα GRP), μπορεί να αντιλαμβάνεται τα προ-χτισμένα πακέτα.

Για να δημιουργήσετε ένα prebuilt πακέτο, χρησιμοποιήστε το quickpkg, εάν αυτό είναι ήδη εγκατεστημένο στο σύστημα, ή το emerge με τις επιλογές --buildpkg ή --buildpkgonly.

Αν επιθυμείτε το Portage να δημιουργεί προ-χτισμένο πακέτο για κάθε πακέτο που εγκαθιστάτε, προσθέστε το buildpkg στη μεταβλητή FEATURES.

Εκτεταμένη υποστήριξη για τη δημιουργία προ-χτισμένων πακέτων μπορεί να λάβει κανείς με το catalyst. Για περισσότερες πληροφορίες σχετικά με το catalyst δείτε τις Συχνές Ερωτήσεις του Catalyst

Εγκατάσταση Προ-χτισμένων Πακέτων

Παρόλο που το Gentoo δεν παρέχει μια κεντρική αποθήκη που αποθηκεύονται τα προ-χτισμένα πακέτα, μπορείτε να δημιουργήσετε μία. Αν θέλετε να χρησιμοποιήσετε μία τέτοια αποθήκη, πρέπει να κάνετε το Portage να αντιληφθεί την ύπαρξή της, θέτοντας τη μεταβλητή PORTAGE_BINHOST να δείχνει σε αυτή. Για παράδειγμα, αν τα prebuilt πακέτα βρίσκονται στο ftp://buildhost/gentoo:

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Όταν επιθυμείτε να εγκαταστήσετε ένα προ-χτισμένο πακέτο, προσθέστε την επιλογή --getbinpkg στην εντολή του emerge παράλληλα με την επιλογή --usepkg. Το πρώτο δίνει εντολή στο emerge να κατεβάσει το προ-χτισμένο πακέτο από τον διακομιστή που ορίστηκε προηγουμένως, ενώ το τελευταίο να δοκιμάσει πρώτα την εγκατάσταση του προ-χτισμένου πακέτου προτού κατεβάσει τον πηγαίο κώδικα και αρχίσει τη μεταγλώττιση.

Για παράδειγμα, για να εγκαταστήσετε το gnumeric από προ-χτισμένο πακέτο:

# emerge --usepkg --getbinpkg gnumeric

Περισσότερες πληροφορίες για τις επιλογές σχετικά με τα prebuilt πακέτα μπορείτε να βρείτε στη σελίδα man του emerge:

$ man emerge
Κατέβασμα Αρχείων Παράλληλο Κατέβασμα

Όταν εγκαθιστάτε μια σειρά από πακέτα, το Portage μπορεί αν κατεβάσει τα πηγαία αρχεία για το επόμενο αρχείο της λίστας ακόμη κι όταν μεταγλωττίζει άλλο πακέτο, κάνοντας κατά συνέπεια μικρότερο το χρόνο μεταγλώττισης. Για να κάνετε χρήση αυτής της ικανότητας, προσθέστε το "parallel-fetch" στο FEATURES σας.

Userfetch

Όταν το Portage τρέχει σαν root, το FEATURES="userfetch" θα επιτρέψει στο Portage να ρίξει τα δικαιώματα root κατά το κατέβασμα πηγαίου κώδικα πακέτων. Αυτό αποτελεί μια μικρή βελτίωση ασφάλειας.