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

256

Eu sei que tanto apt-gete aptitudesão interfaces de gerenciamento de pacotes linha de comando no Debian derivado Linux, com diferentes opções, mas 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? (Pergunta bônus: o que diabos é wajig ?)

Kevin Cantu
fonte
Eu sei que não é o respondedor correto para sua pergunta, mas por que você não pode tentar sináptica? é muito usuário e faz o download e instala dependências automaticamente. O gnome não está presente no seu sistema?
Hemant
Sou tendencioso, mas acho que essa pergunta no site Ubuntu SE pode ser relevante.
David Z
@Wim porque da parte wajig desta pergunta que decidiu fundir 244 sobre esta questão, em vez do contrário
xenoterracide
1
Vale a pena notar que a aptidão está previsto para a remoção da instalação padrão na próxima versão do Ubuntu (embora você poderia sempre instalá-lo usando o apt-get depois)
Rob Cowell

Respostas:

223

A diferença mais óbvia é que aptitudefornece uma interface de menu de terminal (semelhante ao Synaptic em um terminal), enquanto apt-getnão fornece.

Considerando apenas as interfaces de linha de comando de cada uma, elas são bastante semelhantes e, na maioria das vezes, realmente não importa qual delas você usar. As versões recentes de ambos rastrearão quais pacotes foram instalados manualmente e quais foram instalados como dependências (e, portanto, elegíveis para remoção automática). De fato, acredito que, ainda mais recentemente, as duas ferramentas foram atualizadas para compartilhar o mesmo banco de dados de pacotes instalados manualmente ou automaticamente, portanto, os casos em que você instala algo com o apt-get e depois o aptitude deseja desinstalá-lo são principalmente uma coisa do 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 atualização vs. dist-upgrade ter sido renomeado na aptidão para os nomes provavelmente mais precisos seguro à atualização e à atualização completa , respectivamente.
  • O aptitude realmente executa as funções não apenas do apt-get, mas também de algumas de suas ferramentas complementares, como apt-cache e apt-mark.
  • O aptitude possui uma sintaxe de consulta ligeiramente diferente para pesquisa (em comparação com o apt-cache)
  • O aptitude possui os comandos por que e por que não para lhe dizer quais pacotes instalados manualmente 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 executar causam conflitos, o aptitude pode sugerir várias possíveis soluções. O apt-get dirá "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 consigo pensar.

Resumindo, o aptitude pertence mais apropriadamente à categoria com o Synaptic e outras interfaces de gerenciador de pacotes de nível superior. Acontece que também possui uma interface de linha de comando que se assemelha ao apt-get.

Rodada de Bônus: O que é wajig?

Lembra-se de como mencionei essas ferramentas "complementares", como apt-cache e apt-mark? Bem, existem vários deles, e se você os usa muito, talvez não se lembre de quais fornecem quais comandos. O wajig é uma solução para esse problema. É essencialmente um expedidor, um invólucro em torno de todas essas ferramentas. Também se aplica ao sudo quando necessário. Quando você diz wajig install foo, wajig diz "Ok, installé fornecido por apt-gete requer privilégios de administrador" e é executado sudo apt-get install foo. Quando você diz wajig search foo, wajig diz "Ok, searché fornecido apt-cachee não requer privilégios de administrador" e é executado apt-cache search foo. Se você usa wajig em vez de apt-get, apt-mark, apt-cache e outros, nunca terá esse 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 possui --simulatee --teachingmodos.

Dois comandos wajig que eu costumo usar são wajig listfiles fooe wajig whichpkg /usr/bin/foo.

Ryan Thompson
fonte
Um grande problema que tive com o aptitude é que leva muito tempo para concluir as guias nos nomes dos pacotes (por exemplo, aptitude install linux-imguia), enquanto é muito rápido para o apt-get. Parece haver algum cache presente na família apt-get que não possui aptidão.
Leveque
12
aptitudetambém tem o incrível aptitude searchque você pode usar com padrões de pesquisa muito poderosos . Você tem aptitude reinstall. Você também pode usar a interface ncurses (menu do terminal) para preparar operações complexas de pacotes, como atualização parcial, remover um pacote, congelar outro, atualizar este, que você poderá executar em uma única operação ... Ah, e ele tem um resolução de conflitos interativa .
Totor 21/03
3
@Vaca santa do motor, usando a interface ncurses do aptitude para preparar comandos, acabei de me vender no aptitude de uma vez por todas! (depois de anos de reflexão aptidão vale a pena fazer, mas digitando apt-get de memória muscular)
TJ Ellis
2
... e aptitudetambém precisa aptitude download package-nameobter o arquivo .deb do pacote!
Totó 18/10
2
É apenas uma coisa que eu descobri que não está, aptitudemas está apt-get, e é isso apt-get --compile source package-name. apt-get build-dep package-nameexistem, mas acho que aptitude build-dep package-namefazem um trabalho melhor.
Anders
71

Eu sempre me perguntei. A Wikipedia destaca que a principal característica distintiva é que o aptitude possui uma interface em modo de texto (maldições) em tela cheia. O fato de você poder usar a maioria dos apt-getargumentos de comando aptitudeé apenas uma decisão de design para facilitar apt-geta passagem dos usuários aptitudee vice-versa.

Eu nunca usei wajig, mas a documentação sugere que é apenas um script que sabe se você está passando um debarquivo (quando é executado dpkg) ou um aptnome de pacote (quando é executado apt-get). Você poderia experimentar e ver se é isso que faz?

Obviamente, a verdadeira diferença é:

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.
Gaurav
fonte
52
Não! aptitudetem mais. Você esqueceu de colocar as -vbandeiras sem fim moo. (Você pode ir até -vvvvvv)
Umang
12
Não se esqueça dos super importantes poderes de vaca, que apt-gettêm, mas aptitudenão o fazem. (Tente --helpem ambos)
derobert
rindo muito. que é uma resposta divertido de ler, embora @ resposta de ryan é muito mais elaborado;)
Michael Trouw
26

O aptitude é o programa preferido para 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 dos recursos sobre o apt-get: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

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

dsp
fonte
2
As notas de versão dizem que o apt-get agora é recomendado sobre o aptitude para atualizações de compressão.
jrdioko
1
Sim, mas apenas para isso. Caso contrário, eles são considerados iguais, mas aptitudepossuem muitos recursos mais avançados, como pesquisa e modo de tela cheia apt-get.
Anders
Por algum motivo, o aptitude foi usado para instalar o emacs e sem o remover, removeu o gdm! Então, por enquanto, usaremos o apt-get, mas estou muito curioso com o aptitude.
TomFirth 26/03
20

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

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

Para uma melhor utilização aptitude, isso ajuda a manter seu sistema limpo.

starblue
fonte
4
Isso costumava ser verdade, mas eu sei que o meu apt-get tem um apt-get autoremovecomando para remover pacotes instalados apenas como dependências. Não sei quando esse recurso foi adicionado, mas um site sugere que isso pode ter acontecido com o Debian Lenny (junho de 2010).
Gaurav
8
apt-get autoremovenão remove pacotes instalados apenas como dependências, remove dependências órfãs, o que é uma diferença sutil; ele não pode dizer se um pacote 'leaf' foi instalado com intenção ou como uma dependência, então deixa, onde o aptitude o conheceria e o removeria.
pjz
Eu estou vendido! Existem outras coisas legais, aptitudemas esse é um recurso matador.
Iconoclast
12

apt-get, assim como as várias ferramentas complementares, usam significativamente menos memória do que as respectivas chamadas de linha de comando aptitudee são um pouco mais rápidas. Fiquei inconsciente disso até tentar atualizar a instalação do debian em um thinkpad pentium antigo e enrolado com 32 MB de RAM. Levaria uma ou duas horas de troca e troca apt-get, que foi concluída com êxito; aptitudefalharia depois que eu acho que por um longo período de tempo.

Essa distinção é mais ou menos irrelevante em qualquer coisa semelhante a um sistema de desktop moderno.

intuído
fonte
9

Com base na resposta de @ Gaurav, 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.

Siddhartha
fonte
7

Como mencionado , http://pthree.org/2007/08/12/aptitude-vs-apt-get/ , aptitudepossui uma interface de linha de comando muito mais fácil de usar.

Sob o capô, eles não estão usando o mesmo sistema APT? Sim.

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

aptlida com downloads de repositórios, rastreamento de dependências etc. para todos os pacotes individuais - que ele instala usando dpkg. aptitudefaz o mesmo, com uma interface diferente.

vdboor
fonte
6

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

Veja minha resposta em serverfault.com .

O Debian não é uma entidade monolítica, existem pessoas com opiniões diferentes e o mantenedor do aptitude decidiu que o apt-get tinha algumas falhas e queria criar algo melhor com o aptitude. Ele aprimorou a lógica para encontrar soluções para cenários de atualização complexos, 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 certo para você .

Raphaël Hertzog
fonte
6

Eu não tenho certeza se isso ainda é válido, mas o desenvolvedor do Debian, Joey Hess, sempre foi um defensor do apt-get. É claro que as coisas mudam à medida que o software evolui. O Apt-get agora lida com dependências melhor do que costumava. De http://lists.debian.org/debian-user/2004/04/msg03138.html

Data: Terça-feira, 20 de abril de 2004 22:27:12 -0400 De: Joey Hess

Nove razões pelas quais você deve usar o aptitude em vez de apt-get ou dselect.

  1. aptitude pode parecer com apt-get

    Se você executar o 'aptitude update' ou 'aptitude upgrade' ou 'aptitude install', ele parecerá e funcionará como o apt-get, com algumas melhorias. Portanto, não há curva de aprendizado.

    (Se você é um usuário dselect, a curva de aprendizado obviamente não é um dos seus problemas.)

  2. O aptitude rastreia pacotes instalados automaticamente

    Pare de se preocupar com a remoção de bibliotecas não utilizadas e pacotes de suporte do seu sistema. Se você usar o aptitude para instalar tudo, ele acompanhará quais pacotes são puxados apenas pelas dependências e os removerá quando não forem mais necessários.

  3. aptitude lida com sanidade recomenda

    Um fracasso de longa data do apt-get tem sido a falta de suporte para o relacionamento com Recomendações. O que é um problema, porque muitos pacotes no Debian dependem do Recomendável para obter software que o usuário comum geralmente usa com o pacote. Essa é uma causa incomum de problemas, embora o apt-get recentemente tenha conseguido mencionar pelo menos os pacotes recomendados, é fácil perder seus avisos.

    O Aptitude suporta Recomendações por padrão e também pode ser configurado para suportar Sugestões. Ele também 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 mangueira no seu sistema

    Talvez você não saiba que pode executar o aptitude no modo GUI como um usuário comum. Faça as alterações que você deseja experimentar. Se você entrar em uma confusão real, pode pressionar 'q' e sair, suas alterações não serão salvas. (O Aptitude também permite que você use o ctrl-u para desfazer as alterações.) Como ele está funcionando como um usuário normal, você não pode usar o seu sistema até instruir o aptitude a fazer alguma coisa; nesse momento, ele solicitará sua senha root.

  5. O aptitude possui uma poderosa interface de usuário e recursos de pesquisa

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

  6. o aptitude facilita o rastreamento de software obsoleto

    Se o Debian parar de distribuir um pacote, o apt o deixará no seu sistema indefinidamente, sem avisos e atualizações. O Aptitude lista esses pacotes na seção "Pacotes obsoletos e criados localmente", para que você possa ser informado sobre o problema e fazer algo a respeito.

  7. O aptitude possui 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 usado. Você pode procurar as tarefas disponíveis, selecionar uma tarefa para instalação e, em seguida, pesquisar nela e desmarcar partes da tarefa que não deseja. O apt-get não tem suporte para tarefas, e o aptitude é melhor ainda do que ferramentas para fins especiais, como tasksel.

  8. aptitude suporta múltiplas fontes

    Se o seu sources.list estiver configurado para disponibilizar várias versões de um pacote, o aptitude permite pesquisar detalhadamente as versões disponíveis e escolher uma versão não padrão para instalar. Se um pacote for instável, basta revertê-lo para a versão em teste.

  9. o aptitude registra suas ações

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

- veja tímido jo

=================== Há também uma discussão mais recente a partir de 2010 aqui https://superuser.com/questions/93437/aptitude-vs-apt-get-which- é a ferramenta recomendada para uso correto no StackExchange.

Manselton
fonte