Qual è la vera differenza tra "apt-get" e "aptitude"? (Che ne dici di "wajig"?)


256

So che sia apt-gete aptitudesono interfacce di gestione dei pacchetti riga di comando su Debian Linux derivate, con diverse opzioni, ma io sono ancora un po 'confuso. Sotto il cofano, non usano lo stesso sistema APT?

Perché Debian mantiene questi strumenti paralleli? (Domanda bonus: cosa diavolo è wajig ?)


So che non è il risponditore corretto per la tua domanda, ma perché non puoi provare Synaptic? è molto gentile e scarica e installa automaticamente le dipendenze. Gnome non è presente sul tuo sistema?
Hemant,

Sono di parte, ma penso che questa domanda sul sito Ubuntu SE possa essere rilevante.
David Z,


@Wim a causa della parte wajig di questa domanda ho deciso di unire 244 in questa domanda anziché viceversa
xenoterracide

1
Vale la pena notare che aptitude è previsto per la rimozione dall'installazione predefinita sulla prossima versione di Ubuntu (anche se è sempre possibile installarlo usando apt-get in seguito)
Rob Cowell,

Risposte:


223

La differenza più evidente è che aptitudefornisce un'interfaccia di menu terminale (molto simile a Synaptic in un terminale), mentre apt-getnon lo è.

Considerando solo le interfacce da riga di comando di ognuna, sono abbastanza simili e, per la maggior parte, non importa quale usi. Le versioni recenti di entrambi monitoreranno quali pacchetti sono stati installati manualmente e quali sono stati installati come dipendenze (e quindi idonei per la rimozione automatica). In effetti, credo che anche più recentemente, i due strumenti siano stati aggiornati per condividere effettivamente lo stesso database di pacchetti installati manualmente o automaticamente, quindi i casi in cui si installa qualcosa con apt-get e quindi aptitude vuole disinstallarlo sono principalmente una questione di il passato.

Ci sono alcune differenze minori:

  • aptitude rimuoverà automaticamente i pacchetti idonei, mentre apt-get richiede un comando separato per farlo
  • I comandi per upgrade vs dist-upgrade sono stati rinominati in attitudine ai nomi probabilmente più accurati safe-upgrade e full-upgrade , rispettivamente.
  • aptitude svolge effettivamente le funzioni non solo di apt-get, ma anche di alcuni dei suoi strumenti di accompagnamento, come apt-cache e apt-mark.
  • aptitude ha una sintassi della query leggermente diversa per la ricerca (rispetto a apt-cache)
  • aptitude ha i comandi why e why-not per dirti quali pacchetti installati manualmente impediscono un'azione che potresti voler intraprendere.
  • Se le azioni (installazione, rimozione, aggiornamento dei pacchetti) che si desidera intraprendere causano conflitti, aptitude può suggerire diverse potenziali risoluzioni. apt-get dirà semplicemente "Mi dispiace Dave, non posso permetterti di farlo."

Ci sono altre piccole differenze, ma quelle sono le più importanti che mi vengono in mente.

In breve, aptitude appartiene più propriamente alla categoria con Synaptic e altri front-end di gestione pacchetti di livello superiore. Capita anche di avere anche un'interfaccia a riga di comando che ricorda apt-get.

Bonus Round: che cos'è il wajig?

Ricordi come ho menzionato quegli strumenti "companion" come apt-cache e apt-mark? Bene, ce ne sono un sacco, e se li usi molto, potresti non ricordare quali forniscono i comandi. wajig è una soluzione a questo problema. È essenzialmente un dispatcher, un involucro attorno a tutti quegli strumenti. Si applica anche sudo quando necessario. Quando dici wajig install foo, wajig dice "Ok, installè fornito da apt-gete richiede privilegi di amministratore", e viene eseguito sudo apt-get install foo. Quando dici wajig search foo, wajig dice "Ok, searchè fornito da apt-cachee non richiede privilegi di amministratore", e viene eseguito apt-cache search foo. Se usi wajig invece di apt-get, apt-mark, apt-cache e altri, non avrai mai questo problema:

$ apt-get search foo
E: Invalid operation search

Se vuoi sapere cosa sta facendo il wajig dietro le quinte, quali strumenti sta usando per implementare un particolare comando, ha --simulatee --teachingmodalità.

Due comandi wajig che utilizzo spesso sono wajig listfiles fooe wajig whichpkg /usr/bin/foo.


Un grosso problema che ho riscontrato con aptitude è che ci vuole molto tempo per ottenere i completamenti delle schede sui nomi dei pacchetti (ad esempio, aptitude install linux-imtab), mentre è molto veloce per apt-get. Sembra esserci un po 'di cache nella famiglia apt-get che manca di attitudine.
levesque,

12
aptitudehanno anche il fantastico aptitude searchche puoi usare con schemi di ricerca molto potenti . Hai aptitude reinstall. Puoi anche usare l'interfaccia ncurses (menu terminale) per preparare complesse operazioni come l'aggiornamento parziale, rimuovere un pacchetto, congelarne un altro, aggiornarlo, che puoi eseguire in una singola operazione ... Oh, e ha un risoluzione interattiva dei conflitti .
Totor

3
@Totor Holy Cow, usando l'interfaccia ncurses di aptitude per preparare i comandi mi ha appena venduto su aptitude una volta per tutte! (dopo anni di riflessione vale la pena fare l'attitudine, ma digitando apt-get dalla memoria muscolare)
TJ Ellis,

2
... e aptitudedeve anche aptitude download package-nameottenere il file .deb del pacchetto!
Totor,

2
È solo una cosa che ho scoperto che non è dentro aptitudema sono dentro apt-get, e cioè apt-get --compile source package-name. apt-get build-dep package-nameesiste ma penso che aptitude build-dep package-namefaccia un lavoro migliore.
Anders,

71

Mi sono chiesto spesso. Wikipedia evidenzia che la principale caratteristica distintiva è che aptitude ha un'interfaccia in modalità testo (maledizioni) a schermo intero. Il fatto che sia possibile utilizzare la maggior parte degli apt-getargomenti dei comandi con aptitudese stesso è solo una decisione di progettazione per facilitare agli apt-getutenti il ​​passaggio aptitudee viceversa.

Non l'ho mai usato wajig, ma la documentazione suggerisce che è solo uno script che sa se gli stai passando un debfile (quando viene eseguito dpkg) o un aptnome di pacchetto (quando viene eseguito apt-getinvece). Potresti provarlo e vedere se è quello che fa?

Certo, la vera differenza è:

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.

52
No! aptitudeha di più. Hai dimenticato di mettere le -vbandiere infinite moo. (Puoi salire -vvvvvv)
Umang,

12
Non dimenticare tutti gli importanti poteri di Super Cow, che apt-getha ma aptitudenon ha. (Prova --helpsu entrambi)
derobert il

lmao. è una risposta divertente da leggere, anche se la risposta di @ ryan è molto più elaborata;)
Michael Trouw,

26

aptitude è il programma preferito per la gestione dei pacchetti dalla console sia per le installazioni dei pacchetti sia per gli aggiornamenti dei pacchetti o del sistema in Debian.

Ecco una panoramica dello strumento e delle funzionalità che ha su apt-get: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

Quindi, il mio consiglio è di apt-get install aptitude :)


2
Le note di rilascio dicono che apt-get è ora consigliato su aptitude per gli aggiornamenti da comprimere.
jrdioko,

1
Sì, ma solo per quello. Altrimenti sono considerati uguali ma aptitudeha molte funzioni più avanzate, come la ricerca e la modalità a schermo intero, rispetto a apt-get.
Anders,

Per qualche ragione ha usato aptitude per installare emacs e senza vederlo rimosso gdm! Quindi per ora useremo apt-get ma sono molto curioso di attitudine.
TomFirth,

20

aptitudericorda quali pacchetti sono stati esplicitamente richiesti e quali sono stati installati solo a causa delle dipendenze. Disinstalla automaticamente i pacchetti che non sono stati esplicitamente richiesti quando non sono più necessari.

apt-get tratta i pacchetti richiesti esplicitamente e le loro dipendenze sono uguali.

Quindi un uso migliore aptitude, questo aiuta a mantenere pulito il sistema.


4
Questo era vero, ma so che il mio apt-get ha un apt-get autoremovecomando per rimuovere i pacchetti installati solo come dipendenze. Non so quando è stata aggiunta questa funzione, ma un sito web suggerisce che potrebbe essere successo con Debian Lenny (giugno 2010).
Gaurav,

8
apt-get autoremovenon rimuove i pacchetti installati solo come dipendenze, rimuove le dipendenze orfane, che è una differenza sottile; non può dire se un pacchetto 'leaf' è stato installato con intento o come dipendenza, quindi lo lascia, dove aptitude lo saprebbe e rimuoverlo.
pjz,

Sono venduto! Ci sono altre cose carine, aptitudema questa è senza dubbio una caratteristica killer.
iconoclasta,

12

apt-get, così come i vari strumenti di accompagnamento, utilizzano una quantità di memoria significativamente inferiore rispetto alle rispettive invocazioni della riga di comando aptitudee sono un po 'più veloci. Ne ero felicemente inconsapevole fino a quando non ho provato ad aggiornare l'installazione debian su un vecchio thinkpad Pentium avvizzito con 32 MB di RAM. Ci vorrebbero un'ora o due di swap-thrashing per funzionare apt-get, che è stato completato con successo; aptitudefallirebbe dopo un lungo periodo di tempo.

Questa distinzione è più o meno irrilevante per qualsiasi cosa che assomigli a un moderno sistema desktop.


9

Basandosi sulla risposta di @ Gaurav, le uova di Pasqua nei due gestori di pacchetti sono abbastanza divertenti !:

siddhartha@siddhartha-dev:~$ apt-get  moo
             (__) 
             (oo) 
       /------\/ 
      / |    ||   
     *  /\---/\ 
        ~~   ~~   
..."Have you mooed today?"...

siddhartha@siddhartha-dev:~$ aptitude  moo
There are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -v moo
There really are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
siddhartha@siddhartha-dev:~$ aptitude -vvv moo
Stop it!
siddhartha@siddhartha-dev:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
siddhartha@siddhartha-dev:~$ aptitude -vvvvv moo
All right, you win.

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

e così via.



7

Come accennato da http://pthree.org/2007/08/12/aptitude-vs-apt-get/ , aptitudeha un'interfaccia a riga di comando molto più semplice da usare.

Sotto il cofano, non usano lo stesso sistema APT? Sì.

Il sistema sottostante non è solo apt, ma dpkg. Questo sistema è tanto stupido quanto RPM, può solo gestire l'installazione e l'amministrazione di singoli pacchetti. Tiene traccia di quali file installati appartengono a quale pacchetto.

aptgestisce i download di repository, il monitoraggio delle dipendenze e così via per tutti i singoli pacchetti - che quindi installa utilizzando dpkg. aptitudefa lo stesso, con un'interfaccia diversa.


6

Sia apt-get che aptitude si basano sulla libreria APT, sì.

Vedi la mia risposta su serverfault.com .

Debian non è un'entità monolitica, ci sono persone con opinioni diverse e il manutentore di aptitude ha deciso che apt-get aveva delle carenze e voleva costruire qualcosa di meglio con aptitude. Ha migliorato la logica per trovare soluzioni per scenari di aggiornamento complessi, ha aggiunto una GUI per la console, ecc. E c'è molto di più di apt-get e aptitude, vedi il mio articolo apt-get, aptitude, ... scegli il gestore pacchetti giusto per te .


6

Non sono sicuro che ciò valga ancora, ma lo sviluppatore di Debian Joey Hess, sempre all'avanguardia, ha sempre sostenuto attitudine su apt-get. Naturalmente le cose cambiano con l'evoluzione del software. Apt-get ora gestisce le dipendenze meglio di prima. Da http://lists.debian.org/debian-user/2004/04/msg03138.html

Data: mar, 20 apr 2004 22:27:12 -0400 Da: Joey Hess

Nove motivi per cui dovresti usare aptitude invece di apt-get o dselect.

  1. aptitude può apparire proprio come apt-get

    Se esegui 'aptitude update' o 'aptitude upgrade' o 'aptitude install', sembra e funziona proprio come apt-get, con alcuni miglioramenti. Quindi non esiste una curva di apprendimento.

    (Se sei un utente dselect, la curva di apprendimento non è ovviamente uno dei tuoi problemi.)

  2. aptitude traccia i pacchetti installati automaticamente

    Smetti di preoccuparti della potatura delle librerie inutilizzate e dei pacchetti di supporto dal tuo sistema. Se usi aptitude per installare tutto, terrà traccia di quali pacchetti vengono inseriti dalle sole dipendenze e rimuoverà quei pacchetti quando non sono più necessari.

  3. aptitude gestisce in modo sicuro le raccomandazioni

    Un fallimento di vecchia data di apt-get è stata la sua mancanza di supporto per la relazione Raccomandati. Il che è un problema perché molti pacchetti in Debian si affidano a Raccomanda di inserire software che l'utente medio usa generalmente con il pacchetto. Questa non è una rara causa di problemi, anche se recentemente apt-get è riuscito a menzionare almeno i pacchetti consigliati, è facile perdere i suoi avvertimenti.

    Aptitude supporta Raccomandazioni per impostazione predefinita e può essere configurato per supportare anche Suggerimenti. Supporta anche l'installazione di pacchetti consigliati se utilizzato in modalità riga di comando.

  4. usa aptitude come un normale utente ed evita di rovinare il tuo sistema

    Forse non sapevi che puoi eseguire aptitude in modalità gui come utente normale. Apporta le modifiche che desideri provare. Se entri in un vero casino, puoi premere 'q' ed uscire, le tue modifiche non verranno salvate. (Aptitude ti consente anche di usare ctrl-u per annullare le modifiche.) Dato che è in esecuzione come un normale utente, non puoi eseguire il tubo del tuo sistema finché non dici a aptitude di fare qualcosa, a quel punto ti chiederà la password di root.

  5. aptitude ha una potente interfaccia utente e funzionalità di ricerca

    Tra il browser categoriale di aptitude e il suo grande supporto per il filtro in stile mutt e la ricerca di pacchetti per nome, descrizione, manutentore, dipendenze, ecc., Dovresti essere in grado di trovare pacchetti più velocemente che mai usando aptitude.

  6. aptitude rende facile tenere traccia dei software obsoleti

    Se Debian smette di distribuire un pacchetto, apt lo lascerà sul tuo sistema a tempo indeterminato, senza avvertimenti e senza aggiornamenti. Aptitude elenca tali pacchetti nella sezione "Pacchetti obsoleti e creati localmente", in modo che tu possa essere informato del problema e fare qualcosa al riguardo.

  7. aptitude ha un'interfaccia con il sistema di attività Debian

    Aptitude ti permette di usare il sistema di attività di Debian così come è stato progettato per essere usato. È possibile sfogliare le attività disponibili, selezionare un'attività per l'installazione, quindi scavare al suo interno e deselezionare parti dell'attività che non si desidera. apt-get non ha supporto per le attività e aptitude è migliore anche rispetto a strumenti con scopi speciali come taskel.

  8. aptitude supporta più fonti

    Se il tuo sources.list è configurato per rendere disponibili più versioni di un pacchetto, aptitude ti permette di approfondire per vedere le versioni disponibili e scegliere una versione non predefinita da installare. Se un pacchetto si rompe in unstable, esegui il rollback alla versione durante il test.

  9. aptitude registra le sue azioni

    Il pacchetto di log di Aptitude installa, aggiorna e rimuove in / varlog / aptitude, che può essere utile per capire perché le cose hanno iniziato a rompersi dopo l'aggiornamento di ieri o quando hai rimosso un pacchetto partiticlar.

- vedi timido jo

=================== C'è anche una discussione più recente dal 2010 qui https://superuser.com/questions/93437/aptitude-vs-apt-get-which- è-lo-raccomandato-aka-lo-strumento-giusto-da usare su StackExchange.

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.