¿Cómo creo un PPA para un programa de trabajo?

36

Supongamos que tengo una aplicación de trabajo escrita en C, C ++ o Python. Quiero crear un PPA de Launchpad para que otros puedan instalarlo fácilmente desde un paquete. Dé instrucciones paso a paso para hacerlo de principio a fin. (O proporcione un enlace que haga lo mismo;)

  • ¿Importa el lenguaje de programación? (¿Podría ser un script bash?)
  • ¿Necesito agregar algo a mi compilación?
  • ¿Dónde debe instalarse la compilación?
  • ¿Cómo defino dependencias?
  • ¿Cómo uso las dependencias?
  • ¿Cómo creo un .deb?
  • ¿Qué debo hacer antes de subir a Launchpad?
david.libremone
fuente
1
Estoy haciendo esta pregunta porque ocasionalmente recomiendo que los proyectos de FLOSS creen un PPA (para poder instalarlos fácilmente :) - Me gustaría poder señalarlos a un recurso completo o poder hacerlo yo mismo.
david.libremone

Respuestas:

33

Esa es una pregunta muy amplia. Trataré de responder tanto como pueda, pero definitivamente NO será una instrucción paso a paso. Esto se debe a que no existe un algoritmo paso a paso para crear un paquete. La forma en que lo haga depende de muchos factores, principalmente del tipo de paquete (aplicación, biblioteca), la estructura de la fuente y muchos detalles.

Afortunadamente, hay una guía completa en http://packaging.ubuntu.com

Intentaré ayudarte un poco a comprender todo el proceso, así que cuando estés un poco más familiarizado con él. La Guía de empaquetado incluye recursos para obtener ayuda adicional.


En primer lugar, debe darse cuenta de que crear un paquete (un archivo .deb) es un proceso separado de crear un PPA. Crear un PPA es cuestión de ir al perfil de su Launchpad y hacer clic en el enlace "Crear un nuevo PPA". Eso es todo. Está creado, funciona, pero está vacío. Para cargar un paquete, primero debe crear uno. Pero déjame primero responder algunas de tus preguntas menores.

  • El lenguaje de programación NO importa en absoluto. Puede ser una aplicación C ++, un script Bash, Brainfuck Hello World, un solo archivo README o un conjunto de fotos geniales. Los paquetes pueden contener cualquier archivo. Durante la instalación, el paquete se extrae a la raíz ("/") de su sistema de archivos. De esta forma, pueden colocar algunos archivos en la carpeta de binarios, agregar algunos fondos de pantalla al conjunto predeterminado de GNOME o proporcionar al usuario un script Bash.
  • Usted QUÉ necesita añadir algo a la fuente. Debe ser un directorio de nivel superior llamado "debian". Habrá algunos archivos con los detalles del paquete; se utilizarán para definir de qué tipo es el paquete, etc.
  • Las dependencias se enumeran en uno de estos archivos (entre otros detalles). ¿De dónde conseguirlos? Son simplemente otros paquetes que utiliza su aplicación. El desarrollador de la aplicación SABERÁ qué bibliotecas y recursos requiere su programa, por lo que no debería tener muchos problemas para enumerarlos.
    • Algunas herramientas utilizadas para construir un paquete (pbuilder) pueden completar las dependencias automáticamente, probablemente determinando lo que su aplicación requiere durante la compilación.
  • También es muy recomendable usar AutoTools . Esa es otra cosa que puede necesitar agregar, pero probablemente casi todos los programas ya los usan. AutoTools es un conjunto de programas extremadamente útiles: automake, autoconf y autoscan, por nombrar algunos. Cuando compila e instala un programa con el famoso ./configure && make && make install luego, las herramientas automáticas se usan para manejar automáticamente la fuente, para preparar otros recursos incluidos con la fuente para la instalación y para extraer el resultado de la compilación en el lugar apropiado (para responder a su pregunta: la compilación se extraerá en MUCHOS lugares separados). los archivos binarios irán a / usr / local / bin, los documentos a / usr / local / share / docs, etc. Además, los archivos binarios de un paquete irán incluso a diferentes lugares, por ejemplo, los archivos binarios a / usr / bin. con este complicado diseño de directorios: use AutoTools, se preocupará automáticamente y por eso son tan útiles).

Construir un paquete .deb puede parecer un proceso realmente complicado, pero no es tan difícil. Le recomiendo la guía oficial de Ubuntu para crear paquetes: http://packaging.ubuntu.com

Es ENORME, pero verá que probablemente puede omitir la mayoría de las partes de ese texto (dependiendo del paquete que vaya a compilar). Básicamente, el proceso de envasado consta de estas partes (todas se explican claramente en la Guía) :

  1. Inicie algunas herramientas utilizadas para construir paquetes.
  2. Obtén la fuente
  3. Cree el directorio ./debian y complételo con los datos requeridos.
  4. Cree el paquete con debuild [Eso debería crear un conjunto de archivos, incluidos * .dsc, * _source.build, * _source.changes, que son responsables de los datos sobre el paquete y de cómo manejarlo (también tendrá una fuente .tar.gz)]
  5. Pruebe si todo funciona ejecutando pbuilder localmente (tomará todos estos archivos mencionados anteriormente e intente combinarlos en un paquete .deb, creando automáticamente la fuente con la ayuda de AutoTools; es por eso que son cruciales para el empaquetado) . no, puede llevarse bien sin ellos o con algunas alternativas, pero ese es el enfoque más fácil, y otros pueden requerir una configuración avanzada, ya que deberá instruir al constructor sobre cómo construir la fuente (usando el archivo ./debian/rules). ) - pero eso no es para principiantes] ) - si solo quieres obtener un paquete .deb, está listo.

Ahora tendrá que subirlo a su PPA, que se explica en esta página de ayuda: https://help.launchpad.net/Packaging/PPA/Uploading

  1. Use dput para cargar estos archivos en Launchpad
  2. Launchpad ejecutará pbuilder en sus computadoras y generará paquetes en un entorno limpio
  3. Finalmente, los paquetes deberían aparecer en el PPA.

Como puede ver, crear un PPA no es tan sencillo . Pero no se asuste , tampoco es tan difícil. Además, le recomiendo que no aliente a los desarrolladores a usar un PPA, ya que probablemente no lo escucharán, ya que tendrían que hacer un trabajo adicional (y si lo hubieran querido ya lo habrían hecho), pero puede desea intentar apoyar a los desarrolladores de Ubuntu y a toda la comunidad y proporcionarles los paquetes que ha preparado :)

Le deseo buena suerte con la creación de paquetes, espero que encuentre útil mi respuesta :)

Tu amigo Rafał Cieślak

Rafał Cieślak
fuente
¿Cómo puede crear un PPA que no sea Launchpad, alojado en su propia infraestructura? ¿Es solo un servidor web simple con la estructura de directorios adecuada?
Prof. Moriarty
¿Fue realmente necesario el ejemplo brainf * ck ?
Camden
5
  • Antes de que pueda cargar su paquete, deberá configurarlo para el .debempaquetado, consulte la Guía de empaquetado de Ubuntu .

  • Una vez que pueda crear un paquete para su software, consulte la documentación de PPA de Launchpad . Le guiará desde la creación de PPA hasta la carga de su paquete.

Isaias
fuente