Questão Aptidão vs. apt-get: Qual é a ferramenta recomendada (também conhecida como "direita") a ser usada?


Algum tempo atrás eu li que aptitude é a ferramenta preferida para instalação em sistemas baseados em Debian. Mas quando você pesquisa como administrar um sistema baseado no Debian, então o aptitude raramente é mencionado. 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?


93


origem


Curiosamente, o Ubuntu não instala mais aptitude por padrão. - Mechanical snail
A única diferença mais importante para mim é que depois de ler os documentos completamente, não consigo encontrar uma maneira de obter a origem de um pacote via aptitude. apt-get source package-name vai fazer isso, mas eu não vi nenhum equivalente de aptidão - EricR
Uma coisa é que aptitude search package-name funciona no aptitude. Outro é aptitude why package-name também é útil, mas não em apt-get. Eu também acho que a linha de comando aptitude é um pouco limpo em comparação com apt-get. Mas como você percebeu, existem aptitude build-dep package-name mas não aptitude source package-name. - Anders


Respostas:


aptitude e apt-get funcionam da mesma forma para muitas tarefas, mas para os casos mais complicados, como atualizações de distribuição (apt-get dist-upgrade vs. aptitude full-upgrade), eles têm regras diferentes, e as regras de aptidão são quase sempre melhores na prática onde elas discordam.

O motivo pelo qual você vê mais documentação para apt-get sobre aptitude é principalmente inércia: aptitude não tem sido o front-end recomendado para o APT por tanto tempo, muito da documentação existente não foi atualizada, e há muitas pessoas que reconhecem as vantagens de aptitude sobre apt-get mas use apt-get reflexivamente.

Eu recentemente cheguei ao ponto em que costumo seguir apt com um ie não um - quando eu digito.

Postscript Observe que as regras usadas em apt-get e aptitude são alvos móveis - como observa Hubert nos comentários, o caminho de atualização recomendado pelo Debian Lenny agora usa apt-get, não aptitude. Isso reflete o fato de que apt-get mantém o controle de menos estado sobre o pacote atual do que aptitude, e por isso não precisa se preocupar com o estado APT não ser "limpo", e porque apt-get as regras são mais inteligentes do que costumavam ser. Eu ainda uso e recomendo aptitude sobre apt-get, mas é uma recomendação mais diferenciada


72



Além disso, o aptitude permite navegar através de possíveis resoluções de conflitos facilmente, enquanto que com o apt-get você normalmente tem apenas uma maneira possível mostrada e você aceita ou precisa fazer a resolução manualmente (por exemplo, usando o dpkg). - liori
apt-get tem 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é que tentei atualizar pacotes em uma instalação completa do Debian com 32MB de RAM. aptitudeacabou se debatendo no swap por cerca de uma hora por corrida; O apt-get foi significativamente mais rápido. - intuited
A documentação oficial do Debian squeeze declara explicitamente não usar aptitude para atualizar de Lenny, embora tenha sido suportado por atualizações anteriores, então eu não acho que é apenas inércia ... - Hubert Kario
@ HubertKario - Sim, de fato. Eu atualizei minha resposta. - Charles Stewart
Eu só posso dizer isso apt-get quase sempre gera erros (experiência do servidor Ubuntu 12.10, 14.04) enquanto aptitude pode realmente fazer alguma coisa. Eu ainda não entendo como o apt-get ainda existe. - Totty.js


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

aptitude search flash | grep ^i

Na realidade, aptitudeA busca é muito mais poderosa do que a que você consegue grep, pois suporta pesquisa contextual:

Por exemplo, encontra todos os pacotes com 'flash' no nome do pacote instalado:

aptitude search '~iflash'

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

aptitude search '?installed(flash)'

Observe que os padrões de pesquisa são gratuitos (não ancorados) por padrão. Para ancorá-los, você precisa usar padrões de âncora^'(início da string) e / ou'$'(fim da corda).

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

aptitude search '(^ttf|^font)'

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

Outro bacana aptitude características:

Mostrar todos os pacotes com 'firmware' em seu nome que também possuem 'wireless' em sua descrição:

aptitude search 'firmware ~dwireless'

ou forma longa:

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

(Nota: no formato curto, os argumentos delimitados por espaço são ANDed entre aspas; se forem passados ​​como argumentos de linha de comando argv [] separados, 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 ​​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

Explicar porque é que o 'fuse-utils' precisa de 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 "Recommends" .Instalar o gnome-terminal acaba instalando ntfsprogs e fuse-utils, egad! Eu acho que a maioria das pessoas só querem a perspectiva do terminal e não a integração incorporada do NTFS, que é opcional, a menos que seja especificada.)

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

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

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

Infelizmente, este material é bastante mal documentado e difícil de encontrar, mas Aquié a melhor referência (do mantenedor do 'aptitude').


19



Os recursos de pesquisa estão disponíveis em apt-get através da apt-cache search NAME - EricR
@EricR verdadeiro, mas não encontrei recursos de pesquisa, pois - niceman


De acordo com o FAQ 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 a partir do Debian FAQ: "O aptitude fornece a funcionalidade do dselect e do apt-get, assim como muitos recursos adicionais não encontrados em nenhum dos programas."


4





O aptitude marca pacotes que foram instalados devido a uma dependência com a marca automática. Se você agora limpar ou remover um pacote, 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 apt.


3



Citation needed, mas isso seria uma diferença convincente. - Kzqai
Citação: debian-handbook.info/browse/stable/… - deizel
Na realidade apt-get faz isso também, com apt-get autoremove <package-name>. Ambos apt-get e aptitude marcar pacotes instalados automaticamente - Legionair
Mas aptitude Limpe os pacotes automáticos sempre que for usado. Enquanto apt-get você precisa começar isso explícito. - Anders


Não há ferramenta certa, você pode misturar e combinar os dois, dependendo do que achar mais conveniente para a tarefa em questão. O aptitude é uma ótima ferramenta para testar usuários / sid, mas ele tende a ser menos confiável para atualizações distantes de um estábulo para o próximo. Veja meu artigo apt-get, aptitude,… escolha o gerenciador de pacotes certo para você.


2