¿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?
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 esaptitude . 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: aptitude .
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.
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: 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.
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.
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.
@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.
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.
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.
Respuestas:
No,
dpkg
solo instala un paquete, por lodpkg -i packageName.deb
que solo instalará este paquete Deb y le notificará de cualquier dependencia que deba instalarse, pero no las instalará y no configurará elpackageName.deb
porque bueno ... las dependencias son no ahí.apt-get
es 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. Entoncesapt-get
es como un inteligentedpkg
.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 (
.deb
archivo de extensión ).Necesitaban una herramienta para instalar estos
.deb
archivos, por lo que se les ocurrió ladpkg
herramienta. Sin embargo, esta herramienta solo instalará el.deb
archivo, pero no instalará sus dependencias porque no tiene esos archivos y no tiene acceso a "repositorios" desde donde extraer las dependencias.apt-get
, lo que automatiza los problemas en el punto anterior. Debajo del capó,apt-get
es básicamentedpkg
(me gusta pensar queapt-get
es un front-end paradpkg
), 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.aptitude
Luego vino. Utiliza las bibliotecasapt-get
usos y en realidad tiene una interfaz de usuario interactiva (interfaz de usuario). Si desea ver esta interfaz de usuario, simplemente escribaaptitude
el terminal. Eso esaptitude
. Aprovecha las bibliotecas para proporcionar más opciones y ventajas queapt-get
. Por ejemplo,aptitude
eliminará automáticamente los paquetes elegibles, mientras queapt-get
necesita un comando separado para hacerlo. Pero, al final, haciendosudo aptitude install packageName.deb
debería al menos ser igualsudo 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 entreaptitude
yapt-get
.Además,
aptitude
no tiene Super Cow Powers.aptitude
Es posible que no esté instalado de forma predeterminada. Para instalarlo, hazsudo apt-get install aptitude
o haz clic en esto: aptitude .Extra
De Carlos Campderrós ' comentario a continuación :
gdebi
es otra herramienta que es una especie de mezcla entreapt-get
yaptitude
. Cuando lo use para instalar un.deb
paquete (gdebi packageName.deb
), identificará las dependencias que faltan, las instalará usandoapt-get
, y finalmente instalará y configurará el paquete usandodpkg
. Incluso tiene una GUI simple y ordenada que le brinda información sobre el.deb
paquete, los archivos incluidos en el paquete y qué dependencias deben instalarse. Para ver esta GUI, lo haríasgdebi-gtk packageName.deb
. Puedegdebi
intentarlo instalándolosudo apt-get install gdebi
o haciendo clic en esto: 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
.rpm
extensión. Este formato de paquete se usa en distribuciones de Linux basadas en RPM (como Red Hat, CentOS y Fedora). Usan el comandorpm
para instalar un paquete, yyum
es el front-end para él, es el más inteligente. Entonces, sus.rpm
archivos son nuestros.deb
archivos, surpm
herramienta es nuestradpkg
herramienta y suyum
es nuestraapt-get
.De arroz Landau 's comentario a continuación :
alien
es una herramienta que convierte entre.rpm
y.deb
paquetes. Entonces, si alguna vez cae en la situación en la que tiene un.rpm
paquete y desea instalarlo en su Ubuntu (o cualquier otra distribución basada en Debian), puede usar el comandoalien rpm_packageName.rpm
para convertirlo.deb
y luego instalarlo usandodpkg
. Puede hacer lo contrario (convertir.deb
a.rpm
) usandoalien -r packageName.deb
.fuente
gdebi
(apt-get install gdebi-core
) que se mezclaapt-get
/aptitude
condpkg
. Lo llama congdebi some_package.deb
y analizará sus dependencias, llamaráapt-get
para instalar las que faltan y cuando se cumplan todas las dependencias, luego llamedpkg
para finalmente instalar su paquete.alien
convierte paquetes entre.rpm
y.deb
. Esto es útil para paquetes disponibles para RPM pero no para DEB (o viceversa). Por ejemplo,alien packagename.rpm
para que sea utilizable para Ubuntu.aptitude
no es una interfaz paraapt-get
. Ambos programas son frontends para lalibapt-pkg
biblioteca.apt-get
La gestión de paquetes se
apt-get
ejecuta de la mano con el/etc/apt/sources.list
archivo.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á usandoapt-get
. Esta característica requiere apt y sudo para funcionar.Visita la página de instrucciones de apt-get
aptitud
aptitude
proporciona la funcionalidaddselect
yapt-get
muchas 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 terminalaptitude 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 necesitandebhelper
oautotools
deben 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 --help
en una ventana de terminal.Guías
Una guía para la gestión de archivos se puede encontrar aquí
fuente
Creo que lo más importante y también una diferencia es que debe tener en cuenta que debe usar la
apt-get
herramienta para instalar paquetes. (apt
oaptitude
está bien también).Esto se debe a que
dpkg
está destinado a instalar paquetes sin instalar paquetes dependientes. Debido a que solo instalar un paquete condpkg
, 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-get
o laapt
herramienta (desde 14.04) para instalar paquetes. Estas herramientas están utilizandodpkg
para usted y al mismo tiempo tienen el mecanismo de resolución de dependencia en su interior.fuente