Qual é a diferença real entre “apt-get” e “aptitude”? (Que tal "wajig"?)

252

Eu sei que apt-get e aptitude são interfaces de gerenciamento de pacotes de linha de comando no Linux derivado do Debian, com opções diferentes, mas eu ainda estou um pouco confuso. Sob o capô, eles não estão usando o mesmo sistema APT?

Por que o Debian mantém essas ferramentas paralelas? (Bônus pergunta: o que na terra é wajig ?)

    
por Kevin Cantu 19.08.2010 / 06:50

10 respostas

220

A diferença mais óbvia é que aptitude fornece uma interface de menu de terminal (muito parecida com o Synaptic em um terminal), enquanto apt-get não.

Considerando apenas as interfaces de linha de comando de cada um, elas são bastante semelhantes e, na maior parte, não importa qual delas você usa. Versões recentes dos dois rastrearão quais pacotes foram instalados manualmente e quais foram instalados como dependências (e, portanto, elegíveis para remoção automática). Na verdade, acredito que ainda mais recentemente, as duas ferramentas foram atualizadas para compartilhar o mesmo banco de dados de pacotes manualmente vs instalados automaticamente, então casos em que você instala algo com o apt-get e depois o aptitude quer desinstalá-lo o passado.

Existem algumas pequenas diferenças:

    O
  • aptitude removerá automaticamente pacotes elegíveis, enquanto o apt-get requer um comando separado para fazer isso
  • Os comandos para upgrade vs. dist-upgrade foram renomeados no aptitude para os nomes provavelmente mais precisos safe-upgrade e upgrade completo , respectivamente.
  • O
  • aptitude realmente executa as funções não apenas do apt-get, mas também algumas de suas ferramentas associadas, como apt-cache e apt-mark.
  • O aptitude tem uma sintaxe de consulta ligeiramente diferente para a pesquisa (em comparação com o apt-cache)
  • O aptitude tem os comandos por que e por que não para dizer quais pacotes manualmente instalados estão impedindo uma ação que você pode querer executar .
  • Se as ações (instalação, remoção, atualização de pacotes) que você deseja causar conflitos, o aptitude pode sugerir várias resoluções em potencial. O apt-get apenas diz "Sinto muito, Dave, não posso permitir que você faça isso".

Existem outras pequenas diferenças, mas essas são as mais importantes em que posso pensar.

Em suma, o aptitude pertence mais corretamente à categoria com o Synaptic e outros frontends de gerenciador de pacotes de nível superior. Acontece que também tem uma interface de linha de comando parecida com o apt-get.

Rodada de bônus: o que é wajig?

Lembre-se de como mencionei as ferramentas "complementares" como apt-cache e apt-mark? Bem, há um monte deles, e se você usá-los muito, você pode não lembrar quais fornecem quais comandos. wajig é uma solução para esse problema. É essencialmente um despachante, um wrapper em torno de todas essas ferramentas. Também aplica sudo quando necessário. Quando você diz wajig install foo , wajig diz "Ok, install é fornecido por apt-get e requer privilégios de administrador" e executa sudo apt-get install foo . Quando você diz wajig search foo , wajig diz "Ok, search é fornecido por apt-cache e não requer privilégios de administrador" e executa apt-cache search foo . Se você usar wajig ao invés de apt-get, apt-mark, apt-cache e outros, então você nunca terá este problema:

$ apt-get search foo
E: Invalid operation search

Se você quiser saber o que o wajig está fazendo nos bastidores, quais ferramentas ele está usando para implementar um comando específico, ele tem os modos --simulate e --teaching .

Dois comandos wajig que eu uso com frequência são wajig listfiles foo e wajig whichpkg /usr/bin/foo .

    
por 21.08.2010 / 02:37
70

Eu sempre me perguntei. Destaques da Wikipedia que a principal característica distintiva é que o aptitude tem uma interface em modo texto (curses) em tela cheia. O fato de você poder usar a maioria dos argumentos de comando apt-get com aptitude em si é apenas uma decisão de design para facilitar para apt-get usuários migrar para aptitude e vice-versa.

Eu nunca usei wajig , mas a documentação sugere que é apenas um script que sabe se você está passando um arquivo deb (quando executa dpkg ) ou um nome de pacote apt ( quando ele executa apt-get ). Você poderia experimentá-lo e ver se é isso que ele faz?

É claro que a diferença real é:

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.
    
por 19.08.2010 / 07:33
26

O aptitude é o programa preferido para o gerenciamento de pacotes do console, tanto para instalações de pacotes quanto para atualizações de pacotes ou sistemas no Debian.

Aqui está uma visão geral da ferramenta e os recursos que ela tem sobre o apt-get: link

Então, meu conselho é apenas apt-get install aptitude:)

    
por 11.08.2010 / 09:10
20

aptitude lembra quais pacotes foram explicitamente solicitados e quais foram instalados apenas devido a dependências. Ele desinstalará automaticamente pacotes que não foram explicitamente solicitados quando não forem mais necessários.

apt-get trata os pacotes solicitados explicitamente e suas dependências da mesma forma.

Portanto, é melhor usar aptitude , isso ajuda a manter seu sistema limpo.

    
por 19.08.2010 / 08:59
12

apt-get , bem como as várias ferramentas complementares, usam significativamente menos memória que as respectivas chamadas de linha de comando de aptitude e são um pouco mais rápidas. Eu estava felizmente inconsciente disso até que eu tentei atualizar a instalação do debian em um velho thinkpad Pentium com 32 MB de RAM. Demoraria uma ou duas horas de "swap-thrashing" para executar apt-get , que foi completado com sucesso; aptitude falharia depois que eu pensasse em um período mais longo de tempo.

Esta distinção é mais ou menos irrelevante em qualquer coisa que se assemelhe a um sistema de desktop moderno.

    
por 16.02.2011 / 05:30
9

Com base na resposta do @Gurav, os ovos de páscoa nos dois gerenciadores de pacotes são bem engraçados!

siddhartha@siddhartha-dev:~$ apt-get  moo
             (__) 
             (oo) 
       /------\/ 
      / |    ||   
     *  /\---/\ 
        ~~   ~~   
..."Have you mooed today?"...

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

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

e assim por diante.

    
por 19.04.2015 / 22:57
8

Eles oferecem a mesma funcionalidade básica: instalar e remover pacotes da linha de comando.

Veja aqui uma comparação mais detalhada, postada no site Ubuntu Stack Exchange :

    
por 11.08.2010 / 10:28
7

Como mencionado link , aptitude tem muito mais facilidade de usar interface de linha de comando.

Under the hood, aren't they using the same APT system? Yes.

O sistema subjacente não é apenas apt , mas dpkg . Este sistema é tão burro quanto o RPM, ele só pode manipular a instalação e administração de pacotes únicos. Ele rastreia quais arquivos instalados pertencem a qual pacote.

apt manipula os downloads de repositórios, o rastreamento de dependências e assim por diante para todos os pacotes individuais - que são instalados usando dpkg . aptitude faz o mesmo, com uma interface diferente.

    
por 19.08.2010 / 22:43
6

Eu não tenho certeza se isso ainda vale, mas o desenvolvedor de ponta do Debian Joey Hess sempre defendeu o aptitude sobre o apt-get. Claro que as coisas mudam conforme o software evolui. O apt-get agora lida com as dependências melhor do que costumava. Do link

Data: 20 de abril de 2004 22:27:12 -0400 De: Joey Hess

Nove razões pelas quais você deveria estar usando o aptitude em vez do apt-get ou dselect.

  1. o aptitude pode ser parecido com o apt-get

    Se você executar 'atualização do aptitude' ou 'atualização do aptitude' ou 'aptitude install ', parece e funciona como o apt-get, com algumas melhorias. Portanto, não há curva de aprendizado.

    (Se você é um usuário do dselect, a curva de aprendizado obviamente não é uma das suas problemas.)

  2. aptitude rastreia pacotes instalados automaticamente

    Pare de se preocupar com a remoção de bibliotecas não usadas e suporte a pacotes de Seu sistema. Se você usar o aptitude para instalar tudo, ele irá manter rastrear quais pacotes são obtidos apenas por dependências e remover esses pacotes quando eles não são mais necessários.

  3. aptidão sanely manipula recomenda

    Uma falha de longa data do apt-get tem sido a falta de suporte para o relacionamento Recomenda. O que é um problema porque muitos pacotes no Debian confiar Recomenda para puxar no software que o usuário médio geralmente usa com o pacote. Esta é uma causa não incomum de problema, mesmo que o apt-get recentemente tenha se tornado capaz de pelo menos mencionar pacotes recomendados, é fácil perder seus avisos.

    O Aptitude é compatível com o Recommend por padrão e pode ser configurado para suporte Sugere também. Até suporta a instalação de pacotes recomendados quando usado no modo de linha de comando.

  4. use o aptitude como um usuário normal e evite usar o seu sistema

    Talvez você não saiba que pode executar o aptitude no modo gui como um recurso do utilizador. Faça as alterações que você gostaria de experimentar. Se você entrar em um real bagunça, você pode clicar em 'q' e sair, suas alterações não serão salvas. (O Aptitude também permite que você use ctrl-u para desfazer as alterações). como um usuário normal, você não pode mangueira seu sistema até que você diga aptidão para faça alguma coisa, no ponto em que ele solicitará sua senha root.

  5. O aptitude tem uma interface poderosa e recursos de pesquisa

    Entre o navegador categórico do aptitude e seu ótimo suporte para filtragem de estilo mutt e pesquisa de pacotes por nome, descrição, mantenedor, dependências, etc, você deve ser capaz de encontrar pacotes mais rápido do que nunca usando o aptitude.

  6. O aptitude facilita o acompanhamento de software obsoleto

    Se o Debian parar de distribuir um pacote, o apt o deixará no seu sistema indefinidamente, sem avisos e sem atualizações. Aptidão lista tais pacotes em sua seção "Pacotes Obsoletos e Criados Localmente", para que você pode ser informado do problema e fazer algo sobre isso.

  7. aptitude tem uma interface para o sistema de tarefas Debian

    O Aptitude permite que você use o sistema de tarefas do Debian como ele foi projetado para ser usava. Você pode procurar as tarefas disponíveis, selecionar uma tarefa para instalação e em seguida, cavar e desmarcar partes da tarefa que você não quer. O apt-get não tem suporte para tarefas, e o aptitude é melhor até do que ferramentas de propósito especial como tasksel.

  8. aptitude suporta múltiplas fontes

    Se o seu sources.list estiver configurado para fazer várias versões de um pacote disponível, o aptitude permite que você faça uma pesquisa detalhada versões e escolha uma versão não padrão para instalar. Se um pacote quebrar na instável, basta revertê-lo para a versão em teste.

  9. o aptitude registra suas ações

    Pacote de registros do Aptitude, instala, atualiza e remove / varlog / aptitude, que pode ser útil para descobrir por que as coisas começaram quebrando após a atualização de ontem, ou quando você removeu um partiticlar pacote.

veja tímido jo

=================== há também uma discussão mais recente a partir de 2010 aqui link no StackExchange.

    
por 25.12.2013 / 15:33
5

Tanto o apt-get quanto o aptitude dependem da biblioteca do APT, sim.

Veja minha resposta no serverfault.com .

O Debian não é uma entidade monolítica, existem pessoas com opiniões diferentes e o mantenedor da aptidão decidiu que o apt-get tinha algumas deficiências e queria construir algo melhor com o aptitude. Ele melhorou a lógica para encontrar soluções para cenários complexos de atualização, adicionou uma GUI para o console, etc. E há mais do que apenas apt-get e aptitude, veja meu artigo apt-get, aptitude,… escolha o gerenciador de pacotes correto para você .

    
por 21.06.2011 / 10:45