Τι είναι τα αποθετήρια εφαρμογών και πως δουλεύουν

vivliothikes-apothetiria-logismikou

Πως δημιουργήθηκε η ανάγκη για αποθετήρια – αποθήκες λογισμικού ; Τι είναι τα αποθετήρια λογισμικού; Πως δουλεύουν και γιατί οι διανομές Linux εξαρτώνται τόσο πολύ από αυτές; Ας δούμε μια «καινοτομία» του Linux που προϋπήρχε 10-15 χρόνια πριν απο τα διάφορα App Store, Play Store, Windows Store κλπ.

Για να καταλάβουμε τι κάνει το apt (το εργαλείο εγκατάστασης εφαρμογών σε Debian/Ubuntu/Mint) ας πάμε πρώτα αρκετά χρόνια πίσω.

Εν αρχή ήταν το TGZ

vivliothikes-apothetiria-logismikou
Photo by Expect Best on Pexels.com

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

Η απλή αυτή προσέγγιση δούλευε μια χαρά, αρκεί να γνωρίζαμε και να είχαμε εγκαταστήσει οτιδήποτε χρειαζόταν ένα πακέτο για να παίξει. Γιατί ένα πακέτο δεν παίζει από μόνο του.

Εξαρτήσεις εφαρμογών

Ας πάρουμε για παράδειγμα ένα απλό πρόγραμμα που παίζει μουσική. Αυτό έχει δυο πράγματα. Ένα γραφικό περιβάλλον και ένα σύστημα που παίζει την μουσική.

Αν θέλεις να φτιάξεις ένα τέτοιο πρόγραμμα θα σου πάρει δεκαετίες για να τα καταφέρεις, αλλά αν κάποια ομάδα έχει φτιάξει μια βιβλιοθήκη για να παίζει μουσική και κάποια άλλη ομάδα μια βιβλιοθήκη για γραφικά περιβάλλοντα η δουλεία είναι πολύ ευκολότερη.

Η βιβλιοθήκη για τον ήχο με την σειρά της μπορεί να χρησιμοποιεί μια βιβλιοθήκη για να παίζει ιντερνετικό ραδιόφωνο και η βιβλιοθήκη για το γραφικό περιβάλλον μια άλλη βιβλιοθήκη για να διαβάζει και δείχνει τα εικονίδια.

Άρα για να εγκαταστήσεις το πρόγραμμα που παίζει μουσική θα πρέπει να εγκαταστήσεις πρώτα τις βιβλιοθήκες που θέλει, αλλά και τις βιβλιοθήκες και τα προγράμματα που αυτές θέλουν, αλλά και τις βιβλιοθήκες και τα προγράμματα που οι δεύτερες αυτές βιβλιοθήκες θέλουν και πάει λέγοντας.

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

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

Τι είναι μια διανομή Linux

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

Γιατί να έχουμε τις βιβλιοθήκες θα ρωτήσει κανένας; Δεν μπορεί ένα πρόγραμμα να φτιαχτεί και να τις έχει ενσωματωμένες;

Ναι μπορεί να γίνει αυτό πολύ εύκολα. Τα προγράμματα που υπάρχουν στον φάκελο /sbin για παράδειγμα είναι έτσι.

Η μέθοδος αυτή όμως έχει ένα μεγάλο μειονέκτημα. Τα προγράμματα αυτά θα γίνουν πολύ μεγάλα και θα απαιτούν πολύ μνήμη στο δίσκο (σχεδόν αδιάφορο), αλλά και πολύ κεντρική μνήμη. Το μυστικό με τις βιβλιοθήκες (τις δυναμικά συνδεμένες βιβλιοθήκες τουλάχιστον) είναι ότι υπάρχουν μια φορά μόνο στην μνήμη του υπολογιστή. Αν οι βιβλιοθήκες είναι συνδεμένες στατικά, όπως στο /sbin κάθε πρόγραμμα θα έχει την δικιά του. Όσα GB μνήμη RAM και να έχεις σύντομα θα τελειώσει.

Οι δυναμικές βιβλιοθήκες έχουν την θέση τους στον δίσκο και είναι αλλού από εκεί που είναι τα προγράμματα. Προσοχή εδώ θέλει αν αρχίσουμε να πειράζουμε τι υπάρχει σε αυτές τις βιβλιοθήκες. Αν για παράδειγμα θέλουμε την τελευταία έκδοση του προγράμματος της μουσικής, αυτό θα θέλει καινούργιες βιβλιοθήκες, και αν το βάλουμε από ένα αποθετήριο εκτός της βασικής διανομής όπως ένα PPA μπορεί να την πατήσουμε άσχημα και να μην μπορεί μετά να εγκατασταθεί η καινούργια έκδοση του προγράμματος παρουσιάσεων.

Προγράμματα… όλα σε ένα

Υπάρχει βέβαια και μια άλλη λύση. Να έχει κάθε πρόγραμμα τον φάκελο του μαζί με τις βιβλιοθήκες του. Αυτή είναι η προσέγγιση που ακολουθεί η apple για παράδειγμα και υπάρχουν διανομές που το είχαν δοκιμάσει.

Τα διαφορετικά προγράμματα θα έχουν τις δικές τους βιβλιοθήκες, αλλά αν συμβεί να έχουν τις ίδιες ακριβώς, τότε αυτές θα υπάρχουν μια μόνο φορά στην μνήμη. Πλέον με τις νέες μορφές πακέτου Flatpack – Snap – Appimage, το πακετάρισμα βιβλιοθηκών και προγραμμάτων στο Linux έχει απλοποιηθεί σημαντικά.

Αποθετήρια Λογισμικών

Τώρα που γνωρίσαμε για τις βιβλιοθήκες ας επιστρέψουμε πίσω στα αρχεία tgz του Slackware. Πως θα ξέρουμε αν έχουμε αποσυμπιέσει τα πάντα που θέλει κάποιο πρόγραμμα; Η λύση είναι απλή. Μαζί με κάθε συμπιεσμένο αρχείο tgz θα έχουμε ένα αρχείο με πληροφορίες για το τι είναι και τι απαιτεί. Πριν το εγκαταστήσουμε (δηλαδή απλά αποσυμπιέσουμε) θα κοιτάξουμε σε αυτές τις πληροφορίες και θα δούμε αν ότι απαιτεί, δηλαδή τις εξαρτήσεις του, υπάρχει ήδη στο σύστημα. Αν δεν υπάρχει θα αρνηθούμε να το κάνουμε. Καλό θα ήταν να προσθέταμε ένα αρχείο με αθροίσματα ελέγχου για να δούμε αν η αποσυμπίεση έγινε σωστά. Ποτέ δεν ξέρεις.

Α θέλουμε επίσης σε κάποιες περιπτώσεις ένα σενάριο κελύφους που να τρέχει και να ενημερώνει άλλα προγράμματα. Για παράδειγμα μια γραμματοσειρά θέλει να ενημερώσει τον κατάλογο με τις γραμματοσειρές. Θέλουμε κάτι αντίστοιχο και για όταν αφαιρούμε ένα πακέτο. Κάποια πράγματα όπως τις γραμματοσειρές μπορούμε να το αυτοματοποιήσουμε λίγο περισσότερο και να μην κάνει κάθε γραμματοσειρά τα δικά της. Ίσως και κάποια υποδομή ώστε να μπορεί το σύστημα εγκατάστασης να ρωτάει πράγματα κατά την εγκατάσταση. Θα χρειαστούμε και ένα αρχείο με πληροφορίες όπως το όνομα τον συγγραφέα και την άδεια χρήσης.

Όπως καταλάβατε, έχουνε μαζευτεί πολλά αρχεία οπότε η επόμενη λογική κίνηση είναι να τα μαζέψουμε μαζί σε ένα αρχείο tgz. Έχουμε έτσι δυο συμπιεσμένους φακέλους. Ένα με τα αρχεία τους προγράμματος και ένα με πληροφορίες. Το επόμενο βήμα είναι κολλήσεις αυτά τα αρχεία μαζί. Γιατί να τα κολλήσεις και να μην φτιάξεις ένα μεγαλύτερο συμπιεσμένο αρχείο; Γιατί είναι ποιο εύκολο. Όσοι γνωρίζουν το πρόγραμμα ar γνωρίζουν και το γιατί. Για να έχουμε το κεφάλι μας ήσυχο ας το υπογράψουμε και ψηφιακά ώστε να ξέρει όλους ο κόσμος ποιος το έγραψε και να μην μπορεί κανείς κακός να το αλλοιώσει.

Μένει μόνο η τελική πινελιά. Πως θα πούμε το αρχείο που φτιάξαμε. Σε λένε Ian και την κοπέλα σου την λένε Debora. Ας του δώσουμε το όνομα της. Ας πούμε την διανομή Debian και τα πακέτα προγραμμάτων deb.

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

Επίλογος

Ξέρω είναι μακρύ ανάγνωσμα, ελπίζω να είναι κατανοητό και να βοηθά να έχουμε μια εικόνα για το τι συμβαίνει πίσω από τις διαδικασίες εγκατάστασης προγραμμάτων στο Linux.

Ας κρατήσουμε κάποια βασικά πράγματα:

Άσκηση: με το πρόγραμμα mc μπορείς να πας στο φάκελο /var/cache/apt/archives, όπου υπάρχουν τα τελευταία πακέτα που εγκαταστάθηκαν, και να μπεις μέσα σε ένα αρχείο deb σαν να ήταν φάκελος και να δεις τα δύο συμπιεσμένα αρχεία και τι περιέχουν μέσα. Πήγαινε με το ίδιο πρόγραμμα και αναζήτησε αυτές τις πληροφορίες στον κατάλογο /var/lib/dpkg. Επίσης δες το άρθρο «Πως βλέπω ποια αποθετήρια λογισμικού έχω στο σύστημά μου«.

ΥΓ: μεταξύ της επιστημονικής αυστηρότητας και της εκλαΐκευσης, το κείμενο αυτό διαλέγει ευθαρσώς την δεύτερη, λέγοντας ψέματα ή μισές αλήθειες όπου είναι απαραίτητο.

Advertisements

One thought on “Τι είναι τα αποθετήρια εφαρμογών και πως δουλεύουν

  1. χαχαχααχ βλέπω είχες όρεξη φίλε γράφοντας αυτό το άρθρο! ^_^
    Μου άρεσε πάντως! Ωραίο.

    Ξεχνάς όμως να αναφέρεις πως το μόνο που μένει είναι να καταφέρουμε εμείς κάθε φορά να πακετάρουμε σωστά το λογισμικό μας και έπειτα να το ανεβάζουμε στις αίτιμες υποδομές/πλατφόρμες διαμοιρασμού ( που αναφέρεις )… 😉

    Υπάρχουν βεβαίως πολλά ακόμη να πεις εν καιρό για το θέμα. 🙂
    Ωραίο άρθρο, ευχαριστούμε.

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση /  Αλλαγή )

Σύνδεση με %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.