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