Instalar solo dependencias de un paquete dado en Debian o Ubuntu (apt)

18

¿Hay una mejor manera de instalar solo las dependencias requeridas de un paquete, en lugar de instalarlo directamente con apt-get (o cualquier otra interfaz de dpkg) y luego eliminarlo inmediatamente, dejando de lado sus dependencias?

Vinícius Ferrão
fuente

Respuestas:

22

apt-cache depends pkgname mostrará las dependencias de un paquete.

Si lo quieres todo en un solo comando, podrías hacerlo peor que:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`
smammy
fuente
16

apt-get proporciona un comando para exactamente eso ...

apt-get build-dep <package name>

De las páginas de manual que obtienes

build-dep hace que apt-get instale / elimine paquetes en un intento de satisfacer las dependencias de compilación para un paquete fuente. Por defecto, las dependencias se satisfacen para compilar el paquete de forma nativa. Si se desea, se puede especificar una arquitectura de host con la opción --host-architecture.

Nathan Crock
fuente
99
¿No podría haber una diferencia entre build dependenciesy dependencies? Como en el caso, si normalmente instala un programa, obtiene dependencias que realmente necesita para ejecutarse, y con las dependencias de compilación, pienso más en bibliotecas, compiladores, cosas así. Entonces, como no estoy seguro (esta respuesta tiene votos a favor), pero me parece que no es trivial que obtener dependencias de compilación sea lo mismo que obtener las dependencias (ejecutar) que tienen los paquetes.
Nanne
1
Estás en lo correcto. Al responder esto, hace mucho tiempo, no tenía una comprensión completa de la diferencia entre las dependencias de compilación (tiempo de compilación) y las dependencias (tiempo de ejecución). ¡Gracias por aclarar a Nanne!
Nathan Crock el
4

aptitude le permitirá especificar una consulta en lugar de un nombre de paquete al instalar. Si desea instalar las dependencias del paquete nombrado foo, puede instalar los paquetes que tienen una dependencia inversa en foo:

aptitude install '?reverse-depends(foo)'

o

aptitude install '~Rfoo'

El problema con la instalación de un paquete y luego su eliminación, es que todos los paquetes que se instalan como dependencias se marcarán como "instalados automáticamente", y se eliminarán por cualquier acción de instalación / eliminación / actualización por aptitude o cuando se ejecute a apt-get autocleanmenos que márquelos como instalados manualmente usando aptitude marko el apt-markcomando.

Sin embargo, esto plantea la pregunta de por qué querrías hacer esto, mi mejor suposición es que estás tratando de instalar dependencias para algún software que vas a compilar a mano. En ese caso, primero instalaría las dependencias de compilación apt-get build-dep packagename, pero luego debería crear un paquete ficticio que tenga las dependencias de tiempo de ejecución (que generalmente difieren de las dependencias de compilación) al usar el equivpaquete para construir un paquete ficticio con las dependencias correctas para su programa compilado manualmente. Ver información sobre equivsen el APT HOWTO

estofado
fuente
3

En caso de construir pkgname desde las fuentes

apt-get build-dep pkgname
eri
fuente
1
las dependencias de compilación no son dependencias de tiempo de ejecución
sehe
>> En caso de construir pkgname desde las fuentes
eri
No sé dónde está garantizado / documentado. Además, todavía no lo hace igual para ningún propósito. Uso build-dep todo el tiempo, pero realmente me gustaría una mejor respuesta a la pregunta actual. Yo también necesito eso.
sehe