it-swarm-eu.dev

Aptitude vs. apt-get: qual è lo strumento consigliato (o "giusto") da usare?

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

Quindi mi chiedo se mi sia sfuggito qualcosa. Qual è lo strumento giusto da usare?

93
Vokuhila-Oliba

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

Il motivo per cui vedi più documentazione per apt-get su aptitude è per lo più inerzia: aptitude non è stato il front-end raccomandato per APT per tutto questo tempo, quindi gran parte della documentazione esistente non è stata aggiornata, e ci sono un sacco di persone che riconoscono i vantaggi di aptitude su apt-get ma usano apt-get in modo riflessivo.

Recentemente sono arrivato al punto in cui solitamente seguo apt con un ie non un - quando scrivo.

Postscript Si noti che le regole utilizzate in apt-get e aptitude sono destinazioni mobili - come note Hubert nei commenti, il percorso di aggiornamento consigliato da Debian Lenny ora utilizza apt-get, non aptitude. Ciò riflette il fatto che apt-get tiene traccia di meno stato del pacchetto corrente rispetto a aptitude, e quindi non deve preoccuparsi di APT stato non è "pulito", e perché le regole apt-get sono più intelligenti di quelle usate essere. Uso ancora e raccomando aptitude su apt-get, ma è una raccomandazione più sfumata

72
Charles Stewart

aptitude rende conveniente mostrare quali programmi in una ricerca hai già installato sul sistema (con l'aiuto di grep):

aptitude search flash | grep ^i

In realtà, la ricerca di aptitude è molto più potente di quella che viene trasmessa attraverso grep, poiché 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 del "modulo breve" ~i:

aptitude search '?installed(flash)'

Nota che i pattern di ricerca sono gratuiti (non aggiornati) per impostazione predefinita. Per ancorarli, è necessario utilizzare i modelli di ancoraggio '^' (inizio stringa) e/o '$' (fine stringa).

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

aptitude search '(^ttf|^font)'

(Nota: questo è un rimedio per un errore in aptitude, poiché l'espressione regolare di '^(ttf|font)' non funziona correttamente - trova i pacchetti i cui nomi iniziano con 'ttf' o contengono ' font'.)

Altre caratteristiche aptitude nifty:

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: nella forma abbreviata, gli argomenti delimitati da spazio sono ANDed tra virgolette, se passati come argomenti della riga di comando argv [] 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 che sono aggiornabili dalle loro versioni correnti 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 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 un po 'di follia derivante dal default dato che Squeeze (?) Installa tutti i pacchetti "Recommends". L'installazione di gnome-terminal termina con l'installazione di ntfsprogs e Fuse-utils, egad! Penso che la maggior parte della gente voglia solo la prospettiva terminale e non l'integrazione NTFS integrata, che è facoltativa, a meno che non l'abbiano 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 né essenziali né installati automaticamente dalle dipendenze:

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

Sfortunatamente, questa roba è piuttosto scarsamente documentata e difficile da trovare, ma qui è il miglior riferimento (dal manutentore di 'aptitude').

20
Chris P

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

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

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

4
pagliuca

aptitude contrassegna i pacchetti che sono stati installati a causa di una dipendenza con il tag auto. Se si elimina o rimuove un pacchetto, aptitude rimuoverà automaticamente i pacchetti auto installati che non sono più utilizzati insieme al pacchetto che si desidera eliminare o rimuovere.

Questo è il motivo principale per cui personalmente penso che l'attitudine sia sempre migliore di quella giusta.

3
Fleshgrinder

Non esiste uno strumento adatto, puoi combinare e abbinare entrambi a seconda di quello che ritieni più opportuno per l'attività in corso. aptitude è un ottimo strumento per testare gli utenti/sid, ma tende ad essere meno affidabile per il dist-upgrade da una stabile all'altra. Vedi il mio articolo apt-get, aptitude, ... scegli il giusto gestore di pacchetti per te .

2
Raphaël Hertzog