¿Cuál es la diferencia entre apt-get y aptitude?

56

No entiendo por qué hay dos programas diferentes en una instalación mínima para instalar el software. ¿No hacen lo mismo? ¿Hay una gran diferencia? He leído en todas partes para usar aptitude sobre apt-get pero todavía no sé la diferencia

Thomaschaaf
fuente

Respuestas:

48

aptitude es un contenedor para dpkg al igual que apt-get / apt-cache, pero es una herramienta única para buscar / instalar / eliminar / consultar. Algunos ejemplos que apt podría no proporcionar:

$ 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
fuente
10
sin mencionar: $ aptitude changelog bash
pgs
Otros trucos que aptitudesabe que incluso los últimos aptno pueden hacer: aptitude search '~i linux'busca paquetes con el linuxnombre o la descripción que están instalados; aptitude search '~o'enumera paquetes obsoletos (paquetes instalados que ya no son proporcionados por ningún repositorio); aptitude search '!~M ~i'muestra paquetes que no están marcados como instalados automáticamente; aptitude search '~i lib.*-dev'espectáculos instalan bibliotecas de desarrollo y se puede reemplazar searchcon markautoo unmarkautopara marcar estos paquetes como automática o manualmente instalado.
Mikko Rantalainen
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
fuente
19

La herramienta oficial que se utiliza actualmente en el instalador de Debian y que se recomienda en las notas de la versión es aptitude.

Ofertas de aptitud de una interfaz de maldiciones (cuando se ejecuta sin ningún parámetro) y una interfaz de línea de comandos que puede hacer casi todo lo que apt-cache/ apt-getlo hace. También tiene un mejor solucionador de dependencias que le permite navegar entre múltiples soluciones. Incluso cuando usa la versión de línea de comandos, puede interactuar con la solución propuesta y dar órdenes o sugerencias adicionales (como instalar o eliminar un paquete recomendado por otro).

Pero aptitude se basa en la biblioteca libapt (no es un contenedor directo de dpkg) y, como tal, depende del aptpaquete, por lo que no puede tener aptitude instalado sin apt-get (que también está en el paquete 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 obtener más información sobre cómo interactúan apt / dpkg / aptitude, puede consultar el diagrama realizado por Daniel Burrows (autor principal de aptitude). Otro diagrama presenta la información almacenada por las diversas herramientas de administración de paquetes: un mapa de los archivos de estado apt y dpkg .

También puede leer mi artículo apt-get, aptitude, ... elija el administrador de paquetes adecuado para usted

Raphaël Hertzog
fuente
7

aptituderecuerda qué paquetes instaló deliberadamente y cuáles se instalaron automáticamente para satisfacer las dependencias. Al eliminar un paquete, aptitude eliminará los paquetes instalados automáticamente para mantener su sistema ordenado. apt-getNo es tan inteligente.

aptitudese convertirá rápidamente en una herramienta indispensable una vez que use diferentes repositorios con diferentes versiones de un paquete. Imagine que está trabajando con backports.org o repositorios no oficiales como debian-multimedia.org . Luego aptitudemostrará (en la parte inferior de la página de detalles de un paquete determinado) el número de versión disponible y le permitirá seleccionar uno.

Si se encuentra en una situación en la que los programas entran en conflicto debido al uso de repositorios no oficiales, verá una pantalla "Broken: ..." en la parte superior. Puede escribir l ~ b (límite / indicador / roto) y simplemente obtener una lista de paquetes que entran en conflicto entre sí. Hace mucho más fácil resolver el conflicto manualmente.

Además, puede usar " l" para limitar la lista de paquetes. Imagine que está buscando paquetes que comienzan con " openoffice ", luego presione " l" y escriba " ^openoffice" (es una expresión regular) y verá solo esos paquetes. Elija una "lista de paquetes planos" en el menú y podrá alcanzar su objetivo rápidamente.

El manual completo es muy grande y le ofrece muchos más filtros y posibilidades. Incluso si no los conoce, aptitudees un reemplazo útil apt-gety puede usarlo con parámetros comunes 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
fuente
2
En realidad, a partir de Lenny, apt-get también rastrea los paquetes instalados solo como dependencias de algo que solicitó explícitamente. Yo mismo uso aptitude, pero apt-get autoremoveahora elimina los paquetes que se instalaron como dependencias de un paquete que desde entonces se ha eliminado.
Telemachus
Hoy en día también se puede usar solo apty se puede hacer una mezcla de cosas que apt-gety apt-cachesolía hacer. Por ejemplo, apt search fooenumerará los paquetes que contienen fooen nombre o descripción. apt install fooinstalará el paquete llamado foosi está disponible y apt policy fooenumerará la versión instalada actualmente y todas las versiones disponibles del paquete foo.
Mikko Rantalainen
El aptitudetodavía puede hacer más que, aptpero simple aptes a menudo mucho más rápido.
Mikko Rantalainen
5

Además de proporcionar una interfaz de usuario de consola bonita cuando se ejecuta aptitudesin argumentos, combina los diversos apt-*comandos (y dselect) en una sola utilidad.

Para buscar un paquete e instalarlo, usando apt-get:

apt-cache search somepkg
apt-get install somepkg

..pero con aptitude es el mismo comando:

aptitude search somepkg
aptitude install somepkg

aptitudetiene algunas características adicionales, como aptitude changelog somepkgy cosas como mantener paquetes (para evitar que se actualicen): nada que no pueda lograr a través de otros comandos / métodos, es más unificado y agradable de usar.

dbr
fuente
3
Lástima que no tenga una "política de caché apta" equivalente.
hayalci
4

como sabe cuando instala un paquete, si necesita otros paquetes (dependencias), también se descargarán e instalarán. aptitude rastrea, en el momento de la instalación, los paquetes que vienen con el instalado, de modo que cuando elimine esta última, aptitude le pedirá que elimine las otras dependencias "huérfanas" (ahora no utilizadas). apt-get los mantendrá silenciosamente en su sistema si elimina el paquete "principal".

Parece que las últimas versiones de apt-get tienen una funcionalidad similar: http://www.psychocats.net/ubuntu/aptitude

gpilotino
fuente
aptitudeo aptde hecho no mantiene una lista de paquetes que se instalaron como dependencias para un paquete dado. Simplemente rastrea si un paquete se instaló manual o automáticamente. Y si un paquete se ha marcado como instalado automáticamente y ningún otro paquete depende o lo recomienda, se eliminará con apt autoremoveo aptitude dist-upgrade.
Mikko Rantalainen
3

La mayor diferencia es que aptitude está diseñada para ser interactiva donde las herramientas apt son más adecuadas para el trabajo de secuencias de comandos. Puede utilizar este último, es decir, las herramientas apt, interactivamente bien con mucho más esfuerzo para obtener los mismos resultados que proporciona aptitude. Si tuvo que conformarse con una herramienta u otra por alguna razón, entonces debe decidir cuánto esfuerzo desea poner en la administración de su paquete.

usuario3146
fuente
1

Una de las ventajas serias de la aptitud es su capacidad para calcular dependencias. En primer lugar, puede manejar interdependencias complicadas sin intervención propia, lo que a menudo falla en apt-get. Pero si no le gusta la solución que le ha presentado (y obtendrá su propia solución para demostrar lo buena que cree que es), puede pedirle que se vaya y encontrar otra solución para resolver el conflicto.

Realmente hace una administración de paquetes increíble.

Cooperativas
fuente
1

La mayor diferencia es: escriba "aptitude" sin ningún parámetro.

Le proporciona una interfaz de usuario basada en texto, puede usar el teclado para buscar / navegar, etc. ver información sobre dependencias, dependencias inversas, todas las versiones disponibles de un paquete, y puede realizar cualquier operación de administrador de paquetes desde esa pantalla.

Puede presionar "g" para revisar los cambios, modificar las adiciones y eliminaciones de paquetes si es necesario, y aplicar todas las operaciones pendientes.

Una excelente forma visual de gestión de paquetes a través de una conexión ssh o un terminal antiguo simple.

hayalci
fuente