# Arch Build System (Ελληνικά)

#### Τι είναι το ABS ;

Το ABS είναι το σύστημα χτισίματος πακέτων στον Arch. Είναι ένα 'ports-like' σύστημα για τη δημιουργία λογισμικού από πηγαίο κώδικα. Ενώ ο pacman είναι το εξειδικευμένο εργαλείο του Arch για την διαχείριση των δυαδικών πακέτων (συμπεριλαμβανομένων και των χτισμένων με ABS), το ABS είναι το εξειδικευμένο εργαλείο του Arch για την μετατροπή κώδικα σε εγκαταστάσιμο πακέτο (Pkg.tar.gz).

##### Τι είναι το ports-like σύστημα ;

Τα 'Ports' είναι ένα σύστημα που χρησιμοποιείται από το *BSD, το οποίο επιτρέπει σε πηγαία πακέτα να μεταφορτώνονται, αποσυμπιέζονται, μετατρέπονται και εγκαθίστανται. Ένα 'Port' είναι ένας μικρός κατάλογος στον υπολογιστή του χρήστη, που παίρνει το όνομα του από το αντίστοιχο λογισμικό που θα εγκατασταθεί, το οποίο περιέχει μερικά αρχεία με οδηγίες για τη λήψη και την εγκατάσταση ενός πακέτου από πηγαίο κώδικα, συνήθως με την πλοήγηση στον κατάλογο ή στο Port, όπου και κάνει 'make' και 'make install'. Έτσι το σύστημα κατεβάζει, μετατρέπει και εγκαθιστά το επιθυμητό λογισμικό.

##### Το ABS είναι μια παρόμοια ιδέα.

Το ABS αποτελείται από ένα κατάλογο σε σχήμα δέντρου (το ABS Tree), που βρίσκεται στο /var/abs, το οποίο περιέχει πολλούς υποκαταλόγους, ανά κατηγορία, και με ονόματα από τα αντίστοιχα προς χτίσιμο πακέτα. Αυτό το δέντρο αντιπροσωπεύει (αλλά δεν περιέχει) όλο το επίσημο λογισμικό του Arch που διατίθεται μέσω του συστήματος svn. Μπορούμε να αναφερόμαστε σε κάθε πακέτο-υποκατάλογο σαν 'ABS', αλλά και σαν 'port'. Αυτά τα ABS, ή οι υποκατάλογοι, δεν περιέχουν το πακέτο λογισμικού, ούτε την πηγή, αλλά ένα PKGBUILD αρχείο, (μερικές φορές και κάποια άλλα αρχεία). Ένα PKGBUILD είναι μια απλή δέσμη ενεργειών - ένα αρχείο κειμένου που περιέχει τις οδηγίες επεξεργασίας και συσκευασίας καθώς και το URL του κατάλληλου κώδικα tarball που πρέπει να μεταφορτωθεί. Το σημαντικότερο συστατικό των ABS είναι τα PKGBUILDs.

##### Μια σύντομη ματιά.

Εγκαθιστούμε το abs με pacman -S abs.Δίνοντας την εντολή 'abs' σαν root δημιουργούμε το δέντρο ABS, σε συγχρονισμό με το σύστημα svn. Έτσι αν θελήσουμε για παράδειγμα να χτίσουμε το nano από τη πηγή του, αντιγράφουμε το /var/abs/<repo>/<pkgname> σε έναν κατάλογο κατασκευής, πηγαίνουμε στον κατάλογο κατασκευής και κάνουμε makepkg.Είναι τόσο απλό. Στη συνέχεια το makepkg θα προσπαθήσει να διαβάσει και να εκτελέσει τις οδηγίες που περιλαμβάνονται μέσα στο PKGBUILD. Η κατάλληλη πηγή tarball αυτόματα μεταφορτώνεται, αποσυμπιέζεται, μετατρέπεται, σύμφωνα με τις CFLAGS που διευκρινίζονται στο /etc/makepkg.conf και τέλος συμπιέζεται σε ένα πακέτο με επέκταση .pkg.tar.gz όπως ορίζεται στο PKGBUILD. Η εγκατάσταση γίνεται εύκολα με pacman -U nano.pkg.tar.gz. (ο pacman αναλαμβάνει επίσης και την απομάκρυνση του πακέτου).

Το PKGBUILD και κάποια άλλα αρχεία, μπορούν να προσαρμοστούν για να ανταποκρίνονται στις ανάγκες μας, μπορούμε επίσης να επιλέξουμε να χρησιμοποιούμε τη λειτουργία ABS makepkg για να κάνουμε τα δικά μας πακέτα από εξωτερικές πηγές. (Δείτε το πρωτότυπο PKGBUILD και εγκαταστήστε τα αρχεία στο /var/abs/core/).

Με το δέντρο ABS ενεργοποιημένο, έχουμε όλο το διαθέσιμο λογισμικό του Arch στα χέρια μας, για να δημιουργήσουμε από την πηγή τους και αυτόματα πακέτα της μορφής .pkg.tar.gz.

##### Επισκόπηση ABS.

Ο όρος "ABS" μπορεί να χρησιμοποιηθεί σαν όρος ομπρέλα, δεδομένου ότι περιλαμβάνει και στηρίζεται σε αρκετά άλλα συστατικά. Επομένως, αν και όχι τεχνικά ακριβές, το "ABS" μπορεί να αναφέρεται με την ακόλουθη δομή σαν ένα πλήρες σετ εργαλείων:

- Το δέντρο ABS: Η δομή του καταλόγου ABS στο /var/abs/. Περιέχει πολλούς υποκαταλόγους, με ονόματα για όλο το διαθέσιμο λογισμικό του Arch svn, αλλά όχι και τα πακέτα.

- ABS: Ένα σύνολο εργαλείων για την ανάκτηση και το χτίσιμο των επίσημων Arch Linux PKGBUILDs.

- PKGBUILDs: Αρχεία κειμένων που βρίσκονται στους καταλόγους ABS, ή που είναι custom made, με οδηγίες για την δόμηση πακέτων και του URL των πηγών.

- makepkg: Εργαλείο εντολής κελύφους ABS που διαβάζει το PKGBUILDs, συντάσσει τις πηγές και δημιουργεί ένα .pkg.tar.gz.

- Pacman: Ο Pacman είναι απολύτως ανεξάρτητος, αλλά εμπλέκεται είτε από το makepkg είτε με το χέρι, για να εγκαταστήσει ή αφαιρέσει πακέτα και εξαρτήσεις.

- AUR: Η κοινοτική αποθήκη των χρηστών είναι ανεξάρτητη από το ABS αλλά τα AUR [unsupported] PKGBUILDs μπορούν να χρησιμοποιηθούν μέσω του εργαλείου ABS makepkg, για να δομηθεί λογισμικό. Το AUR περιέχει πάνω από 8000 PKGBUILDs χρηστών για το λογισμικό που δεν είναι διαθέσιμο σε επίσημα πακέτα. Εάν χρειαστεί να δημιουργήσουμε ένα πακέτο έξω από το επίσημο δέντρο του Arch, οι πιθανότητες είναι αυτό να είναι στο AUR.

#### Πότε πρέπει να χρησιμοποιούμε το σύστημα ABS.

Το ABS χρησιμοποιείται για :

- Δημιουργία νέων πακέτων από την πηγή τους για λογισμικό το οποίο δεν είναι ακόμα διαθέσιμο.(Δείτε Creating packages)

- Προσαρμογή υπαρχόντων πακέτων ώστε να ταιριάζουν στις ανάγκες μας (με ενεργοποίηση ή απενεργοποίηση επιλογών).

- Αναδόμηση ολόκληρου του συστήματος χρησιμοποιώντας δικό μας compiler flags, "a la FreeBSD"

- Εξ αρχής δημιουργία και εγκατάσταση δικού μας πυρήνα. (Βλέπε Kernel Compilation).

Το ABS δεν είναι απαραίτητο για τη λειτουργία του Arch Linux, αλλά είναι χρήσιμο για την αυτοματοποίηση ορισμένων ενεργειών μεταγλώττισης από πηγαίο κώδικα.

Αυτό το how-to προσπαθεί να μας δώσει μια γενική γνώση σχετικά με το ABS και την μορφή των πακέτων του Arch αν και δεν είναι ένας πλήρης οδηγός. Για περισσότερες πληροφορίες πρέπει να διαβάσετε τις man pages.

## Ας ξεκινήσουμε: Εγκατάσταση Πακέτων

Για να χρησιμοποιήσουμε το ABS, πρέπει αρχικά το εγκαταστήσουμε από το core repository δίνοντας απλά :

    pacman -S abs

Αυτό θα τραβήξει και οποιεσδήποτε απαραίτητες εξαρτήσεις.

#### /etc/abs.conf

Διορθώνουμε το /etc/abs.conf για να περιλάβουμε τα επιθυμητά repositories:

    nano /etc/abs.conf

ή

    vim /etc/abs.conf

Αφαιρώντας το ! μπροστά από το κατάλληλο repos, πχ:

    REPOS=(core extra community !testing)

#### Δημιουργούμε το δέντρο ABS.

Σαν root, δίνουμε:

    abs

Το ABS δέντρο μας δημιουργείται τώρα στο /var/abs. Τα κλαδιά του δέντρου ABS υπάρχουν πλέον και αντιστοιχούν σε όσα καθορίζονται στο /etc/abs/abs.conf.

Την εντολή abs θα πρέπει να την χρησιμοποιούμε περιοδικά για την ενημέρωση και τον συγχρονισμό του ABS δέντρου μας.

#### /etc/makepkg.conf

Το /etc/makepkg.conf διευκρινίζει τις μεταβλητές και τα compiler flags,τα οποία μπορείτε να τα επεξεργαστείτε αν χρησιμοποιείτε ένα SMP σύστημα,ή αν θέλετε να κάνετε άλλες βελτιώσεις.Οι προεπιλεγμένες ρυθμίσεις έιναι για i686 and x86_64 αρχιτεκτονικές που θα λειτουργήσουν άψογα σε συστήματα με μονοπύρηνους επεξεργαστές. (Οι προεπιλεγμένες ρυθμίσεις θα λειτουργήσουν για SMP συστήματα,αλλά θα αξιοποιούν μόνο έναν πυρήνα/επεξεργαστεί κατά το compile- βλέπε Safe Cflags.).

#### Το δέντρο ABS.

Όταν τρέχουμε abs για πρώτη φορά, θα συγχρονίσουμε το δέντρο ABS με τον Arch server χρησιμοποιώντας το σύστημα cvs. Τι ακριβώς είναι το δέντρο ABS; Βρίσκεται στο /var/abs και μοιάζει με το παρακάτω:

    | -- core/
    |     || -- base/
    |     ||     || -- acl/
    |     ||     ||     || -- PKGBUILD
    |     ||     || -- attr/
    |     ||     ||     || -- PKGBUILD
    |     ||     || -- ...
    |     || -- devel/
    |     ||     || -- abs/
    |     ||     ||     || -- PKGBUILD
    |     ||     || -- autoconf/
    |     ||     ||     || -- PKGBUILD
    |     ||     || -- ...
    |     || -- ...
    | -- extra/
    |     || -- daemons/
    |     ||     || -- acpid/
    |     ||     ||     || -- PKGBUILD
    |     ||     ||     || -- ...
    |     ||     || -- apache/
    |     ||     ||     || -- ...
    |     ||     || -- ...
    |     || -- ...
    | -- community/
    |     || -- ...

Έτσι το δέντρο ABS έχει ακριβώς την ίδια δομή με τη βάση δεδομένων πακέτων:

- first-level ο κατάλογος αντιπροσωπεύει τις κατηγορίες

- οι κατάλογοι δεύτερου επιπέδου αντιπροσωπεύουν τα ίδια τα ABS, τα ονόματα των οποίων αντιστοιχούν πραγματικά στα πακέτα που θέλουμε να δημιουργήσουμε

- Τα αρχεία PKGBUILD που περιέχουν όλες τις πληροφορίες που απαιτούνται σχετικά με το πακέτο

- Ακόμα ένας κατάλογος ABS μπορεί να περιέχει τα patches ή και άλλα αρχεία που απαιτούνται για την δημιουργία του πακέτου.

Είναι σημαντικό να γνωρίζουμε ότι ο πηγαίος κώδικας του πακέτου δεν βρίσκεται στον κατάλογο ABS. Αντί αυτού, το αρχείο PKGBUILD περιέχει ένα URL από το οποίο τα ABS θα τον μεταφορτώσουν αυτόματα.

##### Δημιουργούμε ένα Build Directory.

Πρέπει να δημιουργήσουμε έναν κατάλογο όπου θα πραγματοποιούμε τη διαδικασία. Σε αυτό τον κατάλογο θα κάνουμε τα πάντα και ποτέ δεν πρέπει να τροποποιήσουμε το δέντρο ABS με την δημιουργία πακέτου μέσα σε αυτό. Μια ορθή πρακτική είναι να χρησιμοποιηθεί ο /home κατάλογός μας, αν και μερικοί χρήστες προτιμούν να δημιουργούν ένα 'τοπικό' κατάλογο στο /var/abs/, με τα δικαιώματα του απλού χρήστη. Αντιγράφουμε τα ABS από το δέντρο (var/abs/branch/category/pkgname) στον νέο κατάλογο κατασκευής, /path/to/build/dir.

Δημιουργούμε τον κατάλογο κατασκευής μας πχ :

    mkdir -p /home/yourusername/abs

ΣΗΜΕΙΩΣΗ: Η πρώτη μεταφόρτωση του δέντρου ABS είναι και η μεγαλύτερη, κατόπιν λαμβάνονται μόνο οι απαιτούμενες ενημερώσεις.

Τώρα που ξέρουμε τι είναι το δέντρο ABS πώς μπορούμε να το χρησιμοποιήσουμε ;

#### Η παραδοσιακή μέθοδος δημιουργίας πακέτων.

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

- Κατεβάζουμε το source tarball από το απομακρυσμένο server, με τη χρήση web browser, ftp, wget ή άλλο τρόπο.

- Αποσυμπιέζουμε το αρχείο:

    tar -xzf foo-0.99.tar.gz
    tar -xjf foo-0.99.tar.bz2

- Μπαίνουμε στον κατάλογο

    cd foo-0.99

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

    ./configure [[option]]

Ίσως πρέπει πρώτα να δοκιμάσουμε τη βοήθεια για να καταλάβουμε καλύτερα πώς λειτουργεί:

    ./configure --help

Εάν μέσα στο script δεν υπάρχει μια -- prefix επιλογή, τα περισσότερα scripts θα χρησιμοποιήσουν την διαδρομή /usr/local για την εγκατάσταση, ενώ κάποια άλλα θα χρησιμοποιήσουν την διαδρομή /usr. Χάριν συνέπειας, προτείνεται γενικά για να υπάρχει η επιλογή prefix=/usr/local. Θεωρείται καλή πρακτική να εγκαθιστούμε τα προσωπικά μας προγράμματα στο /usr/local, και τα προγράμματα που ρυθμίζονται από τη διανομή στο /usr. Αυτό εξασφαλίζει ότι οι προσωπικές μας versions προγραμμάτων που δημιουργούμε μπορούν να συνυπάρξουν με αυτές που ρυθμίζονται από τον διαχειριστή πακέτων της διανομής - τον pacman.

    ./configure --prefix=/usr/local

συντάσσουμε από τον πηγαίο κώδικα δίνοντας

    make

εγκαθιστούμε δίνοντας

    make install

- Απεγκαθιστούμε πηγαίνοντας στο source directory και δίνοντας

    make uninstall

Ωστόσο, θα πρέπει πάντα να διαβάζουμε το αρχείο `INSTALL` για να μάθουμε τον τρόπο που το συγκεκριμένο πακέτο θα πρέπει να δομηθεί και να εγκατασταθεί, δεδομένου ότι δεν χρησιμοποιούν όλα τα πακέτα τις εντολές `configure, make, make install.`

Note: Η παραπάνω παραδοσιακή μέθοδος για να δουλεύουμε με πηγαίο κώδικα μπορεί να χρησιμοποιηθεί και στο Arch Linux, αλλά το ABS προσφέρει μια βελτιωμένη, απλή, και κομψή εναλλακτική λύση, όπως θα δούμε.

#### Η δημιουργία πακέτων με το ABS.

Το ABS είναι ένα κομψό εργαλείο, που προσφέρει σημαντική βοήθεια και δυνατότητες προσαρμογής στην διαδικασία δόμησης του πακέτου δημιουργώντας ένα αρχείο για την εγκατάσταση.

Η μέθοδος ABS περιλαμβάνει την αντιγραφή ενός ABS από το δέντρο σε έναν κατάλογο κατασκευής, όπου και κάνει makepkg. Στο παράδειγμά μας, θα χτίσουμε το πακέτο του slim display manager.

- 1. Αντιγράφουμε το slim ABS από το δέντρο ABS σε έναν κατάλογο κατασκευής.

    cp -r /var/abs/extra/x11/slim/ /home/yourusername/abs

- 2. Πλοηγούμαστε στον κατάλογο κατασκευής

    cd /home/yourusername/abs/slim

- 3. Σαν κανονικός χρήστης κάνουμε makepkg :

    makepkg -c

Ως root κάνουμε εγκατάσταση :

    # pacman -U slim 1.3.0-2-i686.pkg.tar.gz

Αυτό ήταν όλο. Έχουμε ολοκληρώσει το χτίσιμο του slim από τον πηγαίο κώδικα του και το έχουμε εγκαταστήσει στο σύστημα μας με τον pacman. Την απεγκατάσταση του χειρίζεται και πάλι ο pacman (pacman -R slim).

- Η μέθοδος ABS προσφέρει ένα επίπεδο ευκολίας και αυτοματοποίησης, ενώ διατηρεί πλήρη διαφάνεια και έλεγχο στα στάδια δόμησης και εγκατάστασης με το να τα συμπεριλαμβάνει στο PKGBUILD.

Στο Creating packages να έχουμε μια πλήρη εικόνα για την δομή ενός PKGBUILD.

#### Περισσότερες πληροφορίες

- Makepkg
- Creating packages
- Safe Cflags
- Kernel Compilation with ABS
- Arch User Repository
- Custom local repository with ABS and gensync

Categories:

- Package management (Ελληνικά)
- Package development (Ελληνικά)