Attitudine vs. apt-get: qual è lo strumento consigliato (noto anche come "giusto") da usare?


94

Qualche tempo fa ho letto che aptitudeè lo strumento preferito per l'installazione su sistemi basati su Debian. Ma quando cerchi come amministrare un sistema basato su Debian, raramente viene menzionato aptitude. Molte persone sembrano preferire apt-get- e questo è vero anche per le pagine wiki di Debian!

Quindi mi chiedo se ho perso qualcosa. Qual è lo strumento giusto da usare?


È interessante notare che Ubuntu non si installa più aptitudeper impostazione predefinita.
Lumaca meccanica

2
La sola differenza più importante per me è che dopo aver letto attentamente i documenti, non riesco a trovare alcun modo per ottenere la fonte di un pacchetto tramite aptitude. apt-get source package-namelo farò, ma non ho visto nessun equivalente attitudinale
EricR

2
Una cosa è che aptitude search package-namefunziona in attitudine. Un altro è aptitude why package-nameanche utile ma non in apt-get. Penso anche che la riga di comando di aptitudesia un po 'ripulita rispetto a apt-get. Ma come hai notato, ci sono aptitude build-dep package-namema no aptitude source package-name.
Anders,

Risposte:


73

aptitudee apt-getfunzionano allo stesso modo per molte attività, ma per i casi più difficili, come gli aggiornamenti di distribuzione ( apt-get dist-upgradevs. aptitude full-upgrade), hanno regole diverse e le regole di aptitude sono quasi sempre migliori nella pratica in cui non sono d'accordo.

Il motivo per cui vedi più documentazione per apt-getover aptitudeè per lo più inerzia: aptitudenon è stato il front-end consigliato per APT per così tanto tempo, quindi gran parte della documentazione esistente non è stata aggiornata e ci sono molte persone che riconoscono i vantaggi di aptitudeover apt-getma usa apt-getriflessivamente.

Recentemente sono arrivato al punto in cui di solito seguo aptun ie non un -quando scrivo.

Postscript Notate che le regole usate in apt-gete aptitudestanno spostando i target - come osserva Hubert nei commenti, il percorso di aggiornamento raccomandato da Debian Lenny ora usa apt-get, non aptitude. Ciò riflette il fatto che apt-gettiene traccia di meno stato rispetto al pacchetto corrente rispetto a aptitude, e quindi non è necessario preoccuparsi che lo stato APT non sia "pulito" e perché le apt-getregole sono più intelligenti di prima. Uso ancora e raccomando aptitudeoltre apt-get, ma è una raccomandazione più sfumata


6
Oltre a ciò, aptitude consente di navigare facilmente tra le possibili risoluzioni dei conflitti, mentre con apt-get di solito viene mostrato solo un modo possibile e lo si accetta o si deve fare una risoluzione a mano (ad esempio usando dpkg).
liori,

20
apt-getha il vantaggio di essere più efficiente in termini di memoria. È improbabile che ciò sia evidente per la maggior parte degli utenti; Non ne ero a conoscenza fino a quando non ho provato ad aggiornare i pacchetti su un'installazione Debian completa con 32 MB di RAM. aptitudefinì col battere in swap per circa un'ora per corsa; apt-get è stato significativamente più veloce.
intuito il

4
La documentazione ufficiale di compressione di Debian afferma esplicitamente di non utilizzare aptitudeper l'aggiornamento da Lenny anche se era supportata per gli aggiornamenti precedenti, quindi non penso che sia solo inerzia ...
Hubert Kario

@HubertKario - Sì, davvero. Ho aggiornato la mia risposta.
Charles Stewart,

Posso solo dire che apt-getgenera quasi sempre errori (esperienza dal server Ubuntu 12.10, 14.04) mentre in aptituderealtà può fare qualcosa. Non capisco ancora come apt-get esista ancora.
Totty.js,

20

aptituderende conveniente mostrare quali programmi in una ricerca sono già stati installati sul sistema (con l'aiuto di grep):

aptitude search flash | grep ^i

In realtà, aptitudela ricerca è molto più potente di ciò che si ottiene attraverso il piping grep, in quanto supporta la ricerca contestuale:

ad esempio, questo trova tutti i pacchetti con 'flash' nel nome del pacchetto che sono installati:

aptitude search '~iflash'

Una "forma lunga" equivalente della "forma breve" ~i:

aptitude search '?installed(flash)'

Si noti che i modelli di ricerca sono gratuiti (non ancorati) per impostazione predefinita. Per ancorarli, è necessario utilizzare i motivi di ancoraggio ' ^' (inizio della stringa) e / o ' $' (fine della stringa).

Per trovare tutti i pacchetti i cui nomi iniziano con 'ttf' o 'font':

aptitude search '(^ttf|^font)'

(Nota: questa è una soluzione alternativa per un bug in aptitude, poiché il regex corretto di '^(ttf|font)'non funziona correttamente - trova pacchetti i cui nomi iniziano con 'ttf' o contengono 'font'.)

Altre aptitudecaratteristiche eleganti :

Mostra tutti i pacchetti con 'firmware' nel loro nome che hanno anche 'wireless' nella loro descrizione:

aptitude search 'firmware ~dwireless'

o forma lunga:

aptitude search '?and(?name(firmware),?description(wireless))'

(Nota: in forma abbreviata, gli argomenti delimitati da spazi sono AND racchiusi tra virgolette; se passati come argomenti argv [] a riga di comando separati sono ORed.)

p   atmel-firmware       - Firmware for Atmel at76c50x wireless networking chips.
p   firmware-atheros     - Binary firmware for Atheros wireless cards
...
p   libertas-firmware    - Firmware for Marvell's libertas wireless chip series
p   zd1211-firmware      - Firmware images for the zd1211rw wireless driver

~U mostra tutti i pacchetti aggiornabili dalle loro versioni attuali con nuove versioni:

# aptitude update ; aptitude versions '~U'
Package virtualbox-4.1:            
i   4.1.18-78361~Debian~squeeze                       100
p   4.1.20-80170~Debian~squeeze     <NULL>            500

Mostra i pacchetti che raccomandano 'gcc-multilib'

$ aptitude search '~DRecommends:gcc-multilib'
i   libc6-dev-i386   - Embedded GNU C Library: 32-bit development libraries for AMD64

Spiega perché potrebbe essere necessario installare "fuse-utils"

$ aptitude why fuse-utils
i   xorg           Depends    xterm | x-terminal-emulator
pi  gnome-terminal Provides   x-terminal-emulator
pi  gnome-terminal Recommends gvfs
pi  gvfs           Depends    libgdu0 (>= 2.29.90)
pi  libgdu0        Depends    udisks (< 1.1.0)
pi  udisks         Recommends ntfsprogs
pi  ntfsprogs      Depends    fuse-utils (> 2.5.0)

(Questo esempio mostra una parte della follia derivante dall'impostazione predefinita poiché Squeeze (?) Dell'installazione di tutti i pacchetti "Raccomandati". L'installazione di gnome-terminal finisce con l'installazione di ntfsprogs e fuse-utils, egad! Penso che la maggior parte delle persone voglia solo la prospettiva del terminale e non l'integrazione NTFS integrata, che è facoltativa, a meno che non sia stata specificata.)

Trova tutti i pacchetti che forniscono il servizio "mail-transport-agent":

$ aptitude search '?provides(mail-transport-agent)'
p   citadel-mta          - complete and feature-rich groupware server (mail transport agent)
...
p   nullmailer           - simple relay-only mail transport agent
p   postfix              - High-performance mail transport agent
i   sendmail-bin         - powerful, efficient, and scalable Mail Transport Agent
p   ssmtp                - extremely simple MTA to get mail off the system to a mail hub
p   xmail                - advanced, fast and reliable ESMTP/POP3 mail server

Mostra tutti i nomi dei pacchetti installati, che non sono essenziali o installati automaticamente dalle dipendenze:

$ aptitude search '~i!(~E|~M)' -F '%p'

Sfortunatamente, questa roba è piuttosto scarsamente documentata e difficile da trovare, ma ecco il miglior riferimento (dal manutentore dell '"attitudine").


4
Funzioni di ricerca sono disponibili da apt-gettramiteapt-cache search NAME
EricR

@EricR vero ma non ho trovato capacità di ricerca come queste
niceman

4

Secondo le FAQ di Debian GNU / Linux sulla gestione dei pacchetti , aptitude è più complesso di apt-get e dipende dagli strumenti di gestione dei pacchetti meno complessi apt-get e dpkg.

Pertanto, per esigenze più semplici, è possibile utilizzare gli strumenti più semplici, mentre per esigenze più complesse, è possibile contare su uno strumento più sofisticato (apitude).

Citato dalle FAQ di Debian: "aptitude fornisce le funzionalità di dselect e apt-get, oltre a molte funzionalità aggiuntive che non si trovano in nessuno dei due programmi".


3

aptitude contrassegna i pacchetti che erano installati a causa di una dipendenza con il tag automatico. Se ora elimini o rimuovi un pacchetto, aptitude rimuoverà automaticamente i pacchetti installati automaticamente che non vengono più utilizzati insieme al pacchetto che desideri eliminare o rimuovere.

Questo è il motivo principale per cui personalmente ritengo che l'attitudine sia sempre meglio di apt.


È necessaria una citazione, ma sarebbe una differenza convincente.
Kzqai,


Lo apt-getfa anche con apt-get autoremove <package-name>. Entrambi apt-gete aptitudesegnano i pacchetti
autoinstallati

Ma aptituderipulisci i pacchetti automatici ogni volta che viene utilizzato. Mentre apt-getè necessario iniziare quello esplicito.
Anders,

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.