¿Cómo crear y administrar PPA de arquitectura múltiple?

13

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?

maxschlepzig
fuente
1
¡Estoy realmente interesado en este proceso también!
Marco Ceppi

Respuestas:

7

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 changelogarchivo, 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: anyen el debian/controlarchivo 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)

LassePoulsen
fuente
10

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 texto alternativo

Isaias
fuente
1
Eso suena interesante. No puedo usar eso directamente, ya que no estoy usando bzr ni launchpad para el alojamiento de repositorios (estoy usando Mercurial). ¡Pero! Quizás sea factible crear un Repositorio bzr en la plataforma de lanzamiento y volcar los últimos conjuntos de cambios de mi repositorio principal allí, cada vez que quiera activar una nueva compilación del paquete.
maxschlepzig
No codifico nada con tanta frecuencia y estoy emocionado por esto.
persona el
@maxschlepzig Haga una pregunta por separado sobre cómo importar sus cosas de Hg en Launchpad y la responderé.
Jorge Castro
6

Con respecto a las convenciones de nomenclatura, el estándar es hacer algo como esto:

  • 1.0-0ubuntu1 para el paquete que termina en el archivo oficial de Ubuntu
  • 1.0-0ubuntu1 ~ lucidppa1 para la versión de ese paquete que pones en tu PPA para lucid
  • 1.0-0ubuntu1 ~ karmicppa1 para la versión de ese paquete para Karmic

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.

Scott Ritchie
fuente
Scott: ¿hay algún tipo de documentación sobre esto?
Bartosz Radaczyński
El ~ y otras cosas probablemente estén etiquetadas en algún lugar oscuro. El resto son solo convenciones que he observado entre otros desarrolladores, no prácticas oficiales documentadas.
Scott Ritchie
Ok, gracias, su convención de nomenclatura sugerida funciona bien.
Bartosz Radaczyński
Debo agregar que a veces esto se extiende aún más para poner un ~ adicional antes del ppa: 1.0-0ubuntu1 ~ karmic1 ~ ppa1 La razón de esto es que una actualización de lanzamiento estable oficial de Karmic podría lanzarse como 1.0-0ubuntu1 ~ karmic1, y nosotros quiero que la versión PPA sea menor que eso.
Scott Ritchie
Tuve que preguntar en #launchpad en Freenode, y aparentemente esto está semidocumentado en LaunchPad Wiki en Building a Source Package . Gracias por la información sobre esta convención, es bastante útil ^ _ ^
TrinitronX