какова цель и роль файла правил в debian packaging

Я пытаюсь debian упаковать свое приложение на C ++, разработанное с помощью Netbeans 7.3. Вот немного Makefile этого.

APPNAME=remotedevicecontroller
install:
    install config.xml /etc/${APPNAME}.conf.xml
    install devices.rules /etc/udev/rules.d/${APPNAME}.rules
    install error.log /var/log/${APPNAME}.log
    install init.conf /etc/init/${APPNAME}.conf
    install init.d /etc/init.d/${APPNAME}
    install ${CND_ARTIFACT_NAME_${CONF}} /usr/local/bin/${APPNAME}
    chmod u+x ${CND_ARTIFACT_NAME_${CONF}}
    ./${CND_ARTIFACT_NAME_${CONF}} -i

Я следую КАК СОЗДАТЬ ПАКЕТ .DEB и руководство по эксплуатации Debian New Maintainer's Guide. Когда я запустил dpkg-buildpackage -rfakeroot после успешного завершения всех вышеперечисленных шагов, я столкнулся с следующей ошибкой

$ dpkg-buildpackage -rfakeroot
dpkg-buildpackage: source package remotedevicecontroller
dpkg-buildpackage: source version 1.0-1
dpkg-buildpackage: source changed by satya gowtham kudupudi (gowtham) 
dpkg-buildpackage: host architecture i386
 dpkg-source --before-build remotedevicecontroller-1.0
 fakeroot debian/rules clean
dh clean
dh: No packages to build.
 dpkg-source -b remotedevicecontroller-1.0
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building remotedevicecontroller using existing ./remotedevicecontroller_1.0.orig.tar.gz
dpkg-source: info: building remotedevicecontroller in remotedevicecontroller_1.0-1.debian.tar.gz
dpkg-source: info: building remotedevicecontroller in remotedevicecontroller_1.0-1.dsc
 debian/rules build
dh build
dh: No packages to build.
 fakeroot debian/rules binary
dh binary
dh: No packages to build.
 signfile remotedevicecontroller_1.0-1.dsc

You need a passphrase to unlock the secret key for
user: "satya gowtham kudupudi (gowtham) "
2048-bit RSA key, ID 9A2853A0, created 2013-08-22

gpg: gpg-agent is not available in this session

 dpkg-genchanges  >../remotedevicecontroller_1.0-1_i386.changes
dpkg-genchanges: error: cannot read files list file: No such file or directory
dpkg-buildpackage: error: dpkg-genchanges gave error exit status 2

в КАК СОЗДАТЬ ПАКЕТ .DEB нет объяснения того, что роль файла rules. Что означает

%:
    dh $@

? Почему dpkg-buildpackage -rfakeroot говорит dh: No packages to build.?

1
задан 23 August 2013 в 18:22

1 ответ

Очень важная ошибка, которую я сделал в Makefile, не использует $(DESTDIR). Я отправляю его, чтобы помочь тем, кто борется за создание debian-пакета с этой распространенной ошибкой. Таким образом, правильный Makefile должен быть:

APPNAME=remotedevicecontroller
install:
    install config.xml ${DESTDIR}/etc/${APPNAME}.conf.xml
    install devices.rules ${DESTDIR}/etc/udev/rules.d/${APPNAME}.rules
    install error.log ${DESTDIR}/var/log/${APPNAME}.log
    install init.conf ${DESTDIR}/etc/init/${APPNAME}.conf
    install init.d ${DESTDIR}/etc/init.d/${APPNAME}
    install ${CND_ARTIFACT_NAME_${CONF}} ${DESTDIR}/usr/local/bin/${APPNAME}
    chmod u+x ${CND_ARTIFACT_NAME_${CONF}}
    ./${CND_ARTIFACT_NAME_${CONF}} -i

Если некоторые make целевые объекты не могут переопределить соответствующую цель dh_make в файле rules, это может помочь в успешной упаковке.

override_dh_auto_test:
%:
    dh clean
    dh binary

цель test в моем приложении дает ошибку, и это не важно, поэтому я переопределил dh_auto_test.

И не забудьте очистить всю трассу файлы, оставленные вашими неудачными испытаниями перед новой попыткой.

0
ответ дан 24 May 2018 в 18:46

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

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