Изменение каталога по умолчанию для 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.

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

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

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