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