Я что-то упаковываю для своего PPA. Исходным источником является .tar.gz
архив, основанный на Makefile.
Поскольку этот пакет содержит значительный объем архитектурно-независимых данных, было бы целесообразно, чтобы сценарии сборки генерировали два пакета:
Как это настроить? Я отредактировал свой файл Debian control
, чтобы сгенерировать два пакета, но я не знаю, как получить нужные файлы в нужный пакет.
Так как файлы данных в настоящее время все устанавливаются через Makefile, я как бы потерялся здесь.
Это место, где мне всегда не хватало документации. Я почти узнал, как это работает, посмотрев, как это делается в других пакетах. Как и в большинстве случаев в упаковке Debian, есть несколько способов сделать это. Я считаю, что самый простой способ - это использовать debian/package.install
файлы. Вот пример пакета, над которым я работал, воображение (ветвь bzr) .
Сначала нам нужно создать пакет в debian/control
. Сейчас есть три строфы. Один для исходного пакета и один для каждого двоичного пакета. Обратите внимание, что пакет foo-data должен быть Architecture: all
. Также обратите внимание, что воображение зависит от imagination-common (= ${source:Version})
.
Далее мы создаем файл debian/imagination.install
. Он содержит конкретные файлы или пути, которые мы хотим получить в пакете воображения. Для этого пакета нам нужны все файлы, зависящие от архитектуры. Файл рабочего стола включен, как и нужно сказать с двоичным файлом, который он вызывает в своей строке Exec:
.
usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop
Нам нужно создать файл debian/imagination-common.install
. Он будет содержать все файлы, независимые от архитектуры, изображения, переводы, документы и тому подобное.
/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/
man dh_install
описывает, что на самом деле здесь происходит:
может быть, у вас есть большой пакет, который собирает несколько двоичных пакетов. Вы можете использовать исходный Makefile, чтобы установить все это в debian / tmp, а затем использовать dh_install для копирования каталогов и файлов оттуда в соответствующие каталоги сборки пакетов.
blockquote>Под «правильными каталогами сборки пакетов» подразумевается, что к концу процесса сборки все, что будет в полученном
foo.deb
, будет найдено вsrc/debian/foo
. Файлы, которые окажутся вfoo-data.deb
, будут найдены вsrc/debian/foo-data
. Посколькуdebian/rules
по сути является просто Makefile, вы можете начать представлять другие способы получения того же результата.