it-swarm.it

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

So che entrambi apt-get e aptitude sono interfacce di gestione dei pacchetti della riga di comando su Linux derivato da Debian, con diverse opzioni, ma 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 ?)

259
Kevin Cantu

La differenza più evidente è che aptitude fornisce un'interfaccia di menu terminale (molto simile a Synaptic in un terminale), mentre apt-get non.

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 pgrade vs. dist-upgrade sono stati rinominati in attitudine ai nomi probabilmente più precisi pgrade sicuro e completo -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 al Sudo quando necessario. Quando dici wajig install foo, wajig dice "Ok, install è fornito da apt-get e richiede i privilegi di amministratore "e viene eseguito Sudo apt-get install foo. Quando dici wajig search foo, wajig dice "Ok, search è fornito da apt-cache e 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 wajig dietro le quinte, quali strumenti sta usando per implementare un comando particolare, ha --simulate e --teaching modalità.

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

225
Ryan C. Thompson

Mi sono chiesto spesso. highlights di Wikipedia che la principale caratteristica distintiva è che aptitude ha un'interfaccia in modalità testo (maledizioni) a schermo intero. Il fatto che puoi utilizzare la maggior parte apt-get argomenti di comando con aptitude stesso è solo una decisione di progettazione per semplificare apt-get utenti per passare a aptitude e viceversa.

Non ho mai usato wajig, ma la documentazione suggerisce che è solo uno script che sa se gli stai passando un file deb (quando esegue dpkg) o un apt nome pacchetto (quando viene eseguito apt-get anziché). Potresti provarlo e vedere se è quello che fa?

Ovviamente, la differenza reale è:

[email protected]:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
[email protected]:~$ aptitude moo
There are no Easter Eggs in this program.
71
Gaurav

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 :)

26
dsp

aptitude ricorda 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 meglio usare aptitude, questo aiuta a mantenere pulito il tuo sistema.

20
starblue

apt-get, così come i vari strumenti di accompagnamento, utilizzano una quantità di memoria significativamente inferiore rispetto alle rispettive invocazioni della riga di comando di aptitude e 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. Occorrerebbero un'ora o due di swap-thrashing per eseguire apt-get, completato correttamente; aptitude fallirebbe dopo un periodo di tempo più lungo.

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

12
intuited

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

[email protected]:~$ apt-get  moo
             (__) 
             (oo) 
       /------\/ 
      / |    ||   
     *  /\---/\ 
        ~~   ~~   
..."Have you mooed today?"...

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

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

e così via.

9
Siddhartha

Offrono le stesse funzionalità di base: installa e rimuovi pacchetti dalla riga di comando.

Ecco un confronto più dettagliato, pubblicato sul sito Web Ubuntu Stack Exchange : https://askubuntu.com/questions/1743/is-aptitude-really- better-than-apt-get/1749 # 1749

8
Riccardo Murri

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

Sotto il cofano, non stanno usando lo stesso 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.

apt gestisce i download di repository, il tracciamento delle dipendenze e così via per tutti i singoli pacchetti - che quindi installa usando dpkg. aptitude fa lo stesso, con un'interfaccia diversa.

7
vdboor

Non sono sicuro che ciò valga ancora, ma il sanguinante sviluppatore di Edge Debian Joey Hess ha sempre usato la difesa di aptitude su apt-get. Naturalmente le cose cambiano con l'evoluzione del software. Apt-get ora gestisce le dipendenze meglio di una volta. 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 fino a quando 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 in essa 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-what-is-the-recommended-aka-the-right-tool-to-use su StackExchange.

6
manselton

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

Vedi il mio 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 più di apt-get e aptitude, vedi il mio articolo apt-get, aptitude, ... scegli il pacchetto giusto manager per te .

6
Raphaël Hertzog