Как сделать так, чтобы упаковка Debian генерировала два пакета с исходным исходным архивом?

Я что-то упаковываю для своего PPA. Исходным источником является .tar.gz архив, основанный на Makefile.

Поскольку этот пакет содержит значительный объем архитектурно-независимых данных, было бы целесообразно, чтобы сценарии сборки генерировали два пакета:

  • package
  • [ 113] package -data

Как это настроить? Я отредактировал свой файл Debian control, чтобы сгенерировать два пакета, но я не знаю, как получить нужные файлы в нужный пакет.

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

14
задан 15 December 2010 в 06:35

1 ответ

Это место, где мне всегда не хватало документации. Я почти узнал, как это работает, посмотрев, как это делается в других пакетах. Как и в большинстве случаев в упаковке 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, вы можете начать представлять другие способы получения того же результата.

0
ответ дан 15 December 2010 в 06:35

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

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