Το κάθε λειτουργικό σύστημα, το οποιοδήποτε λογισμικό, δημιουργείται από κώδικα, σε διάφορες γλώσσες προγραμματισμού. Αυτός ο κώδικας, επικοινωνεί με τον υπολογιστή, δίνοντας κάποιες εντολές οι οποίες πρέπει να εκτελεστούν, επειδή το ζητάει ο Χρήστης. Μια σειρά εντολών και επεξεργασιών του κώδικα, συντελείται κάθε στιγμή στους υπολογιστές μας, πίσω από κάθε ανοιχτό παράθυρο και από κάθε κλικ που κάνουμε. Όσοι είχαν υπολογιστές την δεκαετία του 90-00, είναι αδύνατο να μην θυμούνται τις βασικές εντολές που έπρεπε να δώσουν, προκειμένου να επικοινωνήσουν με το σύστημά τους, ακόμα και για να μπουν στο γραφικό περιβάλλον του.
Τα χρόνια περάσαν και όπως είναι ευνόητο, όλος αυτός ο κώδικας και οι διεργασίες κρύφτηκαν εντελώς από τα μάτια του/της καθημερνού/ής χρήστη/ριας, μα πάντα πίσω από κάθε ενέργεια που κάνουμε στον υπολογιστή μας, εκτελείται και μια εντολή ρουτίνας.
Παρ’ όλα αυτά, οι εξελίξεις είναι τέτοιες και οι προσαρμοσμένες ανάγκες, που ακόμα και η Microsoft είδε το λάθος της σε αυτό το σημείο και προσπαθεί να επαναφέρει στο προσκήνιο (μέσω του Linux) ένα παντοδύναμο εργαλείο που ονομάζεται bash / τερματικό / κονσόλα. Ένα εργαλείο, που ποτέ δεν έκρυψαν ή παρόπλισαν τα Unix-based λειτουργικά συστήματα, όπως το LInux, OSX, BSD κλπ.
Αν το σκεφτείτε και από μια άλλη πλευρά, στην ουσία οι εντολές που χρησιμοποιούμε στο τερματικό – ακολουθώντας κάποιες οδηγίες – δεν διαφέρουν από τις άλλες που καθοδηγούν μέσω γραφικού περιβάλλοντος, απλά αντί για κλικ και κλικ, κάνουμε επικόλληση κάποια/ες εντολή/ες (και πάντα, ΜΟΝΟ από σελίδες που εμπιστευόμαστε).
Το bonus είναι πως μέσω του τερματικού / κονσόλας, αν κάτι πάει στραβά, θα μας επιστρέψει κάποιο μήνυμα λάθους που με αυτό θα μπορέσουμε να βρούμε και την ουσιαστική λύση στο τυχόν πρόβλημα.
Όλες και όλοι, όταν χρησιμοποιήσουν Linux, από τις πρώτες εντολές που θα συναντήσουν, είναι οι: “sudo” και “su”, με τις οποίες λαμβάνουν δικαιώματα διαχειριστή (root), από το τερματικό / κονσόλα / bash τους και αμέσως μετά τις “apt-get” και “apt“.
Έχουμε ήδη δει σε παλαιότερο άρθρο, τις διαφορές ανάμεσα στις εντολές “sudo” και “su”, οπότε ας δούμε και τι διαφορές υπάρχουν στις “apt-get” και “apt”.
Όπως είναι ευνόητο και τα δυο έχουν την ίδια ρίζα που δεν είναι άλλη από το apt.
Τι είναι το APT:
Το apt, και όχι άδικα, έχει χαρακτηριστεί σαν ένα από τα σημαντικότερα χαρακτηριστικά της διανομής Debian και που φυσικά πέρασε και στις παράγωγες διανομές του, όπως στο Ubuntu και ούτω καθ’ εξής.
Η πλήρης ονομασία του προέρχεται από το Advanced Packaging Tool που σε ελεύθερη μετάφραση, θα το λέγαμε σαν Ανεπτυγμένο Εργαλείο Πακεταρίσματος. Όπως είναι ευνόητο, πρόκειται για Ελεύθερο Λογισμικό, μα δεν αποτελεί κάποιο συγκεκριμένο πρόγραμμα, αλλά ένα σύνολο από εργαλεία και βιβλιοθήκες που υποστηρίζουν την λειτουργικότητά του. Δηλαδή, μια διεπαφή , που βασίζεται σε βασικές βιβλιοθήκες (libs) με σκοπό να προσφέρει μια υπηρεσία πιο εύκολης διαχείρισης (εγκατάστασης / απεγκατάστασης) πακέτων λογισμικού. Κατά κάποιον τρόπο, εμφανίστηκε για να προσφέρει περισσότερη λειτουργικότητα και ευκολία συγκριτικά με το παλιότερο dpkg.
Ένα σημαντικό μέρος του apt είναι μια βιβλιοθήκη συναρτήσεων γραμμένη σε C++ (μαζεμένες σε ένα ξεχωριστό πακέτο, το libapt) η οποία χρησιμοποιείται από τα προγράμματα που χειρίζονται πακέτα, όπως το apt-get και το apt-cache. Αυτά είναι τα πιο συχνά χρησιμοποιούμενα λόγω της απλότητας και καθολικότητάς τους.
Ενώ το dpkg εκτελεί ενέργειες σε μεμονωμένα πακέτα, τα εργαλεία apt χειρίζονται σχέσεις (κυρίως εξαρτήσεις) ανάμεσα σ’ αυτά, καθώς και διαχείριση πηγών και διαχείριση υψηλού επιπέδου αποφάσεων σχετικές με εκδόσεις (παρακολούθηση έκδοσης και κάρφωμα έκδοσης).
Οι πιο συχνά χρησιμοποιημένες εντολές του apt-get είναι οι: apt-get install όνομα πακέτου , apt-get update, apt-get upgrade και apt-get dist-upgrade.
Δεν θα ήταν λοιπόν λάθος, να λέγαμε πως το apt είναι ένας πιο νέος διαχειριστής πακέτων για το Ubuntu και τις παράγωγες διανομές που πρακτικά κάνει ό,τι και το apt-get, μα είναι κατασκευασμένο ώστε να είναι πιο αποτελεσματικό, πιο ασφαλές και πιο φιλικό προς τον/την χρήστη.
Και ενώ υπάρχει η φημολογία πως η Canonical, μαζί με τις υπόλοιπες αλλαγές που φέρνει στο Ubuntu, ενδέχεται να καθιερώσει το apt, αντί του υπάρχοντος apt-get, ας δούμε ποιες είναι οι πιο σημαντικές διαφορές τους.
Διαφορές ανάμεσα σε apt-get και apt
Να πούμε, πως το apt-get, υπάρχει ήδη από την αρχή του Ubuntu σε κάθε έκδοσή του προεγκατεστημένο, όπως είναι ευνόητο, ενώ το apt εισήχθη στην έκδοση 16.04, αν και άλλες διανομές, όπως για παράδειγμα, το Linux Mint, το έχουν αρκετό καιρό πιο πριν.
Ο βασικός λόγος εισαγωγής του apt, δεν είναι άλλος από την απλοποίηση του διαχειριστή πακέτων και να συγχωνεύσει πολλαπλές εντολές σε μία μόνο εντολή. Οι λειτουργίες από το “apt-get” υπάρχουν και αυτές, ώστε να λειτουργήσουν με παρόμοιο τρόπο και από το apt. Όμως, παρά το γεγονός ότι αυτές οι νέες apt εντολές δημιουργήθηκαν για να λειτουργήσουν παρόμοια με τις apt-get εντολές, δεν έχουν δεσμεύσεις από τον τρόπο λειτουργίας τους και είναι εντελώς νέες και εντολές για να αλληλεπιδρούν με τα πακέτα λογισμικού.
To apt, έχει επανασχεδιαστεί από το μηδέν, ώστε να φέρει την ευχρηστία που μάλλον λείπει πια από το apt-get το οποίο έχει αρχίσει να δείχνει την ηλικία του. Όπως αναφέρεται στο apt manual, σκοπό αποτελεί το να είναι κάτι ευχάριστο για τους τελικούς χρήστες.
Όμως, ποιες ακριβώς οι διαφορές ανάμεσα σε αυτά τα δυο;
Στα γρήγορα, κάποιες διαφορές που μπορώ να σκεφτώ και ώστε να γίνουν πιο κατανοητές οι διαφορές, είναι τα εξής:
Ας πούμε, ότι θέλετε να καθαρίσετε τη μνήμη cache των πακέτων σας. Για συντομία, θα δίνατε την εντολή:
sudo apt-get autoremove
ώστε να εντοπίσετε και καθαρίσετε κάποιο/α πακέτο/α
Ή, αν θελήσατε να εντοπίσετε κάποιο πακέτο για πληροφορίες σχετικά με αυτό, θα δίνατε:
sudo apt-cache search
και φυσικά εισάγοντας τον κωδικό σας.
Με το apt όμως, αυτές οι εντολές έχουν αντικατασταθεί με:
apt remove
αντίστοιχα.
Αυτή είναι βασικά και η κυριότερη διαφορά, αφού ναι μεν το apt, χρησιμοποιεί προϋπάρχουσες εντολές του apt-get, μα το κάνει με πιο μαζεμένο και συνοπτικό τρόπο.
Μια ακόμα διαφορά, είναι πως το apt, έχει και μπάρα προόδου της διαδικασίας, κάτι που είναι χρήσιμο, ενώ είναι κάποιες ακόμα έξυπνες προσθήκες που κάνουν την διαφορά:
Για παράδειγμα, όταν ενημερώνετε τις πηγές λογισμικού με το apt-get, δεν έχετε έναν εύκολο τρόπο για να απαριθμήσετε τις εκκρεμείς ενημερώσεις.
Με το apt, αρκεί να δώσετε:
sudo apt update
και στην συνέχεια:
apt list --upgrade
Μικρά πράγματα που όμως κάνουν την διαφορά στα σημεία.
Αν δώσετε την εντολή:
apt --help
θα δείτε και την λίστα των εντολών του, οι οποίες αν και είναι παρόμοιες με του apt-get, είναι πιο εξορθολογισμένες.
Οι βασικές, είναι οι εξής:
- list – Μια λίστα με τα πακέτα σας, βασιζόμενη στις ονομασίες τους.
- search – Αναζήτηση για κάποιο πακέτο και την περιγραφή του.
- show – Εμφάνιση λεπτομερειών κάποιου πακέτου.
- update – Ενημέρωση των πακέτων της λίστας σας.
- install – Εγκατάσταση πακέτου/ων.
- remove – Αφαίρεση πακέτου/ων.
- upgrade – Αναβάθμιση του συστήματος και των εγκατεστημένων πακέτων του.
- full-upgrade – Αναβάθμιση του συστήματος με την αφαίρεση / εγκατάσταση / αναβάθμιση πακέτων.
- edit-sources – Επεξεργασία των Πηγών Λογισμικού (από πού, δηλαδή, θα λαμβάνετε ενημερώσεις).
Οι εντολές δηλαδή, θα είναι του στυλ:
apt --list
ή (όπου χρειάζονται δικαιώματα διαχειριστή (root) – που έχουν λιγοστέψει με την apt):
sudo apt update
Δίνοντας την εντολή:
man apt
θα ανοίξει το εγχειρίδιο χρήσης του και η τεκμηρίωσή του, όπου μπορείτε, αν θέλετε, να δείτε περισσότερα.
Για να γίνει πιο κατανοητό, κάποιες εντολές θα ήταν αυτές:
apt install package(s)
apt remove package(s)
apt search query
apt show package(s)
apt update
apt upgrade
apt list –installed
apt list –upgradable
apt edit-sources
apt autoremove
apt purge package(s)
apt autoclean
apt policy package(s)
apt depends package(s)
apt unhold package
apt download package
Με τα πιο πάνω λοιπόν, έγινε σαφής η διαφορά. Το apt-get, αποτελεί αναμφίβολα κάτι πολύ καλό και δοκιμασμένο επί χρόνια, μα είναι πια ηλικιωμένο. Όχι ακριβώς παρωχημένο, μα είναι ώρα για κάτι πιο απλό και πιο σύγχρονο, όπως αυτά που φέρνει το apt.
Μένει τώρα, να δούμε πότε θα αρχίσει να καθιερώνεται σε διανομές, ως ο default διαχειριστής πακέτων και αν θα το ενσωματώσει σύντομα η Canonical στο Ubuntu.