¿Qué es APT y Aptitude? y ¿Cuál es la diferencia real entre ellos?


Aptitude y apt-get son dos de las herramientas populares que manejan la administración de paquetes. Ambos son capaces de manejar todo tipo de actividades en paquetes, incluida la instalación, eliminación, búsqueda, etc. Pero aún existen diferencias entre ambas herramientas que hacen que los usuarios prefieran una sobre la otra. Cuáles son esas diferencias que hacen que estas dos herramientas se consideren por separado es el alcance de este artículo.

Qué es Apt

Apt o Advanced Packaging Tool es un software gratuito y de código abierto que maneja con gracia la instalación y eliminación de software. Inicialmente fue diseñado para paquetes .deb de Debian, pero se ha hecho compatible con RPM Package Manager.

Apt es una línea de comandos completa sin GUI. Siempre que se invoca desde la línea de comandos junto con la especificación del nombre del paquete que se instalará, encuentra ese paquete en la lista configurada de fuentes especificadas en '/etc/apt/sources.list' junto con la lista de dependencias para ese paquete y las ordena y los instala automáticamente junto con el paquete actual, lo que permite al usuario no preocuparse por instalar dependencias.

Es muy flexible, lo que permite al usuario controlar varias configuraciones fácilmente, como: agregar cualquier fuente nueva para buscar paquetes, apuntar, es decir, marcar cualquier paquete como no disponible durante la actualización del sistema, lo que hace que su versión actual sea su versión final instalada, "inteligente" actualizar, es decir, actualizar los paquetes más importantes y dejar los menos importantes.

¿Qué es la aptitud?

Aptitude es una herramienta de empaquetado avanzada que agrega una interfaz de usuario a la funcionalidad, lo que permite al usuario buscar de forma interactiva un paquete e instalarlo o eliminarlo. Creado inicialmente para Debain, Aptitude también extiende su funcionalidad a las distribuciones basadas en RPM.

Su interfaz de usuario se basa en la biblioteca ncurses que le agrega varios elementos que se ven comúnmente en las GUI. Uno de sus aspectos más destacados es que puede emular la mayoría de los argumentos de la línea de comandos de apt-get.

En total, Aptitude es un administrador de paquetes de nivel superior que abstrae detalles de bajo nivel y puede operar tanto en modo de IU interactivo basado en texto como incluso en modo no interactivo de línea de comandos.

Si desea conocer el uso de APT y Aptitude con ejemplos del mundo real, debe dirigirse a los siguientes artículos.

  1. Learn 25 Useful Examples on APT-GET and APT-CACHE
  2. Learn Linux Package Management with Aptitude and Dpkg

¿Cuáles son las diferencias entre APT y Aptitude?

Aparte de la principal diferencia de que Aptitude es un administrador de paquetes de alto nivel, mientras que APT es un administrador de paquetes de nivel inferior que puede ser utilizado por otros administradores de paquetes de nivel superior, otros aspectos destacados que separan a estos dos administradores de paquetes son:

  1. Aptitude is vaster in functionality than apt-get and integrates functionalities of apt-get and its other variants including apt-mark and apt-cache.

Mientras que apt-get maneja toda la instalación de paquetes, actualización, actualización del sistema, purga de paquetes, resolución de dependencias, etc., Aptitude maneja muchas más cosas que apt, incluidas las funcionalidades de apt-mark y apt-cache, es decir, la búsqueda de un paquete en lista de paquetes instalados, marcar un paquete para que se instale de forma automática o manual, mantener un paquete que no esté disponible para su actualización, etc.

  1. While apt-get lacks UI, Aptitude has a text-only and interactive UI

Apt-get, que es un administrador de paquetes de nivel inferior, está restringido solo a la línea de comandos, mientras que Aptitude, que es una herramienta de nivel superior, tiene una interfaz interactiva predeterminada de solo texto junto con la opción de operación de línea de comandos ingresando los comandos requeridos.

  1. Aptitude has a better package management than apt-get

En muchas situaciones que involucran la instalación, eliminación y resolución de conflictos de paquetes, Aptitude demuestra su valor en lugar de apt-get. Algunas de las situaciones incluyen:

1. Al eliminar cualquier paquete instalado, Aptitude eliminará automáticamente los paquetes no utilizados, mientras que apt-get necesitaría que el usuario lo especificara explícitamente agregando una opción adicional de '—auto-remove' o especificando 'apt-get autoremove' .4

2. Para investigar más a fondo por qué se bloquea cierta acción o por qué o por qué no se debe realizar una determinada acción, Aptitude ofrece los comandos 'why' y 'why-not'.

Me gusta: Aptitude puede encontrar la razón para instalar un determinado paquete mirando en la lista de paquetes instalados y verificando si alguno de sus paquetes sugeridos tiene dependencias o si alguna de sus dependencias sugiere ese paquete, etc.

$ 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 aquí, buscó la razón para instalar un paquete llamado 'yaws-wiki' para que sea sugerido por una dependencia (yaws) que proporciona un paquete virtual (httpd-cgi) en qué paquete (dwww) tiene dependencia y el paquete (dwww) es sugerido por uno de los paquetes instalados llamado ' doc-base '.

Esta función falta en apt-get.

3. Si bien apt-get probablemente desaparecería en caso de una acción conflictiva con respecto a la instalación o eliminación del paquete con un mensaje, Aptitude puede sugerir posibles medidas para eliminar ese conflicto.

Aptitude proporciona una búsqueda potente que se puede utilizar para buscar en casi cualquier paquete, no solo en el sistema, sino también en todo el repositorio.

Mientras que apt-get necesita otra variante de apt, es decir, apt-cache para buscar un paquete, Aptitude proporciona una forma mucho más fácil y eficiente de buscar un paquete que esté instalado o presente en el repositorio pero que aún no se haya instalado.

$ 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

Aquí, de forma predeterminada, tanto apt-cache como aptitude buscan un paquete en la lista completa de paquetes en el repositorio, pero la salida de aptitude muestra si el paquete está instalado en el sistema o no al dar un indicador por paquete que aquí es 'p' indica que el paquete está presente pero no está instalado y 'i' que indica que el paquete está instalado, mientras que apt-cache solo enumera el paquete y su detalle de una línea sin decirlo si el paquete está instalado o no.

1. Buscando un paquete en el repositorio con 'python2.7' en el nombre del paquete y '2.7' en su descripción.

$ 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

Aquí '~ n' indica el nombre y '~ d' indica la descripción. Otra forma del mismo comando es:

$ aptitude search '?name(python2.7) ?description(2.7)'
  1. ~i or ?installed(): Searching for a package in the list of installed packages only.
  2. ~U or ~Upgradable: Lists all the packages which are upgradable with their latest available versions.
  3. ~E or ?Essential(): Those packages either installed or available, which are essential.
$ 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 una breve lista que se muestra aquí de 3 paquetes con la versión instalada (indicada con 'i' ) y su versión actualizable presente (indicada con 'p' ).

Para encontrar todos los paquetes que brindan el servicio 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

Como aquí, enumeramos todos los paquetes que sugieren el paquete "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 

Conclusión

Por lo tanto, en la mayoría de los casos, la sintaxis de Aptitude se mantiene casi igual que la de apt-get, para que los usuarios de apt-get tengan menos molestias al migrar a Aptitude, pero además de esto, muchas características poderosas están integradas en Aptitude. que lo convierten en el elegido. Aparte de estas diferencias que destacamos, si encuentra otras diferencias interesantes entre estos dos administradores de paquetes, menciónelas en sus comentarios.