Ricerca nel sito web

Cos'è APT e Aptitude? e qual è la vera differenza tra loro?


Aptitude e apt-get sono due degli strumenti più diffusi che gestiscono la gestione dei pacchetti. Entrambi sono in grado di gestire tutti i tipi di attività sui pacchetti, inclusa l'installazione, la rimozione, la ricerca, ecc. Ma ci sono comunque differenze tra i due strumenti che fanno sì che gli utenti preferiscano l'uno rispetto all'altro. Quali sono le differenze che rendono questi due strumenti da considerare separatamente è lo scopo di questo articolo.

Cos'è Apt

Apt o Advanced Packaging Tool è un software gratuito e open source che gestisce con garbo l'installazione e la rimozione del software. Inizialmente è stato progettato per i pacchetti .deb di Debian ma è stato reso compatibile con RPM Package Manager.

Apt è un'intera riga di comando senza GUI. Ogni volta che viene richiamato dalla riga di comando insieme alla specifica del nome del pacchetto da installare, trova quel pacchetto nell'elenco configurato delle origini specificate in '/etc/apt/sources.list' insieme all'elenco delle dipendenze per quel pacchetto, li ordina e li installa automaticamente insieme al pacchetto corrente, consentendo così all'utente di non preoccuparsi di installare le dipendenze.

È altamente flessibile e consente all'utente di controllare facilmente varie configurazioni, come: aggiungere qualsiasi nuova fonte per cercare pacchetti, apt-pinning, ovvero contrassegnare qualsiasi pacchetto non disponibile durante l'aggiornamento del sistema, rendendo così la versione corrente la versione finale installata, aggiornamento “intelligente”, ovvero aggiornare i pacchetti più importanti e lasciare quelli meno importanti.

Cos'è l'attitudine?

Aptitude è il front-end di uno strumento di creazione pacchetti avanzato che aggiunge un'interfaccia utente alla funzionalità, consentendo così all'utente di cercare in modo interattivo un pacchetto e installarlo o rimuoverlo. Inizialmente creato per Debain, Aptitude estende le sue funzionalità anche alle distribuzioni basate su RPM.

La sua interfaccia utente è basata sulla libreria ncurses che aggiunge vari elementi comunemente visti nelle GUI. Uno dei suoi punti forti è che può emulare la maggior parte degli argomenti della riga di comando di apt-get.

Nel complesso, Aptitude è un gestore di pacchetti di livello superiore che astrae i dettagli di basso livello e può operare sia in modalità interfaccia utente interattiva basata su testo che anche in modalità non interattiva a riga di comando.

Se vuoi conoscere l'utilizzo di APT e Aptitude con esempi reali, dovresti consultare i seguenti articoli.

  1. Scopri 25 esempi utili su APT-GET e APT-CACHE
  2. Scopri la gestione dei pacchetti Linux con Aptitude e Dpkg

Quali sono le differenze tra APT e Aptitude?

A parte la differenza principale che Aptitude è un gestore di pacchetti di alto livello mentre APT è un gestore di pacchetti di livello inferiore che può essere utilizzato da altri gestori di pacchetti di livello superiore, altri i punti salienti che separano questi due gestori di pacchetti sono:

  1. Aptitude è più vasto in termini di funzionalità rispetto a apt-get e integra funzionalità di apt-get e delle sue altre varianti tra cui apt-mark e apt -cache.

Mentre apt-get gestisce tutta l'installazione del pacchetto, l'aggiornamento, l'aggiornamento del sistema, l'eliminazione del pacchetto, la risoluzione delle dipendenze, ecc., Aptitude gestisce molte più cose di apt, comprese le funzionalità di apt-mark e apt-cache, ovvero cercare un pacchetto nell'elenco dei pacchetti installati, contrassegnare un pacchetto da installare automaticamente o manualmente, trattenere un pacchetto rendendolo non disponibile per l'aggiornamento e così via.

  1. Mentre apt-get è privo di interfaccia utente, Aptitude ha un'interfaccia utente interattiva e di solo testo

Apt-get essendo un gestore di pacchetti di livello inferiore è limitato solo alla riga di comando, mentre Aptitude essendo uno strumento di livello superiore ha un'interfaccia interattiva predefinita di solo testo insieme all'opzione di operazione da riga di comando inserendo obbligatorio comandi.

  1. Aptitude ha una gestione dei pacchetti migliore rispetto a apt-get

In molte situazioni che coinvolgono l'installazione, la rimozione e la risoluzione dei conflitti per i pacchetti, Aptitude dimostra il suo valore piuttosto che apt-get. Alcune delle situazioni includono:

1. Durante la rimozione di qualsiasi pacchetto installato, Aptitude rimuoverà automaticamente i pacchetti inutilizzati, mentre apt-get richiederebbe all'utente di specificarlo esplicitamente aggiungendo opzione aggiuntiva di '—auto-remove' o specificando 'apt-get autoremove'.4

2. Per indagare ulteriormente sul motivo per cui una determinata azione viene bloccata o sul perché o perché non dovrebbe essere intrapresa una determinata azione, Aptitude offre 'perché' e ' comandi "perché no".

Mi piace: Aptitude può trovare il motivo per installare un determinato pacchetto cercando nell'elenco dei pacchetti installati e controllando se qualcuno dei pacchetti suggeriti ha delle dipendenze o se una qualsiasi delle loro dipendenze suggerisce quel pacchetto o così via .

$ 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

Ad esempio, qui ha cercato il motivo per installare un pacchetto chiamato 'yaws-wiki' perché è suggerito da una dipendenza (yaws) che fornisce un pacchetto virtuale (httpd-cgi) da quale pacchetto (dwww) ha una dipendenza e il pacchetto (dwww) è suggerito da uno dei pacchetti installati denominato ' doc-base'.

Questa funzionalità manca in apt-get.

3. Mentre apt-get probabilmente scomparirebbe in caso di azioni contrastanti riguardanti l'installazione o la rimozione del pacchetto con un messaggio, Aptitude può suggerire possibili misure per eliminare tale conflitto.

Aptitude fornisce una potente ricerca che può essere utilizzata per cercare quasi tutti i pacchetti non solo nel sistema ma anche nell'intero repository.

Mentre apt-get necessita di un'altra variante di apt, ovvero apt-cache per cercare un pacchetto, Aptitude fornisce un modo molto più semplice ed efficiente per cercare un pacchetto installato o presente nel repository ma ancora da installare.

Ricerca di un pacchetto utilizzando 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

Qui, per impostazione predefinita, sia apt-cache che aptitude cercano un pacchetto nell'intero elenco di pacchetti nel repository, ma l'output di aptitude mostra se il pacchetto è installato sul sistema o non fornendo un flag per pacchetto che qui è 'p' che indica che il pacchetto è presente ma non installato e 'i' che indica che il pacchetto è installato, mentre apt -cache elenca semplicemente il pacchetto e i suoi dettagli su una riga senza dire se il pacchetto è installato o meno.

Alcuni altri esempi di ricerca avanzata di pacchetti con Aptitude

1. Ricerca di un pacchetto nel repository con 'python2.7' nel nome del pacchetto e '2.7' nella sua descrizione.

$ 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

Qui '~n' indica il nome e '~d' indica la descrizione. Un'altra forma dello stesso comando è:

aptitude search '?name(python2.7) ?description(2.7)'
Alcuni altri flag includono:
  1. ~i o ?installed(): ricerca di un pacchetto solo nell'elenco dei pacchetti installati.
  2. ~U o ~Aggiornabile: elenca tutti i pacchetti aggiornabili con le ultime versioni disponibili.
  3. ~E o ?Essential(): quei pacchetti installati o disponibili, che sono essenziali.
$ 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 

Come un breve elenco mostrato qui di 3 pacchetti con versione installata (indicata con 'i') e la loro versione aggiornabile presente (indicata con 'p').

2. Trovare tutti i pacchetti che forniscono un particolare servizio

Per trovare tutti i pacchetti che forniscono il servizio 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. Trovare tutti i pacchetti che suggeriscono un determinato pacchetto

Come qui, elenchiamo tutti i pacchetti che suggeriscono il pacchetto '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 

Conclusione

Pertanto, nella maggior parte dei casi, la sintassi di Aptitude viene mantenuta quasi identica a quella di apt-get, per fare in modo che gli utenti di apt-get abbiano meno difficoltà nella migrazione ad Aptitude , ma oltre a questo, in Aptitude sono integrate molte potenti funzionalità che lo rendono quello da scegliere. Oltre a queste differenze che abbiamo evidenziato, se trovi altre differenze interessanti tra questi due gestori di pacchetti, menzionale nei tuoi commenti.