Сборка пакета Debian без файла.orig
Ранее я создавал пакеты, используя Makefile, команду "dh_make --createorig", затем настраивая файлы в сгенерированной папке debian и, наконец, используя команду debuild для генерации.deb. Этот рабочий процесс прост и работает для меня, но мне сказали немного его настроить таким образом, чтобы вы могли собрать проект из исходников, не требуя файлов orig, и я не уверен, как это сделать, но в соответствии с этим ( https://askubuntu.com/questions/17508/how-to-have-debian-packaging-generate-two-packages-given-an-upstream-source-arch) и эта структура ( http://bazaar.launchpad.net/~andrewsomething/imagination/debian/files) должен быть способ. В моем случае у меня была бы папка с исходниками и всем этим, а затем папка debian (сгенерированная с помощью dh_make), но я не уверен, как избежать, чтобы команда debuild запрашивала файлы.orig или мне нужно было использовать какая-то другая команда для этого.
Извините за сверхдлинный вопрос, я думаю, что предоставил всю необходимую информацию, но я могу уточнить, если что-то нечетко.
3 ответа
Если вы хотите создать каталог Debian непосредственно в пакете с исходным кодом (т. Е. Вы упаковываете свою собственную работу, а не из исходной версии), вы можете использовать --native
возможность dh_make
Разница в номере версии в файле debian/changelog
,
Если вы используете 1.2.3-1
это подразумевает сборку Debian 1 из вышестоящего пакета 1.2.3 --- для которого программы сборки (dpkg-buildpackage
и в зависимости от того, какие обертки сверху) --- предположим, .orig.tar.gz
существует.
Но если вы используете 1.2.3
он будет считать пакет 'родным Debian', а архив .tar.gz
и не .orig.tar.gz
,
Теперь выбор не должен зависеть от вашего удобства. Если у этого есть исходящий источник, используйте первую схему. Если нет, второй может быть в порядке. В пакетах, которые я поддерживаю, у меня есть оба, но гораздо больше первого.
Я думаю, что вопрос был задан по-другому, было довольно ясно, что проект был вверх по течению, и это, вероятно, не очень хорошая причина, чтобы изменить его формат на native
,
В настоящее время я упаковываю какой-то апстрим-проект на Python, и мне в голову пришел тот же самый вопрос. Почему нет никакого хука dh_* для перезаписи, чтобы сгенерировать этот исходный архив на лету, чтобы вас не беспокоили:
This package has a Debian revision number but there does not seem to be
an appropriate original tar file or .orig directory in the parent directory;
Для начала я добавил в проект make-файл:
# Makefile
VERSION:=$(shell dpkg-parsechangelog -S Version | sed -rne 's,([^-\+]+)+(\+dfsg)*.*,\1,p'i)
UPSTREAM_PACKAGE:=click_${VERSION}.orig.tar.gz
dpkg:
tar cafv ../${UPSTREAM_PACKAGE} . --exclude debian --exclude .git
debuild -uc -us
clean:
rm -f ../${UPSTREAM_PACKAGE}
debuild clean
так просто make clean dpkg
было все, что нужно для сборки пакета. Теперь я думаю, что остается вопрос, если у кого-то есть блестящая идея, как вставить tar
операция в пределах debian/rules
так что я мог бы просто вызвать debuild -uc -us, и он волшебным образом создает orig
Тарбол я был бы крут:)