Árbol de dependencia del paquete fuente de Ubuntu

10

Tengo algunos paquetes Llamémosles A.deb, B.deby C.deb. Cada paquete tiene un paquete fuente correspondiente A.dscy A.tar.gz, B.dscy B.tar.gz, C.dscy C.tar.gz. Los paquetes dependen unos de otros: C.debdepende B.deby B.debdepende deA.deb

Si modifico A.deb, necesito reconstruir B.debo no funcionará. Lo mismo vale para B.deby C.deb. ¿Hay alguna manera de automatizar este proceso? ¿Existe quizás una herramienta o script que lo haga por mí? Si no, ¿cómo podría automatizarlo yo mismo?

Además, no hay mis paquetes.

xiaodongjie
fuente
2
Estás diciendo "C.deb depende de B.deb y B.deb depende de A.deb", ¿así que supongo que te refieres a paquetes binarios ? ¿También te refieres a la compilación de B contra una biblioteca externa en A? Si es así, simplemente no debería existir la necesidad de reconstruir el paquete, dado que los desarrolladores de A no cambiaron la interfaz de dicha biblioteca (por lo que esto depende del mantenimiento de A, no del mantenimiento de B ; si usted es el desarrollador de todos ellos, simplemente mantenga la implementación de A agnóstico desde su interfaz lo más posible, de modo que la compatibilidad esté asegurada a lo sumo).
kos
1
No hago cosas a este nivel en Linux, pero creo que para eso makefue inventado. Un archivo MAKE incluye reglas que determinan qué se debe volver a compilar / reconstruir en función de lo que ha cambiado.
Joe
1
@xiaodongjie: eres una persona querida con una pregunta querida, así que ya sabes bash y bash-scripting? ---> de esta manera, podría escribir un pequeño script con loop de mayúsculas y minúsculas y luego, como en un ascensor, construir en diferentes casos qué hacer con los paquetes. No hay mi guión. Eres inteligente como nosotros somos inteligentes, ríete. - Este script, por supuesto, se puede configurar como un demonio (para que funcione automáticamente).
dschinn1001
1
Un @Joe dijo: use make, y como usted mismo dijo, @xiaodongjie, los objetivos de creación serían los paquetes resultantes, con sus dependencias de paquete a paquete declaradas, y la acción asociada para cada objetivo sería el comando que crea el paquete . Instalar make-docy escribir info makepara leer todo al respecto.
Ralph Rönnquist
1
¿Qué pasa con la creación de un alias para el proceso de compilación?
Wilhelm Erasmus

Respuestas:

3

Usaría un Makefile con las dependencias de compilación declaradas, por ejemplo de la siguiente manera:

default: A.deb B.deb C.deb

C.deb: B.deb C.dsc C.tar.gz
        <command(s) to build C.deb>

B.deb: A.deb B.dsc B.tar.gz
        <command(s) to build B.deb>

A.deb: A.dsc A.tar.gz
        <command(s) to build A.deb>

Tenga en cuenta que la sangría del comando es una TAB.

Con eso Makefile, usarías el comando

make

y esto resolvería qué paquetes construir y en qué orden, y luego construirlos, todo dependiendo de las marcas de tiempo de los archivos. Por ejemplo, si digamos que B.tar.gztiene una marca de tiempo posterior a B.deb(es decir, el paquete Btiene una nueva fuente), entonces eso haría B.debque se reconstruyera en primer lugar , y como eso haría que se sellara más tarde C.deb, también se C.debreconstruiría.

Ralph Rönnquist
fuente
1

Bueno, tal vez me estoy perdiendo totalmente su punto, pero parece que está volviendo a compilar el paquete A y desea volver a compilar los paquetes B y C, para lo cual simplemente sería un archivo provisional .

karoshi
fuente
¿Puedes explicar más detalles?
xiaodongjie
o cualquier ejemplo
xiaodongjie