Так что после того, как я перебрался от документа к документу, я заперся и следовал этому уроку: http://packaging.ubuntu.com/html/packaging-new-software.html
1116 Итак, я попробовал пройтись по лестнице и столкнулся с неприятностями. Поиск в Google был в основном бесполезен. У меня есть очень стандартный проект autotools c ++, который собирает библиотеку и некоторые исполняемые файлы. Я хотел сделать из него пакет в стиле libfoo-dev и прикрепить его к PPA.
Чтобы показать, что я делаю, я вставил скрипт, который выполняет шаги, предложенные в руководстве (насколько я понимаю их правильно ...). Вот что у меня есть: https://github.com/kevinkreiser/ppa-libprime-server
У меня там есть скрипт bash build.sh
, в котором есть все шаги, которые у меня есть. делали. Сначала у меня были проблемы с тем, чтобы заставить dh_*
собрать что-либо из моего проекта, пока @sneetsher не убедил меня изменить файл правил на autoreconf. На данный момент мои единственные проблемы - W: libprime-server0: empty-binary-package
и W: prime-server-bin: empty-binary-package
.
И, как говорится, проблема в том, что в паре моих пакетов почти ничего нет:
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 <kevinkreiser@gmail.com>
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 <kevinkreiser@gmail.com>
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
Первый пакет работает, если я переименую файлы обратно до libprime-server1.install
и libprime-server1.dirs
. Я не смог понять, что я делаю не так с пакетом -bin
. bzr
спрашивает о типе упаковки, которую я делаю, и я выбираю l
для library
, должен ли я выбирать что-то еще?
РЕДАКТИРОВАТЬ:
Все это работает: https://launchpad.net/~kevinkreiser/+archive/ubuntu/prime-server
С помощью @sneetsher я смог получить все это на ppa и работать должным образом в верном! Я просто хочу поблагодарить @sneetsher за помощь и терпение на этом пути. Надеемся, что этот скрипт поможет другим, желающим сделать что-то подобное: https://github.com/kevinkreiser/ppa-libprime-server/blob/master/build.sh
Ну, я мог протестировать его на Ubuntu 14.04 и (с последней фиксацией) в Ubuntu 16.04.
Поскольку Вы плохо знакомы с упаковкой, это лучше для включения подробного debhelper
вывод. Некомментарий export DH_VERBOSE=1
в rules
файл.
Пакет, кажется, зависит от autoreconf
не просто automake
/autotools
. Так изменитесь rules
основная строка к:
%:
#dh $@ --with autotolls-dev
dh $@ --parallel --list-missing --with autoreconf
и добавьте dh-autoreconf
создавать зависимости в control
файл.
Таким образом, Вы - теперь более длинная потребность предварительно генерировать автоматические файлы типа "build" путем выполнения ./autogen.sh
вручную. Следует иметь в виду, что каждая вещь должна быть сделана через rules
файл, иначе это перестанет работать, когда это будет основано на сервере PPA с чистым исходным деревом.
Один из тестовых сбоев, я брожу вокруг путем пропуска их. переопределение dh_auto_test
. Таким образом, я добавляю это к rules
файл:
override_dh_auto_test:
echo skip auto-test
оставьте его позже, чтобы быть зафиксированными.
Для пустого libprime-server
пакет, это вызвано тем, что это, имеет неправильное имя.
libprime-server
в control
файл и libprime-server1
с 1
в других (как libprime-server1.install
)
Да, lintian
(Инструмент QA) повышения, что предупреждение, потому что это ожидает быть основной версией пакета. Да, должно быть нормально переименовывать его к libprime-server0
. Существует только одно примечание, необходимо очистить дерево сборки от предыдущей сборки. Поэтому удалите debian/libprime-server1
папка и попытка восстанавливают снова.
Можно добавить столько пакетов, сколько Вы хотите, посмотрите обновленные файлы ниже.
Да, зависимости должны включать двоичный пакет, libprime-server0
. Исходный пакет libprime-server
это не зависимость ни от кого.
Я не использовал Ваш сценарий для создания, я использовал другой ручной рабочий процесс (Загрузите исходный архив zip, извлеките его, добавьте debian папку, использование сборки debuild
). Я не мог воспроизвести ту же проблему как тот из пустых двоичных пакетов.
Я мог воспроизвести его с build.sh
. Проблема, Вы изменили полное debian/
:
rm -rf libprime-server/debian
cp -rp ../debian libprime-server
но фиксировавший только один файл
bzr add debian/source/format
для фиксации его фиксируйте целую папку:
bzr add debian
bzr builddeb
кажется, использует только фиксацию/тег (с Debian
маркировка) файлы, не текущее рабочее дерево.
Вот файлы, которые я изменил:
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 <kevinkreiser@gmail.com>
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
переименован к libprime-server0.install
libprime-server1.dir
переименован к libprime-server0.dir
Создать prime-server-bin.dirs
usr/bin
Создать 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