Я создаю двоичный пакет для локального использования путем чтения разговора http://chat.stackexchange.com/transcript/message/1313226#1313226. Я выполнил шаги, упомянутые в списке.
My environment:
ubuntu 12.04
Project: MakeFile based C++ project which contains several sub directories and creating several shared libraries.
Ниже выполненные шаги.
dh_make --createorig
в консоли. Этот шаг генерировал требуемые файлы для упаковки внутри debian папкасписок файлов в./debian папке
source //folder
compat
rules
copyright
changelog
control
install
Ниже содержание важных файлов.
Управление кошкой $
Source: cscore
Section: misc
Priority: extra
Maintainer: dwft78 <aaaa@bbbb.com>
Build-Depends: debhelper (>= 8.0.0), autotools-dev
Standards-Version: 3.9.2
Homepage: <insert the upstream URL, if relevant>
Package: cscore
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: CoreScanner
CoreScanner for Ubuntu-12.04
Установка кошки $
/opt/installation-dir/bin/
это - то, где двоичные файлы должны быть установлены.
журнал изменений кошки
cscore (1.0-1) precise; urgency=low
* Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
-- name <name@xxx.com> Wed, 28 May 2014 14:16:29 +0530
Правила кошки $
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
%:
dh $@
наконец я работаю debuild
команда, но я получил ошибку рева.
find /home/dwft78/project/cscore/cscore-1.0/lib -name "libcs*" -type f -exec cp -f {} /home/dwft78/project/cscore/cscore-1.0/debian/cscore/opt/motorola-scanner//bin \;
find /home/dwft78/project/cscore/cscore-1.0/lib -name "libcs*" -type l -exec cp -Rf {} /home/dwft78/project/cscore/cscore-1.0/debian/cscore/opt/motorola-scanner//bin \;
make[1]: Leaving directory `/home/dwft78/project/cscore/cscore-1.0'
dh_install
cp: cannot stat `debian/tmp//opt/motorola-scanner/bin/': No such file or directory
dh_install: cp -a debian/tmp//opt/motorola-scanner/bin/ debian/cscore///opt/motorola-scanner/ returned exit code 1
make: *** [binary] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
на самом деле нет никакой папки созданного названного tmp внутри debian папка. debhelper отметил состояние выполнения команды debuild, которое это продолжило до dh_install уровень. выходные файлы, также созданные за исключением вышеупомянутого набора файлов.
Кошка $ cscore.debhelper.log
dh_auto_configure
dh_auto_build
dh_auto_test
dh_prep
dh_installdirs
dh_auto_install
Кто-то помогает продвинуться.Спасибо.
Поскольку в странице справочника для dh_install говорится, цель dh_install
и файлы, которые это читает, обычно используются для одной из двух целей:
Если у Вас есть система сборки, которая может уже создать и установить все файлы, необходимые для двоичного пакета в правильных каталогах, и Вы только создаете один двоичный пакет из своего источника, то Вам не нужен a debian/install
файл вообще.
Вы упомянули, что работаете с a Makefile
- основанный проект. Пока это поддерживает стандартные цели как make all
и make install
и отношения $DESTDIR
переменная для установки, нет никакой потребности в a debian/install
вообще.
На самом деле в выводе Вы отправили Вас, видят, что пара строк запускается с find
выполнение сразу прежде dh_install
. Я предполагаю, что это - Ваш проект make install
целевое выполнение, и это смотрит на меня как он, уже устанавливает файлы в корректном пути, а именно, debian/cscore/opt/motorola-scanner/bin
. Таким образом, я думаю, что Ваша сборка могла бы работать без a debian/install
.
Хорошо, я понимаю проблему.
Случаются
, dh_auto_install поместит пакеты под debian/<project-name>
, если будет только один пакет.
случай B
Однако это разместит их под debian/tmp
, если у Вас будет несколько пакетов (т.е. приблизительно blah.install
файлы и несколько объявлений пакета в control
файл.)
Посмотрите информацию здесь:
http://manpages.ubuntu.com/manpages/trusty/en/man1/dh_auto_install.1.html
Так или иначе, dh_install
только берет файлы, если они находятся под debian/tmp
, и перестал работать полностью, если у Вас был только один пакет. Так выполнение dh_install
, вероятно, не требуется..., но если Вы используете pdebuilder-dist
, оно выполняется по умолчанию.
Решением
Там является переопределение эти dh_install
, который создает проблему:
override_dh_install:
@echo "skip dh_install"