Pesquisa de site

O que é APT e aptidão? e qual é a verdadeira diferença entre eles?


Aptitude e apt-get são duas das ferramentas populares que lidam com o gerenciamento de pacotes. Ambos são capazes de lidar com todos os tipos de atividades em pacotes, incluindo instalação, remoção, pesquisa, etc. Mas ainda existem diferenças entre as duas ferramentas que fazem os usuários preferirem uma à outra. Quais são as diferenças que fazem com que essas duas ferramentas sejam consideradas separadamente é o escopo deste artigo.

O que é adequado

Apt ou Advanced Packaging Tool é um software gratuito e de código aberto que gerencia facilmente a instalação e remoção de software. Inicialmente ele foi projetado para pacotes .deb do Debian, mas tornou-se compatível com o Gerenciador de Pacotes RPM.

Apt é uma linha de comando completa sem GUI. Sempre que invocado a partir da linha de comando junto com a especificação do nome do pacote a ser instalado, ele encontra esse pacote na lista configurada de fontes especificadas em '/etc/apt/sources.list' junto com a lista de dependências para esse pacote e os classifica e os instala automaticamente junto com o pacote atual, permitindo que o usuário não se preocupe em instalar dependências.

É altamente flexível, permitindo ao usuário controlar facilmente várias configurações, como: adicionar qualquer nova fonte para procurar pacotes, apt-pinning, ou seja, marcar qualquer pacote como indisponível durante a atualização do sistema, fazendo com que sua versão atual seja a versão final instalada, Atualização “inteligente”, ou seja, atualizar os pacotes mais importantes e deixar os menos importantes.

O que é aptidão?

O Aptitude é o front-end para uma ferramenta de empacotamento avançada que adiciona uma interface de usuário à funcionalidade, permitindo assim que um usuário pesquise interativamente um pacote e instale-o ou remova-o. Criado inicialmente para Debain, o Aptitude estende sua funcionalidade também para distribuições baseadas em RPM.

Sua interface de usuário é baseada na biblioteca ncurses que adiciona vários elementos comumente vistos em GUIs. Um de seus destaques é que ele pode emular a maioria dos argumentos de linha de comando do apt-get.

Ao todo, o Aptitude é um gerenciador de pacotes de nível superior que abstrai detalhes de baixo nível e pode operar tanto no modo UI interativo baseado em texto quanto até mesmo no modo não interativo de linha de comando.

Se você quiser saber o uso do APT e do Aptitude com exemplos do mundo real, consulte os artigos a seguir.

  1. Aprenda 25 exemplos úteis sobre APT-GET e APT-CACHE
  2. Aprenda gerenciamento de pacotes Linux com Aptitude e Dpkg

Quais são as diferenças entre APT e Aptitude?

Além da principal diferença ser que o Aptitude é um gerenciador de pacotes de alto nível, enquanto o APT é um gerenciador de pacotes de nível inferior que pode ser usado por outros gerenciadores de pacotes de nível superior, outros principais os destaques que separam esses dois gerenciadores de pacotes são:

  1. O Aptitude é mais vasto em funcionalidades do que o apt-get e integra funcionalidades do apt-get e suas outras variantes, incluindo apt-mark e apt -cache.

Enquanto o apt-get cuida de toda a instalação de pacotes, atualização, atualização do sistema, limpeza de pacotes, resolução de dependências, etc., o Aptitude lida com muito mais coisas que o apt, incluindo funcionalidades do apt-mark e apt-cache ou seja, procurar por um pacote na lista de pacotes instalados, marcar um pacote para ser instalado automática ou manualmente, reter um pacote tornando-o indisponível para atualização e assim por diante.

  1. Embora o apt-get não tenha UI, o Aptitude tem uma UI interativa somente de texto

Apt-get sendo um gerenciador de pacotes de nível inferior é restrito apenas à linha de comando, enquanto o Aptitude sendo uma ferramenta de nível superior tem uma interface interativa padrão somente de texto junto com a opção de operação de linha de comando digitando o necessário comandos.

  1. Aptitude tem um gerenciamento de pacotes melhor que o apt-get

Em muitas situações envolvendo instalação, remoção e resolução de conflitos de pacotes, o Aptitude prova seu valor, em vez do apt-get. Algumas das situações incluem:

1. Ao remover qualquer pacote instalado, o Aptitude removerá automaticamente os pacotes não utilizados, enquanto o apt-get precisaria que o usuário especificasse isso explicitamente adicionando opção adicional de '—auto-remove' ou especificando 'apt-get autoremove'.4

2. Para investigar melhor por que determinada ação está sendo bloqueada ou por que ou por que não uma determinada ação deve ser realizada, o Aptitude oferece 'por que' e ' comandos por que não'.

Like: O Aptitude pode encontrar o motivo para instalar um determinado pacote olhando na lista de pacotes instalados e verificando se algum dos pacotes sugeridos tem dependências ou alguma de suas dependências sugere aquele pacote ou assim por diante .

$ aptitude why yaws-wiki
i   doc-base  Suggests   dhelp | dwww | doc-central | yelp | khelpcenter4
p   dwww      Depends    apache2 | httpd-cgi
p   yaws      Provides   httpd-cgi
p   yaws      Suggests   yaws-wiki

Como aqui ele procurou o motivo para instalar um pacote chamado 'yaws-wiki' por ser sugerido por uma dependência (yaws) que fornece um pacote virtual (httpd-cgi) em qual pacote (dwww) tem dependência e o pacote (dwww) é sugerido por um dos pacotes instalados chamado ' doc-base'.

Este recurso está faltando no apt-get.

3. Embora o apt-get provavelmente desapareça em caso de ação conflitante em relação à instalação ou remoção do pacote com uma mensagem, o Aptitude pode sugerir possíveis medidas para eliminar esse conflito.

O Aptitude fornece uma pesquisa poderosa que pode ser usada para pesquisar quase qualquer pacote, não apenas no sistema, mas também em todo o repositório.

Enquanto apt-get precisa de outra variante do apt, ou seja, apt-cache para procurar um pacote, o Aptitude fornece uma maneira muito mais fácil e eficiente de procurar por um pacote que esteja instalado ou presente no repositório, mas ainda não foi instalado.

Pesquisando um pacote usando apt-cache vs Aptitude

$ apt-cache search 'python' | head -n4
kate - powerful text editor
kcachegrind-converters - format converters for KCachegrind profiler visualisation tool
kig - interactive geometry tool for KDE
python-kde4 - Python bindings for the KDE Development Platform

$ aptitude search 'python' | head -n4
i   bpython                         - fancy interface to the Python interpreter 
p   bpython-gtk                     - fancy interface to the Python interpreter 
p   bpython-urwid                   - fancy interface to the Python interpreter 
p   bpython3                        - fancy interface to the Python3 interpreter

Aqui, por padrão, tanto o apt-cache quanto o aptitude procuram por um pacote em toda a lista de pacotes no repositório, mas a saída do aptitude mostra se o pacote está instalado no sistema ou não fornecendo um sinalizador por pacote que aqui é 'p' indicando que o pacote está presente, mas não instalado e 'i' que indica que o pacote está instalado, enquanto apt -cache apenas lista o pacote e seus detalhes em uma linha, sem informar se o pacote está instalado ou não.

Alguns outros exemplos de pesquisa avançada de pacotes com Aptitude

1. Procurando por um pacote no repositório com 'python2.7' no nome do pacote e '2.7' em sua descrição.

$ aptitude search '~npython2.7 ~d2.7'
p   idle-python2.7                   - IDE for Python (v2.7) using Tkinter       
i   libpython2.7                     - Shared Python runtime library (version 2.7
p   libpython2.7:i386                - Shared Python runtime library (version 2.7
p   libpython2.7-dbg                 - Debug Build of the Python Interpreter (ver
p   libpython2.7-dbg:i386            - Debug Build of the Python Interpreter (ver
i A libpython2.7-dev                 - Header files and a static library for Pyth
p   libpython2.7-dev:i386            - Header files and a static library for Pyth
i   libpython2.7-minimal             - Minimal subset of the Python language (ver
p   libpython2.7-minimal:i386        - Minimal subset of the Python language (ver
i   libpython2.7-stdlib              - Interactive high-level object-oriented lan
p   libpython2.7-stdlib:i386         - Interactive high-level object-oriented lan
p   libpython2.7-testsuite           - Testsuite for the Python standard library 
i   python2.7                        - Interactive high-level object-oriented lan
p   python2.7:i386                   - Interactive high-level object-oriented lan
p   python2.7-dbg                    - Debug Build of the Python Interpreter (ver
p   python2.7-dbg:i386               - Debug Build of the Python Interpreter (ver
i A python2.7-dev                    - Header files and a static library for Pyth
p   python2.7-dev:i386               - Header files and a static library for Pyth
p   python2.7-doc                    - Documentation for the high-level object-or
p   python2.7-examples               - Examples for the Python language (v2.7)   
i   python2.7-minimal                - Minimal subset of the Python language (ver
p   python2.7-minimal:i386           - Minimal subset of the Python language (ver

Aqui '~n' indica o nome e '~d' indica a descrição. Outra forma do mesmo comando é:

aptitude search '?name(python2.7) ?description(2.7)'
Algumas outras bandeiras incluem:
  1. ~i ou ?installed(): Procurando um pacote apenas na lista de pacotes instalados.
  2. ~U ou ~Upgradable: Lista todos os pacotes que podem ser atualizados com suas versões mais recentes disponíveis.
  3. ~E ou ?Essential(): Pacotes instalados ou disponíveis, que são essenciais.
$ aptitude versions '?Upgradable' | head -n 12
Package apache2:
ph  2.4.7-1ubuntu4                                trusty                    500 
ph  2.4.7-1ubuntu4.5                              trusty-security           500 
ih  2.4.7-1ubuntu4.8                                                        100 
ph  2.4.7-1ubuntu4.9                              trusty-updates            500 

Package apache2-bin:
p A 2.4.7-1ubuntu4                                trusty                    500 
p A 2.4.7-1ubuntu4.5                              trusty-security           500 
i A 2.4.7-1ubuntu4.8                                                        100 
p A 2.4.7-1ubuntu4.9                              trusty-updates            500 

Como uma pequena lista mostrada aqui de 3 pacotes com versão instalada (indicada com 'i') e sua versão atualizável presente (indicada com 'p').

2. Encontrar todos os pacotes que fornecem um serviço específico

Para encontrar todos os pacotes que fornecem serviço smtp:

$ aptitude search '?provides(smtp)'
p   libghc-smtpclient-dev            - Simple Haskell SMTP client library        
p   libghc-smtpclient-dev:i386       - Simple Haskell SMTP client library        
p   libghc-smtpclient-prof           - Simple Haskell SMTP client library; profil
p   libghc-smtpclient-prof:i386      - Simple Haskell SMTP client library; profil
p   syslog-ng-mod-smtp               - Enhanced system logging daemon (SMTP plugi
p   syslog-ng-mod-smtp:i386          - Enhanced system logging daemon (SMTP plugi

3. Encontrar todos os pacotes que sugerem um determinado pacote

Como aqui, listamos todos os pacotes que sugerem o pacote 'gcc'.

$ aptitude search '~DSuggests:gcc' | head -n10
p   bochs                           - IA-32 PC emulator                         
p   bochs:i386                      - IA-32 PC emulator                         
p   cpp-4.4                         - GNU C preprocessor                        
p   cpp-4.4:i386                    - GNU C preprocessor                        
p   cpp-4.6                         - GNU C preprocessor                        
p   cpp-4.6:i386                    - GNU C preprocessor                        
p   cpp-4.7                         - GNU C preprocessor                        
p   cpp-4.7:i386                    - GNU C preprocessor                        
p   cpp-4.7-arm-linux-gnueabi       - GNU C preprocessor                        
p   cpp-4.7-arm-linux-gnueabi:i386  - GNU C preprocessor 

Conclusão

Portanto, na maioria dos casos, a sintaxe do Aptitude é mantida quase igual à do apt-get, para fazer com que os usuários do apt-get tenham menos problemas na migração para o Aptitude , mas além disso, muitos recursos poderosos estão integrados no Aptitude que o tornam o escolhido. Além dessas diferenças que destacamos, se você encontrar alguma outra diferença interessante entre esses dois gerenciadores de pacotes, mencione-a em seus comentários.