Empacotando para PPA .deb Creation Missing Files

2

Então, depois de me debater com doc para doc, eu me envolvi e segui este tutorial: link

Então, tentei as etapas e comecei a me deparar com problemas. Pesquisando por aí tem sido em grande parte inútil. Eu tenho um projeto autotools c ++ muito padrão que constrói uma biblioteca e alguns executáveis. Eu queria criar um pacote de 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: link

Eu tenho um script bash em que build.sh tem todos os passos que tenho feito. No começo eu estava tendo problemas para conseguir que o dh_* construísse qualquer coisa do meu projeto até que o @sneetsher me indicasse em mudar o arquivo de regras para fazer o autoreconf. Neste ponto, meus únicos problemas são W: libprime-server0: empty-binary-package e W: prime-server-bin: empty-binary-package .

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

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 de volta para libprime-server1.install e libprime-server1.dirs . Eu não consegui descobrir o que estou fazendo de errado com o pacote -bin . bzr pergunta sobre o tipo de pacote que estou fazendo e escolhi l para library se eu estivesse escolhendo outra coisa?

EDITAR:

A coisa toda funciona: link

Com a ajuda de @sneetsher, consegui colocar tudo isso em um ppa e trabalhar corretamente com confiança! Eu só quero agradecer a @sneetsher por toda a ajuda e paciência ao longo do caminho. Espero que este script possa ajudar outras pessoas que procuram fazer algo semelhante: link

    
por Kevin Kreiser 15.04.2016 / 22:21

1 resposta

2

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

  • Como você é novo no empacotamento, é melhor ativar a saída debhelper detalhada. Descomente export DH_VERBOSE=1 no arquivo rules .

  • O pacote parece depender de autoreconf não apenas automake / autotools . Então, altere a linha principal rules para:

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

    e adicione dh-autoreconf para criar dependências no arquivo control .

    Portanto, agora você precisa mais pré-gerar os arquivos de criação automática executando ./autogen.sh manualmente. Tenha em mente que tudo deve ser feito através do arquivo rules , caso contrário, ele falhará quando for construído em um servidor PPA com uma árvore de fontes limpas.

  • Um dos testes falha, eu dou a volta pulando-os. sobrescrevendo o dh_auto_test . Então, adiciono isso ao arquivo rules :

    override_dh_auto_test:
        echo skip auto-test
    

    deixe mais tarde para ser corrigido.

  • Para o pacote libprime-server vazio, isso é porque ele tem um nome errado.

    libprime-server no control file e libprime-server1 com 1 nos outros (como libprime-server1.install )

  • Sim, lintian (ferramenta QA) 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 nota, você tem que limpar a árvore de construção da compilação anterior. Então, apague debian/libprime-server1 folder & amp; tente reconstruir novamente.

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

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

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

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

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

    mas cometeu apenas um arquivo

    bzr add debian/source/format
    

    para consertá-lo, envie a pasta inteira:

    bzr add debian
    

    bzr builddeb parece usar apenas os arquivos de confirmação / tag (com Debian label), não a árvore de trabalho atual.

Aqui estão os arquivos que eu mudei:

  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 para libprime-server0.install

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

  5. Crie prime-server-bin.dirs

    usr/bin
    
  6. Crie prime-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
    
por user.dz 19.04.2016 / 23:16