Это место, где мне всегда не хватало документации. Я почти узнал, как это работает, глядя на то, как это делается в других пакетах. Как и в большинстве случаев в упаковке 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 для копирования каталогов и файлов оттуда в соответствующие каталоги сборки пакетов.
Под «правильными каталогами сборки пакетов» подразумевается, что к концу процесса сборки все, что будет в результате, foo.deb
будет найдено в src/debian/foo
. Файлы, которые в конечном итоге foo-data.deb
будут найдены в src/debian/foo-data
. По debian/rules
сути, это просто Makefile, вы можете представить себе другие способы получить тот же результат.