Aptitude vs. apt-get: Qual é a ferramenta recomendada (também conhecida como a “direita”) para usar?

94

Algum tempo atrás, li que essa aptitudeé a ferramenta preferida para instalação em sistemas baseados no Debian. Mas quando você pesquisa sobre como administrar um sistema baseado no Debian, a aptidão raramente é mencionada. A maioria das pessoas parece preferir apt-get- e isso é verdade para as páginas wiki do Debian!

Assim, estou me perguntando se perdi alguma coisa. Qual é a ferramenta certa para usar?

Vokuhila-Oliba
fonte
Curiosamente, o Ubuntu não é mais instalado aptitudepor padrão.
Caracol mecânico
2
A diferença mais importante para mim é que, depois de ler os documentos completamente, não consigo encontrar a fonte de um pacote via aptitude. apt-get source package-namevai fazer isso, mas eu não vi nenhum equivalente de aptidão
EricR
2
Uma coisa é que aptitude search package-namefunciona com aptidão. Outra é aptitude why package-nametambém é útil, mas não é apt-get. Eu também acho que a linha de comando aptitudeé um pouco limpa em comparação com apt-get. Mas como você notou, existem aptitude build-dep package-namemas não aptitude source package-name.
Anders

Respostas:

73

aptitudee apt-getfuncionam da mesma maneira para muitas tarefas, mas para os casos mais complicados, como atualizações de distribuição ( apt-get dist-upgradevs. aptitude full-upgrade), eles têm regras diferentes, e as regras do aptitude são quase sempre melhores na prática onde não concordam.

O motivo pelo qual você vê mais documentação para apt-getexcesso aptitudeé principalmente a inércia: aptitudenão tem sido o front end recomendado para o APT por tanto tempo, grande parte da documentação existente não foi atualizada e há muitas pessoas que reconhecem as vantagens do aptitudeexcesso apt-getmas use apt-getreflexivamente.

Recentemente, cheguei ao ponto em que geralmente sigo aptcom ie não -quando digito.

Postscript Observe que as regras usadas apt-gete aptitudeestão movendo os alvos - como Hubert observa nos comentários, o caminho de atualização recomendado pelo Debian Lenny agora usa apt-get, não aptitude. Isso reflete o fato de apt-getcontrolar menos estado sobre o pacote atual aptitudee, portanto, não precisa se preocupar com o estado do APT não estar "limpo", e porque as apt-getregras são mais inteligentes do que costumavam ser. Eu ainda uso e recomendo aptitudemais apt-get, mas é uma recomendação mais nuançada

Charles Stewart
fonte
6
Além disso, o aptitude permite navegar facilmente por possíveis resoluções de conflitos, enquanto que com o apt-get você normalmente tem apenas uma maneira possível de mostrar e você a aceita ou precisa fazer a resolução manualmente (por exemplo, usando o dpkg).
liori 26/02/10
20
apt-gettem a vantagem de ser mais eficiente em termos de memória. É improvável que isso seja perceptível para a maioria dos usuários; Eu não estava realmente ciente disso até tentar atualizar os pacotes em uma instalação completa do Debian com 32 MB de RAM. aptitudeacabou trocando trocas por cerca de uma hora por corrida; O apt-get foi significativamente mais rápido.
intuited
4
O oficial Debian aperto documentação não afirma explicitamente usar aptitudea atualização do Lenny apesar de ter sido apoiado por atualizações anteriores, então eu não acho que é apenas a inércia ...
Hubert Kario
@HubertKario - Sim, de fato. Eu atualizei minha resposta.
Charles Stewart
Só posso dizer que apt-getquase sempre gera erros (experiência do servidor Ubuntu 12.10, 14.04) enquanto aptitudepode realmente fazer alguma coisa. Ainda não entendo como o apt-get ainda existe.
Totty.js
20

aptitudetorna conveniente mostrar quais programas em uma pesquisa você já instalou no sistema (com a ajuda de grep):

aptitude search flash | grep ^i

Na verdade, aptitudea pesquisa é muito mais poderosa do que a que você realiza grep, pois suporta a pesquisa contextual:

por exemplo, isso encontra todos os pacotes com 'flash' no nome do pacote que está instalado:

aptitude search '~iflash'

Uma "forma longa" equivalente da "forma curta" ~i:

aptitude search '?installed(flash)'

Observe que os padrões de pesquisa são gratuitos (sem ancoragem) por padrão. Para ancorá-los, você precisa usar padrões de âncora ' ^' (início da sequência) e / ou ' $' (final da sequência).

Para encontrar todos os pacotes cujos nomes começam com 'ttf' ou 'font':

aptitude search '(^ttf|^font)'

(Nota: esta é uma solução alternativa para um bug aptitude, pois o regex correto de '^(ttf|font)'não funciona corretamente - ele encontra pacotes cujos nomes começam com 'ttf' ou contêm 'font'.)

Outras aptitudecaracterísticas bacanas :

Mostre todos os pacotes com 'firmware' em seu nome que TAMBÉM tenham 'wireless' em sua descrição:

aptitude search 'firmware ~dwireless'

ou forma longa:

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

(Nota: no formato abreviado, argumentos delimitados por espaço são ANDed entre aspas; se passados ​​como argumentos separados da linha de comandos argv [], eles são 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 todos os pacotes que são atualizáveis ​​a partir de suas versões atuais com novas versões:

# 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

Mostrar pacotes que recomendam 'gcc-multilib'

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

Explique por que 'fuse-utils' pode precisar ser instalado

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

(Este exemplo mostra algumas das loucuras resultantes do padrão desde o Squeeze (?) De instalar todos os pacotes "Recomendados". A instalação do gnome-terminal acaba instalando ntfsprogs e fuse-utils, por exemplo! Acho que a maioria das pessoas só quer a perspectiva do terminal e não a integração NTFS interna, que é opcional, a menos que eles a especifiquem.)

Encontre todos os pacotes que fornecem o serviço "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

Mostre todos os nomes de pacotes que estão instalados, que não são essenciais ou instalados automaticamente por dependências:

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

Infelizmente, esse material é pouco documentado e difícil de encontrar, mas aqui está a melhor referência (do mantenedor do 'aptitude').

Chris P
fonte
4
Os recursos de pesquisa estão disponíveis na apt-getviaapt-cache search NAME
EricR
@EricR verdade, mas eu não encontrou recursos de pesquisa como estas
niceman
4

De acordo com as Perguntas frequentes do Debian GNU / Linux sobre gerenciamento de pacotes , o aptitude é mais complexo que o apt-get e depende das ferramentas menos complexas de gerenciamento de pacotes apt-get e dpkg.

Portanto, para necessidades mais simples, você pode usar as ferramentas mais simples, enquanto que para necessidades mais complexas, você pode contar com a ferramenta mais sofisticada (apitude).

Citado na FAQ do Debian: "o aptitude fornece a funcionalidade do dselect e do apt-get, bem como muitos recursos adicionais não encontrados em nenhum dos programas."

pagliuca
fonte
3

O aptitude marca pacotes que foram instalados por causa de uma dependência com a tag auto. Se você limpar ou remover um pacote agora, o aptitude removerá automaticamente os pacotes instalados automaticamente que não são mais usados ​​junto com o pacote que você deseja limpar ou remover.

Esta é a principal razão pela qual eu pessoalmente acho que a aptidão é sempre melhor do que a aptidão.

Triturador de Carne
fonte
Citação necessária, mas isso seria uma diferença convincente.
Kzqai
Citação: debian-handbook.info/browse/stable/…
deizel 10/09/13
Na verdade, apt-getfaz isso também, com apt-get autoremove <package-name>. Ambos apt-gete aptitudemarcar pacotes instalados de auto
Legionair
Mas aptitudelimpe os pacotes automáticos sempre que usados. Enquanto apt-getvocê precisa iniciar isso explícito.
Anders
2

Não existe uma ferramenta certa, você pode misturar e combinar as duas, dependendo da que achar mais conveniente para a tarefa em questão. O aptitude é uma ótima ferramenta para testar / sid usuários, mas tende a ser menos confiável para fazer dist-upgrade de um estável para o próximo. Veja meu artigo apt-get, aptitude, ... escolher o gerenciador de pacotes certo para você .

Raphaël Hertzog
fonte