Qual è la differenza tra apt-get e aptitude?


56

Non capisco perché ci sono due diversi programmi in un'installazione minima per installare il software. Non fanno la stessa cosa? C'è una grande differenza? Ho letto ovunque per usare aptitude su apt-get ma non conosco ancora la differenza

Risposte:


48

aptitude è un wrapper per dpkg proprio come apt-get / apt-cache, ma è uno strumento one-stop-shop per la ricerca / installazione / rimozione / interrogazione. Alcuni esempi che apt potrebbe non fornire:

$ aptitude why libc6
i   w64codecs Depends libc6 (>= 2.3.2)
$ aptitude why-not libc6
Unable to find a reason to remove libc6.

$ aptitude show libc6
Package: libc6
State: installed
Automatically installed: no
Version: 2.9-4ubuntu6
Priority: required
Section: libs
Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 12.1M
Depends: libgcc1, findutils (>= 4.4.0-2ubuntu2)
Suggests: locales, glibc-doc
Conflicts: libterm-readline-gnu-perl (< 1.15-2), 
tzdata (< 2007k-1), tzdata-etch, nscd (< 2.9)
Replaces: belocs-locales-bin
Provides: glibc-2.9-1
Description: GNU C Library: Shared libraries
 Contains the standard libraries that are used by nearly all programs 
 on the system. This package includes shared versions of the standard 
 C library and the standard math library, as well as many others.

10
per non parlare: $ aptitude changelog bash
pg

Altri trucchi che aptitudesanno che anche gli ultimi aptnon possono fare: aptitude search '~i linux'cerca pacchetti con linuxnome o descrizione installati; aptitude search '~o'elenca i pacchetti obsoleti (pacchetti installati che non sono più forniti da nessun repository); aptitude search '!~M ~i'mostra i pacchetti che non sono contrassegnati come installati automaticamente; aptitude search '~i lib.*-dev'mostra le librerie di sviluppo installate e puoi sostituirle searchcon markautoo unmarkautoper contrassegnare questi pacchetti come installati automaticamente o manualmente.
Mikko Rantalainen,

44
mikeage@linode ~$ aptitude -h | tail -n 1
              This aptitude does not have Super Cow Powers.
mikeage@linode ~$ apt-get -h | tail -n 1
                   This APT has Super Cow Powers.
mikeage@linode ~$ aptitude moo
    There are no Easter Eggs in this program.
mikeage@linode ~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...
mikeage@linode ~$ aptitude -v moo
There really are no Easter Eggs in this program.
mikeage@linode ~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
mikeage@linode ~$ aptitude -vvv moo
Stop it!
mikeage@linode ~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
mikeage@linode ~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
mikeage@linode ~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course. 

19

Lo strumento ufficiale attualmente utilizzato nel programma di installazione di Debian e raccomandato nelle note di rilascio è aptitude.

Aptitude offre un'interfaccia curses (se eseguita senza alcun parametro) e un'interfaccia a riga di comando che può fare quasi tutto ciò che apt-cache/ apt-getfa. Ha anche un miglior risolutore di dipendenze che ti consente di navigare tra più soluzioni. Anche quando si utilizza la versione da riga di comando, è possibile interagire con la soluzione proposta e fornire ordini o suggerimenti supplementari (come l'installazione o la rimozione di un pacchetto consigliato da un altro).

Ma aptitude si basa sulla libreria libapt (non è un wrapper diretto di dpkg) e come tale dipende dal aptpacchetto, quindi non è possibile installare aptitude senza apt-get (che è anche nel pacchetto apt).

$ dpkg --status aptitude| grep Depends
Depends: libapt-pkg-libc6.9-6-4.7, [...]
$ dpkg --status apt|grep Provides
Provides: libapt-pkg-libc6.9-6-4.7
$ dpkg --search /usr/lib/libapt-pkg-libc6.9-6.so.4.7 /usr/bin/apt-get
apt: /usr/lib/libapt-pkg-libc6.9-6.so.4.7
apt: /usr/bin/apt-get

Per saperne di più su come interagiscono apt / dpkg / aptitude puoi controllare il diagramma realizzato da Daniel Burrows (autore principale di aptitude). Un altro diagramma presenta le informazioni memorizzate dai vari strumenti di gestione dei pacchetti: una mappa dei file di stato apt e dpkg .

Puoi anche leggere il mio articolo apt-get, aptitude, ... scegli il gestore pacchetti giusto per te


7

aptitudericorda quali pacchetti sono stati installati deliberatamente e quali sono stati installati automaticamente per soddisfare le dipendenze. Al momento della rimozione di un pacchetto aptitude rimuoverà quei pacchetti installati automaticamente per mantenere il sistema in ordine. apt-getnon è così intelligente.

aptitudediventerà rapidamente uno strumento indispensabile dopo aver utilizzato repository diversi con versioni diverse di un pacchetto. Immagina di lavorare con backports.org o repository non ufficiali come debian-multimedia.org . Quindi aptitudemostrerà (nella parte inferiore della pagina dei dettagli di un determinato pacchetto) il numero di versione disponibile e ti permetterà di selezionarne uno.

Se ti trovi in ​​una situazione in cui i programmi sono in conflitto a causa di tale utilizzo di repository non ufficiali, vedrai un display "Broken: ..." in alto. È possibile digitare l ~ b (limit / flag / broken) e ottenere semplicemente un elenco di pacchetti in conflitto tra loro. Semplifica molto la risoluzione manuale del conflitto.

Inoltre è possibile utilizzare " l" per limitare l'elenco dei pacchetti. Immagina di cercare pacchetti che iniziano con " openoffice ", quindi premi " l" e digita " ^openoffice" (è un'espressione regolare) e vedrai solo quei pacchetti. Scegli un "elenco di pacchetti flat" dal menu e raggiungerai rapidamente il tuo obiettivo.

Il manuale completo è molto ampio e offre molti più filtri e possibilità. Anche se non li conosci aptitudeè un comodo sostituto apt-gete puoi usarlo con parametri comuni come:

aptitude install ... (install or upgrade a package)
aptitude remove ... (remove the binary portions of a package but preserve your /etc configuration)
aptitude purge ... (remove the package completely including your configuration)

2
In realtà, a partire da Lenny, apt-get tiene traccia dei pacchetti installati solo come dipendenze di qualcosa che hai esplicitamente richiesto. Uso me stesso aptitude, ma apt-get autoremoveora rimuovo i pacchetti installati come dipendenze di un pacchetto che è stato rimosso.
Telemaco,

Oggigiorno si può anche usare solo apted è possibile fare una miscela di roba che apt-gete apt-cacheusato per fare. Ad esempio, apt search fooelencherà i pacchetti che contengono foonel nome o nella descrizione. apt install fooinstallerà il pacchetto chiamato foose disponibile e apt policy fooelencherà la versione attualmente installata e tutte le versioni disponibili del pacchetto foo.
Mikko Rantalainen,

Il aptitudepuò ancora fare di più, aptma la pianura aptè spesso molto più veloce.
Mikko Rantalainen,

5

Oltre a fornire un'interfaccia utente della console carina quando si esegue aptitudesenza argomenti, combina i vari apt-*comandi (e dselect) in un'unica utility.

Per cercare un pacchetto e installarlo, usando apt-get:

apt-cache search somepkg
apt-get install somepkg

..ma con aptitude è lo stesso comando:

aptitude search somepkg
aptitude install somepkg

aptitudeha alcune funzionalità aggiuntive, come aptitude changelog somepkge cose come tenere i pacchetti (per impedire che vengano aggiornati) - niente che non si possa ottenere tramite altri comandi / metodi, è solo più unificato e piacevole da usare.


3
peccato che non abbia un equivalente "criterio apt-cache".
hayalci,

4

come sai quando installi un pacchetto se ha bisogno di altri pacchetti (dipendenze), anche questi verranno scaricati e installati. aptitude tiene traccia, al momento dell'installazione, dei pacchetti forniti con quello installato, quindi quando rimuovi quest'ultima aptitude ti chiederà la rimozione delle altre dipendenze "orfane" (ora inutilizzate). apt-get li manterrà nel tuo sistema in silenzio se rimuovi il pacchetto "principale".

sembra che le ultime versioni di apt-get abbiano una funzionalità simile: http://www.psychocats.net/ubuntu/aptitude


aptitudeo aptin realtà non mantiene l'elenco dei pacchetti installati come dipendenze per un determinato pacchetto. Tiene semplicemente traccia di un pacchetto installato manualmente o automaticamente. E se un pacchetto è stato contrassegnato come installato automaticamente e nessun altro pacchetto dipende o lo consiglia, verrà rimosso con apt autoremoveo aptitude dist-upgrade.
Mikko Rantalainen,

3

La differenza più grande è che aptitude è progettato per essere interattivo dove gli strumenti apt sono più adatti per il lavoro di scripting. È possibile utilizzare quest'ultimo, cioè gli strumenti apt, in modo interattivo bene con uno sforzo molto maggiore per ottenere gli stessi risultati forniti da aptitude. Se per qualche motivo dovessi accontentarti di un solo strumento o di un altro, devi decidere quanti sforzi vuoi dedicare alla gestione dei pacchetti.


1

Uno dei seri vantaggi di attitudine è la sua capacità di calcolare le dipendenze. In primo luogo è in grado di gestire complicate interdipendenze senza intervento da parte dell'utente, che spesso fallisce apt-get. Ma se non ti piace la soluzione che ti ha presentato (e valuterà la propria soluzione per dimostrare quanto è bravo a pensare), puoi chiedergli di andare via e trovare un'altra soluzione per risolvere il conflitto.

Fa davvero una straordinaria gestione dei pacchetti.


1

La differenza più grande è: digitare "aptitude" senza parametri.

Ti dà un'interfaccia utente basata su testo, puoi usare il keybord per cercare / navigare ecc. Vedi informazioni su dipendenze, dipendenze inverse, tutte le versioni disponibili di un pacchetto e puoi fare qualsiasi operazione di gestione dei pacchetti su di loro da quella schermata.

È possibile premere "g" per rivedere le modifiche, modificare le aggiunte e le rimozioni del pacchetto, se necessario, e applicare tutte le operazioni in sospeso.

Un ottimo modo visivo di gestione dei pacchetti tramite una connessione ssh o un semplice vecchio terminale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.