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

56

Não entendo por que 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 ainda não sei a diferença

Thomaschaaf
fonte

Respostas:

48

O aptitude é um invólucro para o dpkg, assim como o apt-get / apt-cache, mas é uma ferramenta completa para procurar / 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.
katriel
fonte
10
para não mencionar: $ aptitude changelog bash
pgs 06/06
Outros truques que aptitudesabem que nem o mais recente aptpodem fazer: aptitude search '~i linux'pesquisam pacotes com o linuxnome ou a descrição instalados; aptitude search '~o'lista pacotes obsoletos (pacotes instalados que não são mais fornecidos por nenhum repositório); aptitude search '!~M ~i'mostra pacotes que não estão marcados como instalados automaticamente; aptitude search '~i lib.*-dev'mostra as bibliotecas de desenvolvimento instaladas e você pode substituir searchpor markautoou unmarkautomarcar esses pacotes como instalados automática ou manualmente.
Mikko Rantalainen 15/01
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. 
Mikeage
fonte
19

A ferramenta oficial atualmente usada no instalador da Debian e recomendada nas notas de versão é aptitude.

Aptitude oferece uma interface maldições (quando executado sem qualquer parâmetro) e uma interface de linha de comando que pode fazer quase tudo o que apt-cache/ apt-getfaz. Ele também possui um melhor resolvedor de dependência 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 fornecer pedidos ou dicas adicionais (como instalar ou remover um pacote recomendado por outro).

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

$ 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 verificar o diagrama feito por Daniel Burrows (principal autor do aptitude). Outro diagrama apresenta as informações armazenadas pelas várias ferramentas de gerenciamento de pacotes: Um mapa dos arquivos de estado do apt e do dpkg .

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

Raphaël Hertzog
fonte
7

aptitudelembra quais pacotes você instalou deliberadamente 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 arrumado. apt-getnão é tão esperto.

aptituderapidamente se tornará uma ferramenta indispensável quando você usar repositórios diferentes com versões diferentes de um pacote. Imagine que você está trabalhando com backports.org ou repositórios não oficiais como o debian-multimedia.org . Em seguida, aptitudeserá exibido (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 entrem em conflito devido ao uso de repositórios não oficiais, você verá uma exibição "Quebrado: ..." na parte superior. Você pode digitar l ~ b (limit / flag / broken) e apenas obter uma lista de pacotes que conflitam entre si. Torna muito mais fácil resolver o conflito manualmente.

Além disso, você pode usar " l" para limitar a lista de pacotes. Imagine que você está procurando pacotes que iniciam com " openoffice ", 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á seu objetivo rapidamente.

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

aptitude install ... (install or upgrade a package)
aptitude remove ... (remove the binary portions of a package but preserve your /etc configuration)
aptitude purge ... (remove the package completely including your configuration)
Signum
fonte
2
Na verdade, a partir de Lenny, o apt-get também rastreia pacotes instalados apenas como dependências de algo que você pediu explicitamente. Eu mesmo uso o aptitude, mas apt-get autoremoveagora remove os pacotes que foram instalados como dependências de um pacote que já foi removido.
Telemachus
Hoje em dia você também pode usar apenas apte pode fazer uma mistura de coisas que apt-gete apt-cacheusado para fazer. Por exemplo, apt search foolistará pacotes que contenham foonome ou descrição. apt install fooinstalará o pacote chamado foose disponível e apt policy foolistará a versão atualmente instalada e todas as versões disponíveis do pacote foo.
Mikko Rantalainen 15/01
A aptitudeainda pode fazer mais do que apt, mas simples apté muitas vezes muito mais rápido.
Mikko Rantalainen 15/01
5

Além de fornecer uma interface do usuário bonita do console quando você executa aptitudesem argumentos, ele combina os vários apt-*comandos (e dselect) em um utilitário.

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

apt-cache search somepkg
apt-get install somepkg

..mas com o aptitude é o mesmo comando:

aptitude search somepkg
aptitude install somepkg

aptitudepossui alguns recursos adicionais, como aptitude changelog somepkgcoisas como guardar pacotes (para impedir que eles sejam atualizados) - nada que você não possa alcançar por meio de outros comandos / métodos, é apenas mais unificado e agradável de usar.

dbr
fonte
3
Pena que não tem uma "política de cache do apt" equivalente.
hayalci
4

como você sabe quando instala um pacote, se ele precisar de outros pacotes (dependências), eles também serão baixados e instalados. O aptitude rastreia, no momento da instalação, os pacotes que acompanham o instalado; assim, quando você remove o último, o aptitude solicita a remoção das outras dependências "órfãs" (agora não utilizadas). O apt-get os manterá 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: http://www.psychocats.net/ubuntu/aptitude

gpilotino
fonte
aptitudeou, de aptfato, não mantém a lista de pacotes que foram instalados como dependências para um determinado pacote. Ele simplesmente rastreia se um pacote foi instalado manual ou automaticamente. E se um pacote foi marcado como instalado automaticamente e nenhum outro pacote Depende ou Recomenda, ele será removido com apt autoremoveou aptitude dist-upgrade.
Mikko Rantalainen 15/01
3

A maior diferença é que o aptitude foi projetado para ser interativo, onde as ferramentas do apt são mais adequadas para o trabalho de script. Você pode usar o último, ou seja, as ferramentas do apt, interativamente muito bem, com muito mais esforço para obter os mesmos resultados que o aptitude fornece. Se você tiver que escolher apenas uma ferramenta ou outra por algum motivo, precisará decidir quanto esforço deseja colocar no gerenciamento de pacotes.

user3146
fonte
1

Uma das sérias vantagens do aptitude é sua capacidade de calcular dependências. Primeiro, ele pode lidar com interdependências complicadas sem a intervenção de você mesmo, o que geralmente ocorre quando o apt-get falha. Mas se você não gostar da solução que ela apresentou (e ela pontuará sua própria solução para demonstrar como é boa), peça que ela desapareça e encontre outra solução para resolver o conflito.

Realmente faz algum gerenciamento incrível de pacotes.

Cooperativas
fonte
1

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

Ele fornece uma interface de usuário baseada em texto, você pode usar o teclado para pesquisar / navegar etc., ver informações sobre dependências, dependências reversas, todas as versões disponíveis de um pacote e você pode executar qualquer operação de 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 em um terminal antigo comum.

hayalci
fonte