
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-package
und 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.install
und umbenenne libprime-server1.dirs
. Ich konnte nicht herausfinden, was ich mit dem -bin
Paket falsch mache. bzr
fragt nach der Art des Pakets, das ich erstelle, und ich wähle aus, l
ob library
ich 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
debhelper
Ausgabe aktivieren. Entfernen Sie die Kommentarzeichenexport DH_VERBOSE=1
aus derrules
Datei.autoreconf
Das Paket scheint nicht nur vonautomake
/ abzuhängenautotools
. Ändern Sie daher dierules
Hauptzeile wie folgt:%: #dh $@ --with autotolls-dev dh $@ --parallel --list-missing --with autoreconf
und
dh-autoreconf
zum Erstellen von Abhängigkeiten incontrol
der 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 sollterules
, 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 zurrules
Datei hinzu:override_dh_auto_test: echo skip auto-test
Lassen Sie es später reparieren.
Beim leeren
libprime-server
Paket liegt dies daran, dass es einen falschen Namen hat.libprime-server
incontrol
Datei undlibprime-server1
mit1
in anderen (wielibprime-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 umzubenennenlibprime-server0
. Es gibt nur einen Hinweis: Sie müssen den Build-Baum vom vorherigen Build bereinigen. Löschen Sie alsodebian/libprime-server1
den 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 Quellpaketlibprime-server
ist 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 habendebian/
: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 builddeb
scheint nur die Commit-/Tag-Debian
Dateien (mit Label) zu verwenden, nicht den aktuellen Arbeitsbaum.
Hier sind die Dateien, die ich geändert habe:
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
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
libprime-server1.install
wird umbenannt inlibprime-server0.install
libprime-server1.dir
wird umbenannt inlibprime-server0.dir
Erstellen
prime-server-bin.dirs
usr/bin
Erstellen
prime-server-bin.install
usr/bin/*
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