Tengo un programa que necesita ser recompilado para cada versión de ubuntu.
Actualmente lo estoy empaquetando usando el PPA de Ubuntu solo para la distribución actual.
Finalmente, tengo que proporcionar paquetes para la versión anterior de ubuntu.
No estoy seguro de cómo lograr esto.
¿Cómo funciona el servidor de compilación PPA de Ubuntu? ¿Simplemente mira el campo de distribución en la entrada más reciente del registro de cambios (en el archivo debian / changelog) para determinar para qué distribución se debe compilar el paquete?
La especificación de Debian permite agregar múltiples distribuciones en el campo de distribución. Pero esto no parece ayudarme.
Algunos documentos de ubuntu hablan de codificar el nombre de la distribución en el número de versión (en el archivo de registro de cambios de Debian).
Pero, ¿cómo funciona esto en la práctica? Una nueva versión del programa está disponible, ¿entonces qué? ¿Agrego para cada distribución una nueva entrada de registro de cambios y el servidor de compilación PPA se compila automáticamente para cada paquete nuevo de distribución después de configurarlo? ¿O el servidor de compilación PPA solo mira la primera entrada del registro de cambios?
Respuestas:
El camino a seguir es subir una vez por cada versión de Ubuntu .
Launchpad no creará paquetes para versiones de Ubuntu que ya no sean compatibles, y solo creará un paquete para una versión específica de Ubuntu. ¡La versión de destino está especificada (como ya sabe) en el
changelog
archivo, por la entrada más reciente!Recuerde tener en cuenta que los paquetes de los que depende su programa podrían no estar disponibles en la misma versión en todas las versiones de Ubuntu.
También habla de "arquitectura múltiple" (arquitectura = tipo CUP, por ejemplo, x86, LPIA, AMD64), esto no hace ninguna diferencia, ya que cada paquete cargado es compilado para todas las arquitecturas disponibles siempre que lo tenga
Architecture: any
en eldebian/control
archivo de definición de paquete ( ) esto también le permite hacer que el paquete dependa de diferentes paquetes para diferentes arquitecturas (definiendo el paquete más de una vez)fuente
Launchpad tiene una nueva característica actualmente en versión beta que le permite construir su paquete para múltiples versiones de ubuntu a la vez sin ningún trabajo adicional. Incluso puede crear automáticamente sus paquetes todos los días. https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted
fuente
Con respecto a las convenciones de nomenclatura, el estándar es hacer algo como esto:
La razón es que un ~ en el campo de versión representa "menos que nada" para un número de versión. Entonces, si alguien agrega su PPA en Karmic, obtendrá el paquete ~ karmicppa1. Cuando se actualicen a Lucid (y leyeron su PPA), se reemplazará con el paquete Lucid PPA. Si su paquete ingresa al archivo oficial, la transición fuera de su PPA se realizará sin problemas.
La otra ventaja es que poner el lanzamiento en el campo de versión deja en claro a qué lanzamiento se aplican los archivos (y le recuerda sutilmente que cargue uno por lanzamiento). También puede necesitar diferentes ramas para cada versión de Ubuntu para cuando tenga diferentes dependencias, por ejemplo.
fuente