Изменение каталога по умолчанию для debhelper при упаковке (.deb)

Я пытаюсь повернуть Spamdyke 4.3.1 (ссылка на загрузку) в пакет Debian (.deb). Это - довольно легкое программное обеспечение для создания, никакие сумасшедшие зависимости, просто libssl-dev так:

apt-get install build-essential devscripts \
                debhelper dh-make libssl-dev

и затем после того как Вы распаковываете источники:

cd spamdyke-4.3.1/spamdyke
./configure --exec_prefix=/usr 
make

и обычный

make install

Поскольку я готов сделать пакет Debian из этого программного обеспечения, я создал все необходимые файлы в debian/ папка и измененный install цель в spamdyke/Makefile.in путем добавления ${DESTDIR}:

install: spamdyke
        cp spamdyke ${DESTDIR}/usr/local/bin/spamdyke-@PACKAGE_VERSION@
        rm -f ${DESTDIR}/usr/local/bin/spamdyke
        ln -s ${DESTDIR}/usr/local/bin/spamdyke-@PACKAGE_VERSION@ ${DESTDIR}/usr/local/bin/spamdyke

Но моя текущая проблема состоит в том, что архив распределения удерживает все источники spamdyke/ папка вместо корневой папки, которая не является что dh_* инструменты ожидают делать весь тяжелый подъем автоматически:

drwxr-xr-x   4 vagrant vagrant  4096 Feb  3 10:57 debian
drwxr-xr-x   3 vagrant vagrant  4096 Jan 30 19:43 documentation
drwxr-xr-x   2 vagrant vagrant  4096 Feb  5 21:00 spamdyke
drwxr-xr-x 997 vagrant vagrant 77824 Jan 30 19:43 tests
drwxr-xr-x   2 vagrant vagrant  4096 Jan 20  2012 utils

К сожалению, я не могу создать корректный debian/rules сделать всю упаковочную работу. Я хотел бы сохранить мой debian/rules максимально простой и откровенно я надеялся что указание на него к spamdyke исходная папка с --builddirectory опция была бы достаточна, по крайней мере, для, настраивают и создают шаги. Мой ток debian/rules теперь похож на это:

#!/usr/bin/make -f
export DH_VERBOSE = 1

%:
        dh $@  --builddirectory=spamdyke

override_dh_auto_configure:
        dh_auto_configure --builddirectory=spamdyke -- --exec_prefix=/usr

override_dh_auto_build:
        dh_auto_make --builddirectory=spamdyke

однако debuild -b -us -uc производит довольно пустой .deb пакет в результате, с lintian, жалующимся на empty-binary-package:

dpkg-genchanges: binary-only upload (no source code included)
 dpkg-source --after-build spamdyke-4.3.1
dpkg-buildpackage: binary-only upload (no source included)
Now running lintian...
W: spamdyke: new-package-should-close-itp-bug
E: spamdyke: copyright-should-refer-to-common-license-file-for-gpl
W: spamdyke: empty-binary-package
Finished running lintian.

Я надеюсь, должен пропускать что-то очевидное здесь, но в данный момент я не могу узнать, что искать. Любые подсказки ценятся.Заранее спасибо.

4
задан 27 February 2019 в 03:23

1 ответ

Необходимо установить --sourcedirectory вместо --builddirectory на dh $@ звоните, это будет влиять на все dh_auto_*. Таким образом, можно удалить те переопределения.

BUILD SYSTEM OPTIONS
       The following command line options are supported by all of the 
       dh_auto_* debhelper programs. These programs support a variety 
       of build systems, and normally
       heuristically determine which to use, and how to use them. You
       can use these command line options to override the default 
       behavior.  Typically these are passed to
       dh(1), which then passes them to all the dh_auto_* programs.


   -Ddirectory, --sourcedirectory=directory
       Assume that the original package source tree is at the 
       specified directory rather than the top level directory of 
       the Debian source package tree.

   -B[directory], --builddirectory=[directory]
       Enable out of source building and use the specified directory
       as the build directory. If directory parameter is omitted, a 
       default build directory will be chosen.

Источник: man debhelper

Примечание:

  • Избегайте использования трудно кодированных путей

    Пример /usr/local, Используйте вместо этого $prefix переменная. автоинструменты имеют /usr/local как значение по умолчанию, debhelper сброс к /usr (Никакая потребность установить вручную)

    Предложенные исправления:

    spamdyke/Makefile.in определить prefix и измените цель символьной ссылки.

    prefix := @prefix@
    ...
    install: spamdyke
            mkdir -p ${DESTDIR}$(prefix)/bin/
            cp spamdyke ${DESTDIR}$(prefix)/bin/spamdyke-@PACKAGE_VERSION@
            rm -f ${DESTDIR}$(prefix)/bin/spamdyke
            ln -s $(prefix)/bin/spamdyke-@PACKAGE_VERSION@ ${DESTDIR}$(prefix)/bin/spamdyke
    

    debian/rules удалите переопределение

    #!/usr/bin/make -f
    export DH_VERBOSE=1
    
    %:
            dh $@ --sourcedirectory=spamdyke
    

    Ссылка: стандарты кодирования GNU

3
ответ дан 1 December 2019 в 10:01

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

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