Як змусити пакунок Debian генерувати два пакети з архівом вихідного джерела?


14

Я упакую щось для мого PPA. Вихідне джерело - це .tar.gzархів, заснований на Makefile.

Оскільки цей пакет має значну кількість незалежних від архітектури даних, було б розумно, щоб сценарії збірки генерували два пакети:

  • пакет
  • пакет -дані

Як я можу це налаштувати? Я відредагував свій controlфайл Debian, щоб генерувати два пакети, але я не маю уявлення, як отримати потрібні файли до потрібного пакету.

Оскільки файли даних в даний час усі встановлені через Makefile, я тут неначе втрачений.

Відповіді:


14

Це місце, де я завжди знаходив відсутність документації. Я майже лише дізнався, як це працює, дивлячись, як це робиться в інших пакунках. Як і в більшості речей в упаковці Debian, існує кілька способів зробити це. Я вважаю найпростішим способом використання debian/package.installфайлів. Ось приклад пакету, над яким я працював, уява (відділення bzr) .

Спочатку нам потрібно створити пакет в debian/control. Зараз існує три строфи. Один для вихідного пакету та один для кожного двійкового пакету. Зверніть увагу, що пакет даних foo повинен бути 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 Upstream, щоб все це встановити в debian / tmp, а потім використовувати dh_install для копіювання каталогів та файлів звідти у відповідні каталоги збирання пакунків.

Що означає "каталоги належних пакетів", це те, що до кінця процесу збирання foo.debзнайдеться все, що буде в результаті src/debian/foo. Файли, які в кінцевому підсумку foo-data.deb, знайдуться в src/debian/foo-data. Оскільки debian/rulesпо суті є лише Makefile, ви можете почати уявляти собі інші способи отримання того ж результату.


Дуже дякую! Дуже чітке пояснення і працює чудово.
Натан Осман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.