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


125

Al instalar un software a través de dpkg -i packageA.deb, ¿ packageAse descargarán e instalarán automáticamente las dependencias requeridas ? ¿Cómo es esto diferente de usar apt-geto aptitude?


Relacionados (especialmente con respecto a las dependencias): askubuntu.com/q/40779/250300
Melebius

Respuestas:


168

No, dpkgsolo instala un paquete, por lo dpkg -i packageName.debque solo instalará este paquete Deb y le notificará de cualquier dependencia que deba instalarse, pero no las instalará y no configurará el packageName.debporque bueno ... las dependencias son no ahí.

apt-getes un sistema de gestión de paquetes que maneja la instalación de paquetes Deb en distribuciones Linux basadas en Debian . Un sistema de gestión de paquetes es un conjunto de herramientas que lo ayudarán a instalar, eliminar y cambiar paquetes fácilmente. Entonces apt-getes como un inteligente dpkg.

Me gusta pensar en la línea de tiempo de esta manera (lo siguiente es solo yo hablando por experiencia. Está destinado a darte una idea de todo esto):

  • Se les ocurrió una forma de "almacenar" los archivos de una aplicación en un "paquete" para que se pueda instalar fácilmente. Entonces, nació el paquete Deb ( .debarchivo de extensión ).

    Un .debarchivo contiene los archivos que necesita una aplicación para ejecutarse, así como (me gusta llamarlo) "metadatos" que contienen otra información, como los nombres de las dependencias que necesita la aplicación. Si desea ver el contenido de un .debarchivo, puede usar el comando dpkg -c packageName.deb, y si desea ver esta información de "metadatos", use el comando dpkg -I pacakgeName.deb(y si solo quiere ver las dependencias, hágalo dpkg -I packageName.deb | grep Depends).

  • Necesitaban una herramienta para instalar estos .debarchivos, por lo que se les ocurrió la dpkgherramienta. Sin embargo, esta herramienta solo instalará el .debarchivo, pero no instalará sus dependencias porque no tiene esos archivos y no tiene acceso a "repositorios" desde donde extraer las dependencias.

  • Luego, se les ocurrió apt-get, lo que automatiza los problemas en el punto anterior. Debajo del capó, apt-getes básicamente dpkg(me gusta pensar que apt-getes un front-end para dpkg), pero uno inteligente que buscará las dependencias y las instalará. Incluso analiza las dependencias instaladas actualmente y determina las que no están siendo utilizadas por ningún otro paquete, y le informará que puede eliminarlas.

aptitudeLuego vino. Utiliza las bibliotecas apt-getusos y en realidad tiene una interfaz de usuario interactiva (interfaz de usuario). Si desea ver esta interfaz de usuario, simplemente escriba aptitudeel terminal. Eso es aptitude . Aprovecha las bibliotecas para proporcionar más opciones y ventajas que apt-get. Por ejemplo, aptitudeeliminará automáticamente los paquetes elegibles, mientras que apt-getnecesita un comando separado para hacerlo. Pero, al final, haciendo sudo aptitude install packageName.debdebería al menos ser igual sudo apt-get install packageName.deb. Puede haber diferencias sutiles aquí y allá que no conozco, pero ambas buscarán las dependencias y harán todas esas cosas. Puede leer la respuesta aquí para obtener más información sobre las diferencias entre aptitudey apt-get.

Además, aptitudeno tiene Super Cow Powers.

EDITAR: Al parecer, lo hace. aptitude -v[v[v[v[v]]]] moo.

aptitudeEs posible que no esté instalado de forma predeterminada. Para instalarlo, haz sudo apt-get install aptitudeo haz clic en esto: aptitudeInstalar aptitud .


Extra

La siguiente información realmente no responde directamente " ¿Cuál es la diferencia entre dpkg y aptitude / apt-get? ", Pero contribuye al panorama general.


De Carlos Campderrós ' comentario a continuación :

gdebies otra herramienta que es una especie de mezcla entre apt-gety aptitude. Cuando lo use para instalar un .debpaquete ( gdebi packageName.deb), identificará las dependencias que faltan, las instalará usando apt-get, y finalmente instalará y configurará el paquete usando dpkg. Incluso tiene una GUI simple y ordenada que le brinda información sobre el .debpaquete, los archivos incluidos en el paquete y qué dependencias deben instalarse. Para ver esta GUI, lo harías gdebi-gtk packageName.deb. Puede gdebiintentarlo instalándolo sudo apt-get install gdebio haciendo clic en esto: gdebiInstalar gdebi .


No quiero confundir a nadie, pero solo para darle otra parte de la imagen, hay otro formato de paquete de Linux popular llamado RPM, y sus archivos tienen la .rpmextensión. Este formato de paquete se usa en distribuciones de Linux basadas en RPM (como Red Hat, CentOS y Fedora). Usan el comando rpmpara instalar un paquete, y yumes el front-end para él, es el más inteligente. Entonces, sus .rpmarchivos son nuestros .debarchivos, su rpmherramienta es nuestra dpkgherramienta y su yumes nuestra apt-get.

De arroz Landau 's comentario a continuación :

alienes una herramienta que convierte entre .rpmy .debpaquetes. Entonces, si alguna vez cae en la situación en la que tiene un .rpmpaquete y desea instalarlo en su Ubuntu (o cualquier otra distribución basada en Debian), puede usar el comando alien rpm_packageName.rpmpara convertirlo .deby luego instalarlo usando dpkg. Puede hacer lo contrario (convertir .deba .rpm) usando alien -r packageName.deb.


55
Eso fue muy útil y exactamente lo que estaba buscando. Tx!
Aniket Thakur

44
Además, puede usar gdebi( apt-get install gdebi-core) que se mezcla apt-get/ aptitudecon dpkg. Lo llama con gdebi some_package.deby analizará sus dependencias, llamará apt-getpara instalar las que faltan y cuando se cumplan todas las dependencias, luego llame dpkgpara finalmente instalar su paquete.
Carlos Campderrós

2
@Alaa Bajo Extra , también puede mencionar que alienconvierte paquetes entre .rpmy .deb. Esto es útil para paquetes disponibles para RPM pero no para DEB (o viceversa). Por ejemplo, alien packagename.rpmpara que sea utilizable para Ubuntu.
Paddy Landau

1
@AlaaAli aptitudeno es una interfaz para apt-get. Ambos programas son frontends para la libapt-pkgbiblioteca.
Eliah Kagan

1
@edwardtorvalds AskUbuntu es un sitio de preguntas y respuestas. Busque su respuesta aquí en el sitio de las miles de preguntas anteriores, y si no la encuentra, haga su propia pregunta, es de esperar que personas más experimentadas que yo también respondan.
Alaa Ali

5

apt-get

La gestión de paquetes se apt-getejecuta de la mano con el /etc/apt/sources.listarchivo.

apt-get install <package_name> instala un nuevo paquete en su computadora.

apt-get build-dep <package_name> Este comando busca en los repositorios e instala las dependencias de compilación. Si el paquete no está en los repositorios, devolverá un error.

apt-get install <package1_name> <package2_name> <package3_name> apt-get permite la instalación de múltiples paquetes. separe los paquetes con un espacio.

auto-apt run <command_string> Cuando se invoca, el comando auto-apt instala automáticamente los paquetes cuando falta el acceso a los archivos. Si un programa intenta acceder a un archivo que se sabe que pertenece a un paquete desinstalado, auto-apt lo instalará usando apt-get. Esta característica requiere apt y sudo para funcionar.

Visita la página de instrucciones de apt-get

aptitud

aptitudeproporciona la funcionalidad dselecty apt-getmuchas otras características adicionales que no se encuentran en ninguno de los programas.

aptitude tiene un shell propio que se activa con el teclado o el mouse y se ejecuta en una ventana de terminal

aptitude build-dep <package> - Instale las dependencias de compilación de los paquetes, lo que significa los paquetes necesarios para compilar (o compilar ) su paquete fuente. Por ejemplo, muchos paquetes necesitan debhelpero autotoolsdeben construirse, pero no los necesitan para ejecutarse.

Visita la página de instrucciones de aptitud

dpkg

es una herramienta para instalar, construir, eliminar y administrar paquetes Debian. enlazar

dpkg -i <package.deb>instala un paquete Debian en su computadora. No instala ninguna dependencia hasta donde puedo encontrar en los archivos de ayuda.

Para detalles, escriba dpkg --helpen una ventana de terminal.

Guías

Una guía para la gestión de archivos se puede encontrar aquí


0

Creo que lo más importante y también una diferencia es que debe tener en cuenta que debe usar la apt-getherramienta para instalar paquetes. ( apto aptitudeestá bien también).

Esto se debe a que dpkgestá destinado a instalar paquetes sin instalar paquetes dependientes. Debido a que solo instalar un paquete con dpkg, puede conducir a un problema posterior donde la resolución de dependencia puede terminar con un sistema roto.

Debe usar la línea de comando apt-geto la aptherramienta (desde 14.04) para instalar paquetes. Estas herramientas están utilizando dpkgpara usted y al mismo tiempo tienen el mecanismo de resolución de dependencia en su interior.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.