Упаковка для отсутствующих файлов создания PPA .deb

Так что после того, как я перебрался от документа к документу, я заперся и следовал этому уроку: 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

2
задан 22 April 2016 в 22:51

1 ответ

Ну, я мог протестировать его на 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 маркировка) файлы, не текущее рабочее дерево.

Вот файлы, которые я изменил:

  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 <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
    
  3. libprime-server1.install переименован к libprime-server0.install

  4. libprime-server1.dir переименован к libprime-server0.dir

  5. Создать prime-server-bin.dirs

    usr/bin
    
  6. Создать 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
    
2
ответ дан 23 April 2016 в 08:51

Другие вопросы по тегам:

Похожие вопросы: