Τι είναι το APT και το Aptitude; και ποια είναι η πραγματική διαφορά μεταξύ τους;


Το Aptitude και το apt-get είναι δύο από τα δημοφιλή εργαλεία που χειρίζονται τη διαχείριση πακέτων. Και τα δύο είναι σε θέση να χειρίζονται όλα τα είδη δραστηριοτήτων σε πακέτα, όπως εγκατάσταση, αφαίρεση, αναζήτηση κ.λπ. Ωστόσο, εξακολουθούν να υπάρχουν διαφορές μεταξύ των δύο εργαλείων που κάνουν τους χρήστες να προτιμούν το ένα έναντι του άλλου. Ποιες είναι αυτές οι διαφορές που κάνουν αυτά τα δύο εργαλεία να εξετάζονται χωριστά είναι το πεδίο εφαρμογής αυτού του άρθρου.

Τι είναι το Apt

Το Apt ή το Advanced Packaging Tool είναι ένα δωρεάν λογισμικό ανοιχτού κώδικα που χειρίζεται με χάρη την εγκατάσταση και την αφαίρεση λογισμικού. Αρχικά σχεδιάστηκε για τα πακέτα .deb του Debian, αλλά έχει γίνει συμβατό με το RPM Package Manager.

Το Apt είναι ολόκληρη η γραμμή εντολών χωρίς GUI. Κάθε φορά που καλείται από τη γραμμή εντολών μαζί με τον καθορισμό του ονόματος του πακέτου που πρόκειται να εγκατασταθεί, βρίσκει αυτό το πακέτο στη διαμορφωμένη λίστα πηγών που καθορίζεται στο '/etc/apt/sources.list' μαζί με τη λίστα των εξαρτήσεων για αυτό το πακέτο και τα ταξινομεί και τα εγκαθιστά αυτόματα μαζί με το τρέχον πακέτο, επιτρέποντας έτσι στον χρήστη να μην ανησυχεί για την εγκατάσταση εξαρτήσεων.

Είναι εξαιρετικά ευέλικτο επιτρέποντας στον χρήστη να ελέγχει εύκολα διάφορες διαμορφώσεις, όπως: προσθήκη οποιασδήποτε νέας πηγής για αναζήτηση πακέτων, apt-pinning, δηλαδή επισήμανση οποιουδήποτε πακέτου μη διαθέσιμο κατά την αναβάθμιση του συστήματος, καθιστώντας έτσι την τρέχουσα έκδοση του να είναι εγκατεστημένη η τελική του έκδοση, \έξυπνη αναβάθμιση, δηλαδή αναβάθμιση των πιο σημαντικών πακέτων και αφαίρεση των λιγότερο σημαντικών.

Τι είναι το Aptitude;

Το Aptitude είναι εργαλείο συσκευασίας από το front-end to advanced που προσθέτει μια διεπαφή χρήστη στη λειτουργικότητα, επιτρέποντας έτσι στον χρήστη να αναζητήσει διαδραστικά ένα πακέτο και να το εγκαταστήσει ή να το αφαιρέσει. Αρχικά δημιουργήθηκε για το Debain, το Aptitude επεκτείνει τη λειτουργικότητά του και σε διανομές βάσει RPM.

Η διεπαφή χρήστη του βασίζεται στη βιβλιοθήκη ncurses η οποία προσθέτει διάφορα στοιχεία σε αυτήν που εμφανίζονται συνήθως στα GUI. Ένα από τα κυριότερα σημεία του είναι ότι μπορεί να μιμηθεί τα περισσότερα από τα ορίσματα της γραμμής εντολών του apt-get.

Συνολικά, το Aptitude είναι ένας διαχειριστής πακέτων υψηλότερου επιπέδου που αφαιρεί λεπτομέρειες χαμηλού επιπέδου και μπορεί να λειτουργήσει τόσο σε λειτουργία διαδραστικής διεπαφής χρήστη που βασίζεται σε κείμενο όσο και σε μη διαδραστική λειτουργία γραμμής εντολών.

Εάν θέλετε να μάθετε τη χρήση του APT και του Aptitude με παραδείγματα πραγματικού κόσμου, θα πρέπει να ανατρέξετε στα παρακάτω άρθρα.

  1. Μάθετε 25 χρήσιμα παραδείγματα για το APT-GET και το APT-CACHE
  2. Μάθετε Διαχείριση πακέτων Linux με Aptitude και Dpkg

Ποιες είναι οι διαφορές μεταξύ APT και Aptitude;

Εκτός από την κύρια διαφορά είναι ότι το Aptitude είναι ένας διαχειριστής πακέτων υψηλού επιπέδου, ενώ το APT είναι ο διαχειριστής πακέτων χαμηλότερου επιπέδου που μπορεί να χρησιμοποιηθεί από άλλους διαχειριστές πακέτων υψηλότερου επιπέδου, άλλοι κύριοι Τα κυριότερα σημεία που διαχωρίζουν αυτούς τους δύο διαχειριστές πακέτων είναι:

    Το
  1. Aptitude έχει μεγαλύτερη λειτουργικότητα από το apt-get και ενσωματώνει λειτουργίες του apt-get και των άλλων παραλλαγών του, συμπεριλαμβανομένων των apt-mark και apt-cache.

Ενώ το apt-get χειρίζεται όλη την εγκατάσταση πακέτου, την αναβάθμιση, την αναβάθμιση συστήματος, την εκκαθάριση του πακέτου, την επίλυση εξαρτήσεων κ.λπ., το Aptitude χειρίζεται πολύ περισσότερα πράγματα από το apt, συμπεριλαμβανομένων των λειτουργιών του apt-mark και apt-cache, δηλαδή αναζήτηση ενός πακέτου στη λίστα εγκατεστημένων πακέτων, επισήμανση ενός πακέτου για αυτόματη ή μη αυτόματη εγκατάσταση, κράτημα ενός πακέτου που το καθιστά μη διαθέσιμο για αναβάθμιση και ούτω καθεξής.

  1. Ενώ το apt-get στερείται διεπαφής χρήστη, το Aptitude διαθέτει διεπαφή χρήστη μόνο κειμένου και διαδραστική

Το Apt-get ως διαχειριστής πακέτων χαμηλότερου επιπέδου περιορίζεται μόνο στη γραμμή εντολών, ενώ το Aptitude ως εργαλείο υψηλότερου επιπέδου έχει μια προεπιλεγμένη διαδραστική διεπαφή μόνο κειμένου μαζί με επιλογή λειτουργίας γραμμής εντολών με την εισαγωγή απαιτούμενων εντολές.

  1. Το Aptitude έχει καλύτερη διαχείριση πακέτων από το apt-get

Σε πολλές περιπτώσεις που περιλαμβάνουν εγκατάσταση, αφαίρεση και επίλυση συγκρούσεων για πακέτα, το Aptitude αποδεικνύει την αξία του και όχι το apt-get. Μερικές από τις καταστάσεις περιλαμβάνουν:

1. Κατά την κατάργηση οποιουδήποτε εγκατεστημένου πακέτου, το Aptitude θα καταργήσει αυτόματα τα πακέτα που δεν χρησιμοποιούνται, ενώ το apt-get θα χρειαστεί ο χρήστης να το καθορίσει ρητά είτε προσθέτοντας πρόσθετη επιλογή '—auto-remove' ή τον καθορισμό του 'apt-get autoremove'.4

2. Για να διερευνήσετε περαιτέρω γιατί αποκλείεται μια συγκεκριμένη ενέργεια ή γιατί ή γιατί-όχι πρέπει να γίνει μια συγκεκριμένη ενέργεια, το Aptitude προσφέρει τα γιατί και 'γιατί- εντολές not'.

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

$ aptitude why yaws-wiki
i   doc-base  Suggests   dhelp | dwww | doc-central | yelp | khelpcenter4
p   dwww      Depends    apache2 | httpd-cgi
p   yaws      Provides   httpd-cgi
p   yaws      Suggests   yaws-wiki

Όπως εδώ, έψαξε για τον λόγο εγκατάστασης ενός πακέτου με το όνομα yaws-wiki για να είναι ότι προτείνεται από μια εξάρτηση (yaws) που παρέχει ένα εικονικό πακέτο ( Το httpd-cgi) στο οποίο το πακέτο (dwww) έχει εξάρτηση και το πακέτο (dwww) προτείνεται από ένα από τα εγκατεστημένα πακέτα με το όνομα doc-base .

Αυτή η δυνατότητα λείπει στο apt-get.

3. Ενώ το apt-get πιθανότατα θα σβήσει σε περίπτωση αντικρουόμενων ενεργειών σχετικά με την εγκατάσταση ή την αφαίρεση του πακέτου με ένα μήνυμα, το Aptitude μπορεί να προτείνει πιθανά μέτρα για την άρση αυτής της σύγκρουσης.

Το Aptitude παρέχει μια ισχυρή αναζήτηση που μπορεί να χρησιμοποιηθεί για την αναζήτηση σχεδόν οποιουδήποτε πακέτου όχι μόνο στο σύστημα αλλά και σε ολόκληρο το αποθετήριο.

Ενώ το apt-get χρειάζεται μια άλλη παραλλαγή του apt, π.χ. apt-cache για να αναζητήσει ένα πακέτο, το Aptitude παρέχει πολύ πιο εύκολο και αποτελεσματικό τρόπο αναζήτησης για ένα πακέτο που είναι είτε εγκατεστημένο είτε παρόν στο αποθετήριο αλλά δεν έχει εγκατασταθεί ακόμη.

Αναζήτηση πακέτου χρησιμοποιώντας apt-cache vs Aptitude

$ apt-cache search 'python' | head -n4
kate - powerful text editor
kcachegrind-converters - format converters for KCachegrind profiler visualisation tool
kig - interactive geometry tool for KDE
python-kde4 - Python bindings for the KDE Development Platform

$ aptitude search 'python' | head -n4
i   bpython                         - fancy interface to the Python interpreter 
p   bpython-gtk                     - fancy interface to the Python interpreter 
p   bpython-urwid                   - fancy interface to the Python interpreter 
p   bpython3                        - fancy interface to the Python3 interpreter

Εδώ, από προεπιλογή τόσο η apt-cache όσο και η aptitude αναζητούν ένα πακέτο σε ολόκληρη τη λίστα πακέτων στο αποθετήριο, αλλά η έξοδος aptitude δείχνει εάν το πακέτο είναι εγκατεστημένο στο σύστημα ή όχι δίνοντας μια σημαία ανά πακέτο που εδώ είναι p που υποδεικνύει ότι το πακέτο υπάρχει αλλά δεν είναι εγκατεστημένο και i που υποδεικνύει ότι το πακέτο είναι εγκατεστημένο, ενώ το apt-cache απλώς παραθέτει το πακέτο και η λεπτομέρεια μιας γραμμής του χωρίς να λέμε εάν το πακέτο είναι εγκατεστημένο ή όχι.

Μερικά άλλα παραδείγματα σύνθετης αναζήτησης πακέτων με το Aptitude

1. Αναζήτηση για ένα πακέτο στο αποθετήριο με python2.7 στο όνομα του πακέτου και 2.7 στην περιγραφή του.

$ aptitude search '~npython2.7 ~d2.7'
p   idle-python2.7                   - IDE for Python (v2.7) using Tkinter       
i   libpython2.7                     - Shared Python runtime library (version 2.7
p   libpython2.7:i386                - Shared Python runtime library (version 2.7
p   libpython2.7-dbg                 - Debug Build of the Python Interpreter (ver
p   libpython2.7-dbg:i386            - Debug Build of the Python Interpreter (ver
i A libpython2.7-dev                 - Header files and a static library for Pyth
p   libpython2.7-dev:i386            - Header files and a static library for Pyth
i   libpython2.7-minimal             - Minimal subset of the Python language (ver
p   libpython2.7-minimal:i386        - Minimal subset of the Python language (ver
i   libpython2.7-stdlib              - Interactive high-level object-oriented lan
p   libpython2.7-stdlib:i386         - Interactive high-level object-oriented lan
p   libpython2.7-testsuite           - Testsuite for the Python standard library 
i   python2.7                        - Interactive high-level object-oriented lan
p   python2.7:i386                   - Interactive high-level object-oriented lan
p   python2.7-dbg                    - Debug Build of the Python Interpreter (ver
p   python2.7-dbg:i386               - Debug Build of the Python Interpreter (ver
i A python2.7-dev                    - Header files and a static library for Pyth
p   python2.7-dev:i386               - Header files and a static library for Pyth
p   python2.7-doc                    - Documentation for the high-level object-or
p   python2.7-examples               - Examples for the Python language (v2.7)   
i   python2.7-minimal                - Minimal subset of the Python language (ver
p   python2.7-minimal:i386           - Minimal subset of the Python language (ver

Εδώ το ~n υποδηλώνει όνομα και το ~d υποδεικνύει περιγραφή. Μια άλλη μορφή της ίδιας εντολής είναι:

$ aptitude search '?name(python2.7) ?description(2.7)'

  1. ~i ή ?installed(): Αναζήτηση πακέτου μόνο στη λίστα των εγκατεστημένων πακέτων.
  2. ~U ή ~Με δυνατότητα αναβάθμισης: Εμφανίζει όλα τα πακέτα που μπορούν να αναβαθμιστούν με τις πιο πρόσφατες διαθέσιμες εκδόσεις τους.
  3. ~E ή ?Essential(): Αυτά τα πακέτα είτε είναι εγκατεστημένα είτε διαθέσιμα, τα οποία είναι απαραίτητα.

$ aptitude versions '?Upgradable' | head -n 12
Package apache2:
ph  2.4.7-1ubuntu4                                trusty                    500 
ph  2.4.7-1ubuntu4.5                              trusty-security           500 
ih  2.4.7-1ubuntu4.8                                                        100 
ph  2.4.7-1ubuntu4.9                              trusty-updates            500 

Package apache2-bin:
p A 2.4.7-1ubuntu4                                trusty                    500 
p A 2.4.7-1ubuntu4.5                              trusty-security           500 
i A 2.4.7-1ubuntu4.8                                                        100 
p A 2.4.7-1ubuntu4.9                              trusty-updates            500 

Όπως μια σύντομη λίστα που εμφανίζεται εδώ με 3 πακέτα με εγκατεστημένη έκδοση (υποδεικνύεται με i) και την παρούσα έκδοση με δυνατότητα αναβάθμισης (υποδεικνύεται με p).

2. Εύρεση όλων των πακέτων που παρέχουν μια συγκεκριμένη υπηρεσία

Για να βρείτε όλα τα πακέτα που παρέχουν την υπηρεσία smtp:

$ aptitude search '?provides(smtp)'
p   libghc-smtpclient-dev            - Simple Haskell SMTP client library        
p   libghc-smtpclient-dev:i386       - Simple Haskell SMTP client library        
p   libghc-smtpclient-prof           - Simple Haskell SMTP client library; profil
p   libghc-smtpclient-prof:i386      - Simple Haskell SMTP client library; profil
p   syslog-ng-mod-smtp               - Enhanced system logging daemon (SMTP plugi
p   syslog-ng-mod-smtp:i386          - Enhanced system logging daemon (SMTP plugi

3. Εύρεση όλων των πακέτων που προτείνουν ένα συγκεκριμένο πακέτο

Όπως εδώ, παραθέτουμε όλα τα πακέτα που προτείνουν πακέτο gcc.

$ aptitude search '~DSuggests:gcc' | head -n10
p   bochs                           - IA-32 PC emulator                         
p   bochs:i386                      - IA-32 PC emulator                         
p   cpp-4.4                         - GNU C preprocessor                        
p   cpp-4.4:i386                    - GNU C preprocessor                        
p   cpp-4.6                         - GNU C preprocessor                        
p   cpp-4.6:i386                    - GNU C preprocessor                        
p   cpp-4.7                         - GNU C preprocessor                        
p   cpp-4.7:i386                    - GNU C preprocessor                        
p   cpp-4.7-arm-linux-gnueabi       - GNU C preprocessor                        
p   cpp-4.7-arm-linux-gnueabi:i386  - GNU C preprocessor 

συμπέρασμα

Έτσι, για τις περισσότερες περιπτώσεις, η σύνταξη του Aptitude διατηρείται σχεδόν ίδια με του apt-get, για να κάνει τους χρήστες του apt-get να έχουν λιγότερο πόνο στη μετάβαση στο Aptitude , αλλά εκτός από αυτό, πολλά ισχυρά χαρακτηριστικά είναι ενσωματωμένα στο Aptitude που το κάνουν αυτό που πρέπει να επιλεγεί. Εκτός από αυτές τις διαφορές που επισημάναμε, αν βρείτε άλλες ενδιαφέρουσες διαφορές μεταξύ αυτών των δύο διαχειριστών πακέτων, αναφέρετέ τις στα σχόλιά σας.