Empaquetado para la creación de PPA .deb Archivos faltantes

Empaquetado para la creación de PPA .deb Archivos faltantes

Entonces, después de pasar de un documento a otro, me aferré a este tutorial y lo seguí:http://packaging.ubuntu.com/html/packaging-new-software.html

Entonces probé los pasos allí y comencé a tener problemas. Buscar en Google ha sido en gran medida inútil. Tengo un proyecto de autotools c++ muy estándar que crea una biblioteca y algunos ejecutables. Quería crear un paquete estilo libfoo-dev y pegarlo en un PPA.

Para ayudar a mostrar lo que estoy haciendo, he pegado un script que sigue los pasos propuestos en el tutorial (hasta donde los entiendo correctamente...). Esto es lo que tengo:https://github.com/kevinkreiser/ppa-libprime-server

Tengo un script bash allí build.shque tiene todos los pasos que he estado siguiendo. Al principio tenía problemas para dh_*compilar algo de mi proyecto hasta que @sneetsher me indicó que cambiara el archivo de reglas para realizar autoreconf. En este punto mis únicos problemas son W: libprime-server0: empty-binary-packagey W: prime-server-bin: empty-binary-package.

Y como dice, el problema ahora es que un par de mis paquetes no contienen mucho de nada:

user@pc$ lesspipe libprime-server0_0.3.2-0ubuntu1_amd64.deb 
libprime-server0_0.3.2-0ubuntu1_amd64.deb:
 neues Debian-Paket, Version 2.0.
 Größe 2004 Byte: control-Archiv= 528 Byte.
     425 Byte,    12 Zeilen      control              
     160 Byte,     2 Zeilen      md5sums              
 Package: libprime-server0
 Source: libprime-server
 Version: 0.3.2-0ubuntu1
 Architecture: amd64
 Maintainer: Kevin Kreiser <[email protected]>
 Installed-Size: 26
 Section: contrib/libs
 Priority: optional
 Homepage: https://github.com/kevinkreiser/prime_server
 Description: Service oriented distributed computing API
  A set of APIs designed around the zeromq butterfly pattern
  specifically focused on servicing http requests

*** Contents:
drwxr-xr-x root/root         0 2016-04-21 11:48 ./
drwxr-xr-x root/root         0 2016-04-21 11:48 ./usr/
drwxr-xr-x root/root         0 2016-04-21 11:48 ./usr/share/
drwxr-xr-x root/root         0 2016-04-21 11:48 ./usr/share/doc/
drwxr-xr-x root/root         0 2016-04-21 11:48 ./usr/share/doc/libprime-server0/
-rw-r--r-- root/root       167 2016-04-18 11:04 ./usr/share/doc/libprime-server0/changelog.Debian.gz
-rw-r--r-- root/root      1558 2016-04-15 09:46 ./usr/share/doc/libprime-server0/copyright

user@pc:~/sandbox/ppa-libprime-server/build$ lesspipe prime-server-bin_0.3.2-0ubuntu1_amd64.deb 
prime-server-bin_0.3.2-0ubuntu1_amd64.deb:
 neues Debian-Paket, Version 2.0.
 Größe 1994 Byte: control-Archiv= 517 Byte.
     437 Byte,    12 Zeilen      control              
     160 Byte,     2 Zeilen      md5sums              
 Package: prime-server-bin
 Source: libprime-server
 Version: 0.3.2-0ubuntu1
 Architecture: amd64
 Maintainer: Kevin Kreiser <[email protected]>
 Installed-Size: 26
 Depends: libprime-server0 (= 0.3.2-0ubuntu1)
 Section: contrib/misc
 Priority: optional
 Homepage: https://github.com/kevinkreiser/prime_server
 Description: Service oriented distributed computing executables
  A set of executables for use in running a distributed http service

*** Contents:
drwxr-xr-x root/root         0 2016-04-21 11:48 ./
drwxr-xr-x root/root         0 2016-04-21 11:48 ./usr/
drwxr-xr-x root/root         0 2016-04-21 11:48 ./usr/share/
drwxr-xr-x root/root         0 2016-04-21 11:48 ./usr/share/doc/
drwxr-xr-x root/root         0 2016-04-21 11:48 ./usr/share/doc/prime-server-bin/
-rw-r--r-- root/root       167 2016-04-18 11:04 ./usr/share/doc/prime-server-bin/changelog.Debian.gz
-rw-r--r-- root/root      1558 2016-04-15 09:46 ./usr/share/doc/prime-server-bin/copyright

El primer paquete funciona si cambio el nombre de los archivos a libprime-server1.instally libprime-server1.dirs. No he podido descubrir qué estoy haciendo mal con el -binpaquete. bzrpregunta sobre el tipo de paquete que estoy haciendo y elijo l¿ librarydebería elegir otra cosa?

EDITAR:

Todo funciona:https://launchpad.net/~kevinkreiser/+archive/ubuntu/prime-server

¡Con la ayuda de @sneetsher pude instalar todo esto en un ppa y funcionar correctamente en Trusty! Solo quiero agradecer a @sneetsher por toda la ayuda y paciencia a lo largo del camino. Esperemos que este script pueda ayudar a otros que quieran hacer algo similar:https://github.com/kevinkreiser/ppa-libprime-server/blob/master/build.sh

Respuesta1

Bueno, podría probarlo en Ubuntu 14.04 y (con la última confirmación) en Ubuntu 16.04.

  • Como es nuevo en el empaquetado, es mejor habilitar la debhelpersalida detallada. Descomentar export DH_VERBOSE=1en el rulesarchivo.

  • El paquete parece depender autoreconfno solo de automake/ autotools. Entonces cambie la ruleslínea principal a:

    %:
        #dh $@ --with autotolls-dev
        dh $@ --parallel --list-missing --with autoreconf
    

    y agregar dh-autoreconfpara crear dependencias en controlel archivo.

    Por lo tanto, ya no es necesario generar previamente los archivos de compilación automática ejecutándolos ./autogen.shmanualmente. Tenga en cuenta que todo debe hacerse a través de rulesun archivo; de lo contrario, fallará cuando se construya en un servidor PPA con un árbol de fuentes limpio.

  • Una de las pruebas falla, me las salto. anulando el dh_auto_test. Entonces agrego esto al rulesarchivo:

    override_dh_auto_test:
        echo skip auto-test
    

    déjalo más tarde para que lo arreglen.

  • Para el libprime-serverpaquete vacío, esto se debe a que tiene un nombre incorrecto.

    libprime-serveren controlarchivo y libprime-server1con 1otros (como libprime-server1.install)

  • Sí, lintian(herramienta de control de calidad) genera esa advertencia porque espera ser la versión principal del paquete. Sí, debería estar bien cambiarle el nombre a libprime-server0. Solo hay una nota: debes limpiar el árbol de compilación de la compilación anterior. Así que elimine debian/libprime-server1la carpeta e intente reconstruirla nuevamente.

    Puede agregar tantos paquetes como desee; consulte los archivos actualizados a continuación.

  • Sí, las dependencias deben incluir el paquete binario libprime-server0. El paquete fuente libprime-serverno depende de ninguno.

  • No estaba usando su script para compilar, estaba usando otro flujo de trabajo manual (descargar el archivo zip original, extraerlo, agregar la carpeta Debian, compilar usando debuild). No pude reproducir el mismo problema que el de los paquetes binarios vacíos.

    Podría reproducirlo con build.sh. El problema es que has cambiado el completo debian/:

    rm -rf libprime-server/debian
    cp -rp ../debian libprime-server
    

    pero cometió solo un archivo

    bzr add debian/source/format
    

    para solucionarlo, confirme toda la carpeta:

    bzr add debian
    

    bzr builddebparece usar solo los Debianarchivos de confirmación/etiqueta (con etiqueta), no el árbol de trabajo actual.

Aquí están los archivos que he cambiado:

  1. debian/rules

    #!/usr/bin/make -f
    # -*- makefile -*-
    
    # Uncomment this to turn on verbose mode.
    export DH_VERBOSE=1
    
    %:
        #dh $@  --with autotools-dev
        dh $@ --parallel --list-missing --with autoreconf
    
    override_dh_auto_test:
        echo skip auto-test
    
  2. debian/control

    Source: libprime-server
    Priority: optional
    Maintainer: Kevin Kreiser <[email protected]>
    Build-Depends: debhelper (>= 9), autotools-dev, dh-autoreconf, libcurl4-openssl-dev, libzmq3-dev
    Standards-Version: 3.9.5
    Section: libs
    Homepage: https://github.com/kevinkreiser/prime_server
    Vcs-Git: git://github.com/kevinkreiser/prime_server.git
    
    Package: libprime-server-dev
    Section: contrib/libdevel
    Architecture: any
    Depends: libprime-server0 (= ${binary:Version}), ${misc:Depends}
    Description: Service oriented distributed computing API
     A set of APIs designed around the zeromq butterfly pattern
     specifically focused on servicing http requests
    
    Package: libprime-server0
    Section: contrib/libs
    Architecture: any
    Depends: ${shlibs:Depends}, ${misc:Depends}
    Description: Service oriented distributed computing API
     A set of APIs designed around the zeromq butterfly pattern
     specifically focused on servicing http requests
    
    Package: prime-server-bin
    Section: contrib/misc
    Architecture: any
    Depends: libprime-server0 (= ${binary:Version}), ${misc:Depends}
    Description: Service oriented distributed computing API
     A set of APIs designed around the zeromq butterfly pattern
     specifically focused on servicing http requests
    
  3. libprime-server1.installse cambia el nombre alibprime-server0.install

  4. libprime-server1.dirse cambia el nombre alibprime-server0.dir

  5. Crearprime-server-bin.dirs

    usr/bin
    
  6. Crearprime-server-bin.install

    usr/bin/*
    
  7. build.sh

    #!/bin/bash
    
    set -e
    
    rm -rf build
    mkdir build
    pushd build
    
    #get prime_server software
    #sudo apt-get install autoconf automake libtool make gcc-4.9 g++-4.9 lcov
    sudo apt-get install libcurl4-openssl-dev libzmq3-dev
    git clone --branch 0.3.2 --recursive  https://github.com/kevinkreiser/prime_server.git
    tar pczf prime_server.tar.gz prime_server
    rm -rf prime_server
    
    #start building the package
    sudo apt-get install dh-make dh-autoreconf bzr-builddeb
    bzr dh-make libprime-server 0.3.2 prime_server.tar.gz
    rm -rf libprime-server/debian
    cp -rp ../debian libprime-server
    pushd libprime-server
    bzr add debian
    bzr commit -m "Initial commit of Debian packaging."
    bzr builddeb -- -us -uc
    #TODO: sign the package
    popd
    
    #TODO: push the package to the ppa
    
    #TODO: make an ITP for inclusion in mainline
    
    popd
    

información relacionada