Скомпилировать пакет Debian для amd64 на машине с i386?
У меня есть i386 ubuntu hardy machine и amd64 ubuntu hardy machine. Я хочу скомпилировать пакет debian (он же deb) для машины amd64 на i386 (потому что у меня недостаточно памяти для быстрой компиляции на машине amd64). Если я сделаю dpkg-buildpackage
на машине i386 он создает deb для i386, который не может быть установлен на машине amd64. Есть ли способ скомпилировать deb для amd64 на машине i386?
3 ответа
Итак, есть несколько решений для этого:
- Установите кросс-компиляцию инструментария и используйте обычные
dpkg-buildpackage
построить свой пакет. Проблема в том, что создание цепочки инструментов не очень просто. - Используйте 32-битный chroot на вашем 64-битном компьютере для компиляции. По-видимому, это самый рекомендуемый метод. В этом посте приведен пример компиляции ядра, но этот же процесс для любого другого программного обеспечения.
Это, вероятно, больше проблем, чем стоит попробовать начать кросс-компиляцию. Существуют различные способы эмуляции 64-битных систем на 32-битных, но вы заплатите цену за производительность.
Если вы только делаете это немного, то я бы сказал, что запустите 64-битную машину на Amazon за несколько часов. Если вы делаете это много, то, возможно, получите какое-то 64-битное оборудование, или, может быть, AWS останется интересным, потому что вы платите только за то, сколько вы его используете, и вы можете запустить ферму сборки, когда захотите.
Это может дать вам несколько полезных идей: http://blog.fwbuilder.org/2009/05/building-ubuntu-deb-packages-on-amazon.html
Этот список образов систем Debian для различных архитектур и выпусков также может быть полезен: https://wiki.debian.org/Cloud/AmazonEC2Image
Одна вещь, которую я все время делаю в Debian, - это использование 64-битного ядра с 32-битным пользовательским пространством для моей обычной системы, а затем создание chroot с 64-битным пользовательским языком для сборки пакетов amd64. Структура пакетов ядра в Ubuntu немного отличается, поэтому я не знаю, возможно ли это или рекомендуется там.
Помимо этого, чистое решение заключается в использовании виртуальной машины. QEMU - очевидный выбор, потому что он может эмулировать практически все на что угодно (и это бесплатно). Вы можете использовать qemubuilder (упакованный в Ubuntu) для интеграции сборки с pbuilder. По моему опыту, это может быть немного сложно настроить, но это может стоить того, если вам придется делать это повторно. Для нескольких пакетов просто запустите QEMU и войдите вручную.
Если вы очень любите приключения, вы также можете попробовать кросс-компиляцию, но это, вероятно, намного сложнее и не работает со всеми пакетами. Ищите dpkg-cross, чтобы начать.
Или как насчет того, чтобы создать личный архив пакетов (PPA) на Launchpad и сделать так, чтобы ваш пакет был автоматически скомпилирован там.