2014-01-10 3 views
2

Я пытаюсь создать пакеты для некоторого кода контроллера робота, который будет поддерживать разные архитектуры, такие как i386 и armhf (для Raspberry Pi). Я не знаю, как Debian намеревается это сделать. Есть ли способ создать единый пакет .deb, содержащий оба двоичных файла? Или я должен создать отдельный .deb-пакет для каждой архитектуры, который я знаю, как это сделать?Как создать бинарный пакет (ы) Debian для нескольких архитектур?

В последнем случае, если я дам двум пакетам одно и то же имя пакета, я не могу поместить их в один и тот же репозиторий, но если они имеют разные имена, пользователям придется указать, какой пакет они хотят установить используя apt-get. Есть ли решение этой проблемы?

ответ

1

У вас должны быть разные бинарные пакеты для разных архитектур, если только то, что вы упаковываете, не интерпретируется и не компилируется.

Если пакет, который вы делаете, совместим со всеми архитектурами, то поле Architecture: вашего файла debian/control должно быть any. Это говорит вам, что пакет может быть встроен в любую поддерживаемую Debian архитектуру. Затем вы просто скомпилируете его и перекрестно скомпилируете его в i386 и armhf.

О вашем втором вопросе вы можете. Фактически, так это делается в официальных репозиториях Debian. Бинарные пакеты имеют суффикс в имени файла, содержащем архитектуру. См. Это example. Когда пользователи устанавливают ваш пакет, им не нужно указывать архитектуру, поскольку она автоматически определяется.

+1

Это сработало. Обратите внимание на следующий шаг: чтобы успешно создать индексный файл Packages.gz для репозитория, необходимо было использовать параметр -m для пакетов dpkg-scanpackages. В противном случае он перечисляет только один из пакетов. – user2469832

Смежные вопросы