Можно ли кросс-компилировать файлы.deb с помощью debhelper? Как?
У меня есть пакет (драйверы Dymo CUPS в данном случае), который мне нужно скомпилировать в файл.deb для включения в репозитории частной сети. Сам исходный код достаточно независим от архитектуры, поэтому он будет компилироваться как в 32-разрядных, так и в 64-разрядных системах. я использую debhelper
собрать пакеты и успешно скомпилировать пакет для нативной архитектуры.
Большинство машин работают на Precise 64-битной, но некоторые работают на Precise 32-битной. Текущая сборочная машина является 64-битной. То, что я хочу сделать, это "кросс-компилировать" пакет и генерировать 32-битные пакеты из 64-битных пакетов.
Что я пробовал:
- Добавление флагов "-a" или "--architecture" к
fakeroot debian/rules binary
- терпит неудачу, потому что не понимает аргумент (я должен был скопировать его из dpkg или другой команды) - добавлять
override_dh_auto_configure
вdebian/rules
что поставляет-m32
для CFLAGS и т. д. - строится как 32-битная, но упаковывает и определяет зависимости как 64-битную - Установка
dpkg-cross
и работаетfakeroot debian/rules binary-cross
(основано на идее из этих инструкций по кросс-компиляции) - терпит неудачу, потому что бинарный кросс не существует как стандартdh
команда
Вещи, которые я не могу попробовать:
- Launchpad / PPA / любой другой внешний сервис сборки - все должно быть частью нашей инфраструктуры
Есть ли способ сделать debhelper
создавать 32-битные файлы.deb на 64-битной машине? И если да, то как?
1 ответ
debuild -ai386
должен все настроить правильно, но это зависит от наличия установленных многоархитектных зависимостей сборки; это проще с недавней версией sbuild
(боюсь, более поздний, чем точный), и это зависит от того, все ли библиотеки, которые вы используете, были преобразованы в многоархивную. Смотрите https://wiki.ubuntu.com/CrossBuilding для деталей.