Qual é a diferença entre apt-get e aptitude?

56

Não entendo porque existem dois programas diferentes em uma instalação mínima para instalar o software. Eles não fazem a mesma coisa? Existe uma grande diferença? Eu li em todos os lugares para usar o aptitude sobre o apt-get, mas eu ainda não sei a diferença

    
por Thomaschaaf 06.06.2009 / 14:25

9 respostas

48

O aptitude é um invólucro para o dpkg exatamente como o apt-get / apt-cache, mas é uma ferramenta completa para pesquisar / instalar / remover / consultar. Alguns exemplos que o apt pode não fornecer:

$ aptitude why libc6
i   w64codecs Depends libc6 (>= 2.3.2)
$ aptitude why-not libc6
Unable to find a reason to remove libc6.

$ aptitude show libc6
Package: libc6
State: installed
Automatically installed: no
Version: 2.9-4ubuntu6
Priority: required
Section: libs
Maintainer: Ubuntu Core developers <[email protected]>
Uncompressed Size: 12.1M
Depends: libgcc1, findutils (>= 4.4.0-2ubuntu2)
Suggests: locales, glibc-doc
Conflicts: libterm-readline-gnu-perl (< 1.15-2), 
tzdata (< 2007k-1), tzdata-etch, nscd (< 2.9)
Replaces: belocs-locales-bin
Provides: glibc-2.9-1
Description: GNU C Library: Shared libraries
 Contains the standard libraries that are used by nearly all programs 
 on the system. This package includes shared versions of the standard 
 C library and the standard math library, as well as many others.
    
por 06.06.2009 / 14:34
44
mikeage@linode ~$ aptitude -h | tail -n 1
              This aptitude does not have Super Cow Powers.
mikeage@linode ~$ apt-get -h | tail -n 1
                   This APT has Super Cow Powers.
mikeage@linode ~$ aptitude moo
    There are no Easter Eggs in this program.
mikeage@linode ~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...
mikeage@linode ~$ aptitude -v moo
There really are no Easter Eggs in this program.
mikeage@linode ~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
mikeage@linode ~$ aptitude -vvv moo
Stop it!
mikeage@linode ~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
mikeage@linode ~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
mikeage@linode ~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course. 
    
por 07.06.2009 / 20:27
19

A ferramenta oficial que é usada atualmente no instalador Debian e recomendada nas notas de lançamento é aptitude .

O Aptitude oferece uma interface de curses (quando executado sem qualquer parâmetro) e uma interface de linha de comando que pode fazer quase tudo que apt-cache / apt-get faz. Ele também tem um melhor resolvedor de dependências que permite navegar entre várias soluções. Mesmo ao usar a versão da linha de comando, você pode interagir com a solução proposta e dar ordens ou dicas suplementares (como instalar ou remover um pacote recomendado por outro).

Mas o aptitude é baseado na biblioteca libapt (não é um empacotador direto do dpkg) e como tal depende do pacote apt , então você não pode ter o aptitude instalado sem o apt-get (que também está no apt pacote).

$ dpkg --status aptitude| grep Depends
Depends: libapt-pkg-libc6.9-6-4.7, [...]
$ dpkg --status apt|grep Provides
Provides: libapt-pkg-libc6.9-6-4.7
$ dpkg --search /usr/lib/libapt-pkg-libc6.9-6.so.4.7 /usr/bin/apt-get
apt: /usr/lib/libapt-pkg-libc6.9-6.so.4.7
apt: /usr/bin/apt-get

Para aprender mais sobre como o apt / dpkg / aptitude interage você pode checar o diagrama feito por Daniel Burrows (autor principal do aptitude). Outro diagrama apresenta as informações armazenadas pelas várias ferramentas de gerenciamento de pacotes: Um mapa dos arquivos de estado apt e dpkg .

Você também pode ler meu artigo apt-get, aptitude,… escolha o gerenciador de pacotes certo para você

    
por 07.06.2009 / 16:19
7

aptitude lembra quais pacotes você deliberadamente instalou e quais foram instalados automaticamente para satisfazer dependências. Após a remoção de um pacote, o aptitude removerá os pacotes instalados automaticamente para manter seu sistema organizado. O apt-get não é tão inteligente.

O aptitude rapidamente se tornará uma ferramenta indispensável quando você usar diferentes repositórios com diferentes versões de um pacote. Imagine que você está trabalhando com backports.org ou repositórios inofficiais como o debian-multimedia.org. Em seguida, o aptitude mostrará (na parte inferior da página de detalhes de um determinado pacote) o número da versão disponível e permitirá que você selecione um.

Se você entrar em uma situação em que os programas entram em conflito devido ao uso de repositórios inofficial, você verá uma exibição "Quebrada: ..." na parte superior. Você pode digitar l ~ b (limit / flag / broken) e apenas obter uma lista de pacotes conflitantes entre si. Torna muito mais fácil resolver o conflito manualmente.

Futhermore você pode usar "l" para limitar a lista de pacotes. Imagine que você está procurando pacotes que começam com "openoffice", em seguida, pressione "l" e digite "^ openoffice" (é uma expressão regular) e você verá apenas esses pacotes. Escolha uma "lista de pacotes simples" no menu e você alcançará sua meta rapidamente.

O manual completo é muito grande e oferece muito mais filtros e possibilidades. Mesmo que você não os conheça, o aptitude é um substituto útil para o apt-get e você pode usá-lo com parâmetros comuns como

aptitude install ... (instale ou atualize um pacote) aptitude remove ... (remova as porções binárias de um pacote, mas preserve sua configuração / etc) limpeza de aptitide ... (remova o pacote completamente incluindo sua configuração)

    
por 07.06.2009 / 22:22
5

Além de fornecer uma interface de usuário de console bonita ao executar aptitude sem argumentos, ela combina os vários comandos apt-* (e dselect ) em um único utilitário.

Para procurar um pacote e instalá-lo, usando o apt-get:

apt-cache search somepkg
apt-get install somepkg

.. mas com o aptitude é o mesmo comando:

aptitude search somepkg
aptitude install somepkg

aptitude tem alguns recursos adicionais, como aptitude changelog somepkg e coisas como manter pacotes (para impedi-los de serem atualizados) - nada que você não pudesse alcançar através de outros comandos / métodos, é apenas mais unificado e agradável de usar.

    
por 06.06.2009 / 17:08
4

como você sabe quando instala um pacote, se ele precisar de outros pacotes (dependências), eles serão baixados e instalados também. O aptitude rastreia, no momento da instalação, os pacotes que vêm com o instalado, assim, quando você remover o último, o aptitude solicitará a remoção das outras dependências "órfãs" (agora não usadas). O apt-get irá mantê-los em seu sistema silenciosamente se você remover o pacote "main".

parece que as versões mais recentes do apt-get têm uma funcionalidade semelhante: link

    
por 06.06.2009 / 14:35
3

A maior diferença é que o aptitude é projetado para ser interativo, onde as ferramentas apt são mais adequadas para o trabalho de script. Você pode usar o último, ou seja, as ferramentas apt, interativamente muito bem com muito mais esforço para obter os mesmos resultados que o aptitude fornece. Se você teve que se contentar com apenas uma ferramenta ou outra por algum motivo, então você precisa decidir quanto esforço você quer colocar em seu gerenciamento de pacotes.

    
por 06.06.2009 / 14:56
1

Uma das vantagens do aptitude é sua capacidade de calcular dependências. Em primeiro lugar, ele pode lidar com interdependências complicadas, sem intervenção por si mesmo, que muitas vezes apt-get falha. Mas se você não gostar da solução apresentada (e marcar sua própria solução para demonstrar como ela é boa), você pode pedir para ela ir embora e encontrar outra solução para resolver o conflito. / p>

Realmente faz algum gerenciamento incrível de pacotes.

    
por 06.06.2009 / 14:55
1

A maior diferença é: digite "aptitude" sem nenhum parâmetro.

Ele fornece uma interface de usuário baseada em texto, você pode usar keybord para pesquisar / navegar, etc., ver informações sobre dependências, dependências reversas, todas as versões disponíveis de um pacote e fazer qualquer operação do gerenciador de pacotes a partir dessa tela .

Você pode pressionar "g" para revisar as alterações, modificar as adições e remoções de pacotes, se necessário, e aplicar todas as operações pendentes.

Uma ótima maneira visual de gerenciamento de pacotes em uma conexão ssh ou terminal antigo simples.

    
por 06.06.2009 / 15:52