Package management
Περιεχόμενα
Επισκόπηση
Ένας διαχειριστής πακέτων είναι μια συλλογή εργαλείων που παρέχει μια σταθερή μέθοδο εγκατάστασης, αναβάθμισης και απεγκατάστασης εφαρμογών από τον υπολογιστή. Οι διανομές Linux, συμπεριλαμβανομένου και του openSUSE, τυπικά αποτελούνται από χιλιάδες διακριτά πακέτα εφαρμογών.
Οι εφαρμογές διανέμονται μέσω των Πακέτων τα οποία είναι συνδεδεμένα με μεταδεδομένα (metadata) τα οποία περιέχουν πρόσθετες πληροφορίες όπως περιγραφή του σκοπού του προγράμματος και μια λίστα εξαρτήσεων απαραίτητων για να εκτελεστεί το πρόγραμμα. Παρέχονται από τα αποθετήρια, είτε τοπικά (CD, DVD ή σκληρός δίσκος) ή από online αποθετήρια. Μετά την εγκατάσταση, τα μεταδεδομένα αποθηκεύονται σε μια βάση δεδομένων πακέτων τοπικά η οποία χρησιμοποιείται για να ανακτηθούν τα πακέτα εφαρμογών.
Το Libzypp είναι η υλοποίηση από πλευράς openSUSE ενός τέτοιου συστήματος διαχείρισης και παρέχει το YaST Software Management ως γραφική διεπαφή χρήστη και το Zypper ως διεπαφή γραμμών εντολής.
Πακέτα
Τα πακέτα είναι σύνολο αρχείων που περιέχουν όλα τα αρχεία που συνθέτουν ενα κομμάτι του προγράμματος (όπως την ίδια την εφαρμογή, κοινές βιβλιοθήκες, πακέτα υπό ανάπτυξη που περιέχουν αρχεία απαραίτητα για τη δημιουργία της εφαρμογής αναφορικά με μια βιβλιοθήκη, ...) και, τελικά, οδηγίες πως να κάνετε όλα αυτά να δουλέψουν.
Ένα πακέτο είναι κατάλληλα διαμορφωμένο για τη διανομή για την οποία έχει δημιουργηθεί, λαμβάνοντας υπόψη τις διαδρομές εγκατάστασης, τις εξαρτήσεις, την ολοκλήρωση με το περιβάλλον εργασίας, κατάλληλα scripts εκκίνησης για εξυπηρετητές κ.λπ. Για τους λόγους αυτούς πρέπει πάντα να εγκαθιστάτε πακέτα που έχουν δημιουργηθεί για τη διανομή που χρησιμοποιείτε, καθώς επίσης και για τη συγκεκριμένη έκδοση που χρησιμοποιείτε (π.χ. openSUSE 11.1). Σαν παράδειγμα, μην εγκαθιστάτε πακέτα που προορίζονται για Fedora στο openSUSE και επίσης μην εγκαθιστάτε πακέτα της έκδοσης 11.1 στην 11.2.
Μεταδεδομένα πακέτων
Ένα πακέτο περιέχει επίσης επιπρόσθετες πληροφορίες, που συνήθως αναφέρονται σαν Μεταδεδομένα, όπως είναι:
- μια περίληψη,
- μια περιγραφή,
- μια λίστα με τα αρχεία που περιέχονται σε ένα πακέτο,
- την έκδοση της εφαρμογής που περιέχει καθώς και τον αριθμό έκδοσης του πακέτου,
- πότε, πού, και ποιος το έφτιαξε,
- για ποια αρχιτεκτονική είναι κατασκευασμένο,
- Τα αθροίσματα ελέγχου (checksums) από τα αρχεία που περιέχονται στο πακέτο,
- την άδεια χρήσης της εφαρμογής,
- ποιά άλλα πακέτα χρειάζονται για να λειτουργήσει σωστά,
- διάφορες άλλες πληροφορίες.
Εξαρτήσεις Πακέτων
Μια σοβαρή πτυχή των αρχείων πακέτων είναι οι σχέσεις που περιέχουν. Επιδραστικά, τα πακέτα επίσης συνδέουν αρχεία με άλλα πακέτα, καθώς οι πακεταρισμένες εφαρμογές χρειάζονται ένα εκτελεστικό περιβάλλον (άλλα εργαλεία, βιβλιοθήκες κ.λπ.) για να τρέξει πραγματικά η εφαρμογή. Οι εξαρτήσεις πακέτων χρησιμοποιούνται για να εκφράσουν τέτοιες σχέσεις.
Σαν παράδειγμα, το πακέτο Α χρειάζεται τα πακέτα B, Γ και Δ να εγκατασταθούν ώστε να λειτουργήσει σωστά.
- Οι εξαρτήσεις πακέτων είναι μεταβατικές, το οποίο σημαίνει ότι όταν το πακέτο Α χρειάζεται το πακέτο Β, και το πακέτο Β χρειάζεται το πακέτο Γ, τότε και το πακέτο A θα χρειάζεται το πακέτο Γ, το οποίο καταλήγει μερικές φορές στο να πρέπει να εγκαταστήσετε πολλά πακέτα, παρόλο που θέλατε να εγκαταστήσετε μόνο μια εφαρμογή.
- Οι εξαρτήσεις σε βιβλιοθήκες (τυπικά πακέτα με ονομασία που ξεκινά με "lib") είναι κάτι πολύ κοινό και όλες σχεδόν οι εφαρμογές εξαρτώνται από ένα σύνολο πακέτων βιβλιοθηκών.
Τα πακέτα και οι εξαρτήσεις των πακέτων είναι σημαντικές πτυχές των διανομών Linux (όπως και άλλων BSD και UNIX συστημάτων) επειδή παρέχουν έναν αρθρωτό τρόπο εγκατάστασης και διαχείρισης ενός λειτουργικού συστήματος και των εφαρμογών του. Αυτό είναι ειδικότερα αληθές για τα πακέτα βιβλιοθηκών. Σαν παράδειγμα, το πακέτο openssl περιλαμβάνει κρυπτογραφημένες βιβλιοθήκες που χρησιμοποιούνται από πολλές άλλες εφαρμογές και άλλες βιβλιοθήκες (π.χ. για SSL κρυπτογράφηση). Όταν μια νέα, βελτιωμένη έκδοση του openssl είναι διαθέσιμη, όλες οι εφαρμογές που το χρησιμοποιούν θα έχουν το όφελος από αυτό αναβαθμίζοντας απλά αυτό το μοναδικό πακέτο στη νεότερη έκδοση.
Είναι επίσης πολύ αποτελεσματικός τρόπος να διατηρήσετε ένα σταθερό και ασφαλές σύστημα: όταν υπάρχει κενό ασφαλείας ή κάποιο σφάλμα σε μια βιβλιοθήκη που χρησιμοποιείται από μία ή περισσότερες εφαρμογές, αναβαθμίζοντας το μοναδικό αυτό πακέτο θα διορθώσει αυτό το κενό ή σφάλμα για όλες τις εφαρμογές.
Μορφές πακέτων
Στον κόσμο των διανομών Linux, τα προγράμματα έρχονται πακεταρισμένα σε τρεις μορφές πακέτων.
- tgz (αρχεία tar gzip) τα οποία είναι βασικά αρχεία πηγαίου κώδικα. Μπορεί να περιέχουν οτιδήποτε θεωρεί σημαντικό ο δημιουργός του πακέτου. Εκτός του ίδιου του τύπου του αρχείου, που είναι απαραίτητο για να αποσυμπιεστούν τα αρχεία, δεν υπάρχει τίποτα στάνταρ σχετικά με το περιεχόμενο του αρχείου tgz. Πρέπει να μεταγλωττιστούν για να τρέξει η εφαρμογή.
- rpm (Διαχειριστής πακέτων RPM ) τα οποία είναι προ-μεταγλωττισμένα αρχεία. Δημιουργήθηκαν από την Red Hat Linux και τυποποιήθηκαν από την LSB, χρησιμοποιούνται από πολλές διανομές ως πακέτα συστήματος, συμπεριλαμβανομένου και του openSUSE.
- deb (Debian) τα οποία είναι προ-μεταγλωττισμένα αρχεία και χρησιμοποιούνται από συστήματα βασισμένα στη διανομή Debian.
Παρόλα αυτά, εάν ο τύπος των αρχείων αναγνωριστεί από το σύστημα ότι απαιτεί εξαρτήσεις, δεν παρέχεται η δυνατότητα διαχείρισης των εξαρτήσεων και απλά παρουσιάζεται στο χρήστη οποιοδήποτε πρόβλημα προκύψει, δίνοντας τη δυνατότητα στο χρήστη να αποφασίσει για το τι θα γίνει στη συνέχεια.
Για παράδειγμα, εάν θέλετε να εγκαταστήσετε το πακέτο RPM A που έχει εξαρτήσεις για το πακέτο RPM B, το RPM δεν θα εγκαταστήσει αυτόματα το πακέτο B αλλά θα σας ενημερώσει ότι χρειάζεται το πακέτο B και θα σταματήσει. Ο χρήστης θα αποφασίσει να εγκαταστήσει το πακέτο B και μετά το πακέτο A. Τώρα φανταστείτε το πακέτο B να έχει εξαρτήσεις για το πακέτο Γ και το πακέτο Δ, ενώ παράλληλα το πακέτο Δ έχει εξαρτήσεις για το πακέτο E και πάει λέγοντας. Έτσι καταλήγετε να κυνηγάτε εξαρτήσεις πακέτων χειροκίνητα σε όλα τα κλαδιά ενός τεράστιου δέντρου.
Διαχειριστής πακέτων
Στις μοντέρνες διανομές όπως το openSUSE, η εγκατάσταση των προγραμμάτων γίνεται μέσω του διαχειριστή πακέτων. Ο διαχειριστής πακέτων, που λειτουργεί πάνω από τα RPM, παίρνει τα πακέτα των προγραμμάτων από τις Πηγές Λογισμικού (online εξυπηρετητές, CDs, DVDs κ.α.), επιλύει τις εξαρτήσεις και τα εγκαθιστά στον υπολογιστή. Ο διαχειριστής πακέτων επίσης απεγκαθιστά εύκολα τα πακέτα αργότερα ή ακόμα και τα αναβαθμίζει με νέες εκδόσεις. Ο αριθμός των διαθέσιμων πακέτων εξαρτάται από ποιές πηγές λογισμικού έχετε προσθέσει.
Το openSUSE διαθέτει ως διαχειριστή πακέτων το YaST Software Management καθώς και το Zypper σε τερματικό, αν και η διανομή προσφέρεται με μια ποικιλία εργαλείων διαχειριστών πακέτων.
Πηγές Λογισμικού
Πριν εγκατασταθούν τα πακέτα, πρέπει να είναι διαθέσιμα στις Πηγές Λογισμικού, είτε με φυσικά μέσα όπως CD ή DVD είτε online μέσω του internet.
Οι πηγές λογισμικού του openSUSE περιέχουν:
- Επίσημες πηγές λογισμικού που περιέχουν δοκιμασμένα και υποστηριζόμενα πακέτα
- Πηγές λογισμικού τρίτων, όπως το Packman και μερικά αποθετήρια Build Service. Παρέχουν διάφορα επιπρόσθετα πακέτα, μερικά από τα οποία είναι πιο ενημερωμένα από πλευράς έκδοσης ή δεν είναι δυνατό να περιέχονται στο openSUSE για νομικούς λόγους, αν και είχαν λίγο χρόνο δοκιμής τους.