2011-12-12 14 views
10

Quiero hacer un paquete de Debian simple para instalar una herramienta simple que depende de libs Qt4.cómo hacer dependencias de instalación del paquete de Debian

En el archivo de control, he definido que depende de Qt4 libs, sin embargo, para el momento en que estoy probando el paquete, dice que no se pudo cumplir la dependencia.

Pregunta:

¿Cómo puedo hacer de Debian gatillo apt para instalar las dependencias, así?

No puedo encontrar la documentación, pero sé que apt-get hace eso.

+0

¿Depende de las libs de Qt4 normales que se envían con su distribución? ¿Podría publicar los detalles exactos, es decir, la especificación "Depends" y la llamada apt-get con errores? – thiton

+0

Me parece que su paquete es correcto, pero que la dependencia no existe en el espejo que está usando. Por favor publique su mensaje de error completo. – Flimzy

+0

'dpkg' es una herramienta de bajo nivel y no tiene en cuenta las dependencias. Carlos tiene la idea correcta para usar gdebi, ya que capta las dependencias cuando lo ejecuta sin tener que usar 'apt', que también puede usar como señaló Thomas. – NuclearPeon

Respuesta

1

Una forma sería crear un repositorio de paquetes local en su computadora y agregarlo a /etc/apt/sources.list. Luego puede instalar el paquete desde su repositorio local con apt-get y las dependencias se resuelven automáticamente.

Probablemente haya una manera más fácil de hacerlo, pero no sé lo que sería.

12

Si lo instala a través de dpkg, no funcionará porque dkpg no sabe dónde encontrar dependencias adicionales. Puede hacerlo a través del apt-get si construye su propio repositorio, pero consume bastante tiempo la primera vez (no es difícil, simplemente es algo "nuevo" la primera vez que necesita algo de tiempo para aprender).

Por otro lado, y la solución es probable que se busca es gdebi (puede que tenga que instalarlo: apt-get install gdebi-core). Es una herramienta que verifica las dependencias de un paquete y llama al apt-get para buscarlas e instalarlas, y luego llama al dpkg para instalar su paquete.

+0

Hummm. Ya veo ... Lo es. Necesito hacer un instalador. Por ejemplo. Cuando descargas Skype, viene en .deb. ¿Trae todas las libs que necesita? ¿Debería incluir todas las librerías que necesito? ¿Cómo debo confiar en apt para buscar las dependencias? El problema de empaquetar las dependencias es que pueden meterse con el sistema objetivo. Es su sugerencia de un representante local válida para una distribución. Idea: Podría crear ese representante local cuando ejecute el archivo .deb y luego llame al apt-get en la instalación posterior ... pero esto no parece una solución válida ... –

+0

Durante el proceso de instalación, instale gdebi desde el repositorio apto y luego ejecuta 'gdebi your-package.deb'. Recuperará todas las dependencias de los repositorios de apt configurados en esa máquina (si están disponibles en el repositorio). ¿O hay algún otro problema que no entiendo? –

+0

¿Gdebi marcará los paquetes instalados como dependencias para el paquete que deseo instalar? – Trismegistos

5

Si está creando el paquete Debian, especifique sus dependencias en los archivos de control de directorio debian/; Creo que debian/control toma las directivas Depends: para ese propósito.

No conozco los detalles con mucha claridad, pero hay instrucciones en http://www.debian.org/doc/manuals/maint-guide/; en particular, http://www.debian.org/doc/manuals/maint-guide/dreq.en.html#control parece ser el lugar adecuado para comenzar a buscar.

+0

Hola, creo que 'Depende: ' solo comprobará si la dependencia está instalada y detendrá la instalación del paquete deb en consecuencia. La solución que estoy buscando es instalar esas dependencias automáticamente como parte de la instalación de Deb. Por favor, eche un vistazo a esta pregunta: http://stackoverflow.com/questions/22907113/how-to-install-dependencies-while-creating-a-deb-installer – Sangram

17

Si desea evitar la creación de un repositorio APT local, puede hacer:

dpkg -i mypackage.deb 
apt-get install --fix-missing 

Si desea crear un repositorio local, puede utilizar reprepro para esto.

+4

# apt-get install -f --fix -missing – kellogs

+0

¿Debo ejecutar 'sudo dpkg -i mypackage.deb' de nuevo? –

0

por @textshell en this answer:

comenzando con apt 1.1 (disponible en Xenial (16.04), estiramiento) apt install también permite que los archivos locales:

sudo apt install ./foo-1.2.3.deb 

mucho más sencillo y menos contaminantes.

Véase el release announcment

Esto también instalará las dependencias, al igual que una normal de apt install o apt-get install.

Cuestiones relacionadas