Verpackung für PPA .deb-Erstellung Fehlende Dateien

Verpackung für PPA .deb-Erstellung Fehlende Dateien

Nachdem ich von Dokument zu Dokument geblättert bin, bin ich auf dieses Tutorial gestoßen und habe es befolgt:http://packaging.ubuntu.com/html/packaging-new-software.html

Also habe ich die Schritte dort ausprobiert und bin auf Probleme gestoßen. Googeln hat nicht viel geholfen. Ich habe ein sehr standardmäßiges Autotools-C++-Projekt, das eine Bibliothek und einige ausführbare Dateien erstellt. Ich wollte daraus ein Paket im Libfoo-Dev-Stil machen und es auf ein PPA setzen.

Um zu zeigen, was ich mache, habe ich ein Skript eingefügt, das die im Tutorial vorgeschlagenen Schritte ausführt (soweit ich sie richtig verstehe...). Hier ist, was ich habe:https://github.com/kevinkreiser/ppa-libprime-server

Ich habe dort ein Bash-Skript build.sh, das alle Schritte enthält, die ich ausgeführt habe. Zuerst hatte ich Probleme, dh_*irgendetwas aus meinem Projekt zu erstellen, bis @sneetsher mir den Hinweis gab, die Regeldatei zu ändern, um Autoreconf auszuführen. An diesem Punkt sind meine einzigen Probleme W: libprime-server0: empty-binary-packageund W: prime-server-bin: empty-binary-package.

Und wie dort steht, besteht das Problem nun darin, dass einige meiner Pakete nicht viel enthalten:

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

Das erste Paket funktioniert, wenn ich die Dateien wieder in libprime-server1.installund umbenenne libprime-server1.dirs. Ich konnte nicht herausfinden, was ich mit dem -binPaket falsch mache. bzrfragt nach der Art des Pakets, das ich erstelle, und ich wähle aus, lob libraryich etwas anderes wählen sollte?

BEARBEITEN:

Das Ganze funktioniert:https://launchpad.net/~kevinkreiser/+archive/ubuntu/prime-server

Mit der Hilfe von @sneetsher konnte ich das alles auf einem PPA installieren und es in Trusty richtig zum Laufen bringen! Ich möchte @sneetsher einfach für all die Hilfe und Geduld danken, die ich dabei hatte. Hoffentlich kann dieses Skript anderen helfen, die etwas Ähnliches tun möchten:https://github.com/kevinkreiser/ppa-libprime-server/blob/master/build.sh

Antwort1

Nun, ich konnte es auf Ubuntu 14.04 und (mit dem letzten Commit) auf Ubuntu 16.04 testen.

  • Da Sie neu im Verpacken sind, sollten Sie die ausführliche debhelperAusgabe aktivieren. Entfernen Sie die Kommentarzeichen export DH_VERBOSE=1aus der rulesDatei.

  • autoreconfDas Paket scheint nicht nur von automake/ abzuhängen autotools. Ändern Sie daher die rulesHauptzeile wie folgt:

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

    und dh-autoreconfzum Erstellen von Abhängigkeiten in controlder Datei hinzufügen.

    Sie müssen die Autobuild-Dateien jetzt nicht mehr manuell vorab generieren ./autogen.sh. Denken Sie daran, dass alles über eine Datei erfolgen sollte rules, da es sonst beim Erstellen auf einem PPA-Server mit sauberem Quellbaum fehlschlägt.

  • Einer der Tests schlägt fehl. Ich überspringe sie und überschreibe sie dh_auto_test. Also füge ich Folgendes zur rulesDatei hinzu:

    override_dh_auto_test:
        echo skip auto-test
    

    Lassen Sie es später reparieren.

  • Beim leeren libprime-serverPaket liegt dies daran, dass es einen falschen Namen hat.

    libprime-serverin controlDatei und libprime-server1mit 1in anderen (wie libprime-server1.install)

  • Ja, lintian(QA-Tool) gibt diese Warnung aus, weil es die Hauptversion des Pakets sein soll. Ja, es sollte in Ordnung sein, es umzubenennen libprime-server0. Es gibt nur einen Hinweis: Sie müssen den Build-Baum vom vorherigen Build bereinigen. Löschen Sie also debian/libprime-server1den Ordner und versuchen Sie den Neuaufbau erneut.

    Sie können so viele Pakete hinzufügen, wie Sie möchten, siehe aktualisierte Dateien unten.

  • Ja, Abhängigkeiten sollten das Binärpaket enthalten libprime-server0. Das Quellpaket libprime-serverist von keinem abhängig.

  • Ich habe zum Erstellen nicht Ihr Skript verwendet, sondern einen anderen manuellen Arbeitsablauf (Original-ZIP-Archiv herunterladen, extrahieren, Debian-Ordner hinzufügen, erstellen mit debuild). Ich konnte das gleiche Problem wie das mit den leeren Binärpaketen nicht reproduzieren.

    Ich konnte es mit reproduzieren build.sh. Das Problem ist, dass Sie das vollständige geändert haben debian/:

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

    aber nur eine Datei übermittelt

    bzr add debian/source/format
    

    Um das Problem zu beheben, committen Sie den gesamten Ordner:

    bzr add debian
    

    bzr builddebscheint nur die Commit-/Tag- DebianDateien (mit Label) zu verwenden, nicht den aktuellen Arbeitsbaum.

Hier sind die Dateien, die ich geändert habe:

  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.installwird umbenannt inlibprime-server0.install

  4. libprime-server1.dirwird umbenannt inlibprime-server0.dir

  5. Erstellenprime-server-bin.dirs

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

verwandte Informationen