Empacotamento para arquivos ausentes de criação de PPA .deb

Empacotamento para arquivos ausentes de criação de PPA .deb

Então, depois de me debater de documento em documento, agarrei-me e segui este tutorial:http://packaging.ubuntu.com/html/packaging-new-software.html

Então tentei as etapas e comecei a ter problemas. Pesquisar no Google tem sido em grande parte inútil. Eu tenho um projeto autotools c++ muito padrão que cria uma biblioteca e alguns executáveis. Eu queria fazer um pacote no estilo libfoo-dev e colocá-lo em um PPA.

Para ajudar a mostrar o que estou fazendo, coloquei um script que executa os passos propostos no tutorial (até onde estou entendendo corretamente..). Aqui está o que eu tenho:https://github.com/kevinkreiser/ppa-libprime-server

Eu tenho um script bash build.shque contém todas as etapas que venho executando. No começo eu estava tendo problemas para dh_*construir qualquer coisa do meu projeto até que @sneetsher me deu uma dica para alterar o arquivo de regras para fazer o autoreconf. Neste ponto, meus únicos problemas são W: libprime-server0: empty-binary-packagee W: prime-server-bin: empty-binary-package.

E como diz, o problema agora é que alguns dos meus pacotes não contêm muita coisa:

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

O primeiro pacote funciona se eu renomear os arquivos para libprime-server1.installe libprime-server1.dirs. Não consegui descobrir o que estou fazendo de errado com o -binpacote. bzrpergunta sobre o tipo de pacote que estou fazendo e escolho, ldevo libraryescolher outra coisa?

EDITAR:

A coisa toda funciona:https://launchpad.net/~kevinkreiser/+archive/ubuntu/prime-server

Com a ajuda do @sneetsher consegui colocar tudo isso em um ppa e funcionando corretamente no confiável! Só quero agradecer a @sneetsher por toda a ajuda e paciência ao longo do caminho. Esperamos que este script possa ajudar outras pessoas que desejam fazer algo semelhante:https://github.com/kevinkreiser/ppa-libprime-server/blob/master/build.sh

Responder1

Bem, eu poderia testá-lo no Ubuntu 14.04 e (com o último commit) no Ubuntu 16.04.

  • Como você é novo em empacotamento, é melhor habilitar a debhelpersaída detalhada. Remova o comentário export DH_VERBOSE=1no rulesarquivo.

  • O pacote parece depender autoreconfnão apenas de automake/ autotools. Então mude a ruleslinha principal para:

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

    e adicione dh-autoreconfpara construir dependências no controlarquivo.

    Portanto, agora você não precisa pré-gerar os arquivos de compilação automática executando ./autogen.shmanualmente. Tenha em mente que tudo deve ser feito através de rulesarquivo, caso contrário ele falhará quando for construído em um servidor PPA com árvore de origem limpa.

  • Um dos testes falha, eu ignoro-os. substituindo o dh_auto_test. Então eu adiciono isso ao rulesarquivo:

    override_dh_auto_test:
        echo skip auto-test
    

    deixe mais tarde para ser consertado.

  • Para o libprime-serverpacote vazio, isso ocorre porque ele tem um nome errado.

    libprime-serverem controlarquivo e libprime-server1com 1em outros (como libprime-server1.install)

  • Sim, lintian(ferramenta de controle de qualidade) gera esse aviso porque espera ser a versão principal do pacote. Sim, não há problema em renomeá-lo para libprime-server0. Há apenas uma observação: você deve limpar a árvore de construção da construção anterior. Portanto, exclua debian/libprime-server1a pasta e tente reconstruir novamente.

    Você pode adicionar quantos pacotes quiser, veja os arquivos atualizados abaixo.

  • Sim, as dependências devem incluir o pacote binário libprime-server0. O pacote fonte libprime-servernão é uma dependência de nenhum.

  • Eu não estava usando seu script para construir, estava usando outro fluxo de trabalho manual (baixe o arquivo zip original, extraia-o, adicione a pasta debian, construa usando debuild). Não consegui reproduzir o mesmo problema dos pacotes binários vazios.

    Eu poderia reproduzi-lo com build.sh. O problema, você mudou o completo debian/:

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

    mas commitou apenas um arquivo

    bzr add debian/source/format
    

    para consertar, envie a pasta inteira:

    bzr add debian
    

    bzr builddebparece usar apenas os Debianarquivos commit/tag (com rótulo), não a árvore de trabalho atual.

Aqui estão os arquivos que alterei:

  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.installé renomeado paralibprime-server0.install

  4. libprime-server1.diré renomeado paralibprime-server0.dir

  5. Criarprime-server-bin.dirs

    usr/bin
    
  6. Criarprime-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
    

informação relacionada