Кроссплатформенное тестирование пакетов Debian

Я пытаюсь протестировать пакеты Debian, созданные в системе x86 Linux, но которые будут выполняться на архитектуре ARM. Мои сценарии {pre,post}{inst,rm} завершаются с ошибкой формата exec, поскольку /bin/bash в среде chroot, представляющей собой образ файловой системы флэш-памяти, является двоичным файлом ARM, а не двоичным файлом x86. .

То, что я ищу, но не могу найти, это опция dpkg, похожая на --root, но не использующая chroot. Предположительно, мне нужно знать имя некоторой переменной среды (?), Которая содержит имя параметра для --root.


person Julie in Austin    schedule 05.05.2015    source источник


Ответы (2)


Вероятно, проще сделать /bin/bash (и все остальное) в исполняемом файле chroot.

Установите qemu-user-static на хост. Это даст вам эмуляторы пользовательского пространства QEMU для всех архитектур в статических версиях — так что никаких сложностей с динамическими библиотеками в chroot. Он также настраивает поддержку binfmt для выполнения двоичных файлов ARM с помощью /usr/bin/qemu-arm-static.

Скопируйте /usr/bin/qemu-arm-static в /usr/bin chroot. Теперь у вас должна быть возможность запускать программы в обычном режиме. Таким образом, ваши пакеты Debian могут быть протестированы в их (эмулируемой) родной среде.

person Andreas Bombe    schedule 11.05.2015
comment
Я посмотрю на это. В моем скрипте postinst есть ошибка, поэтому мне все равно придется пересобирать пакет. Ищите ^ и v/, если все получится. - person Julie in Austin; 12.05.2015

В качестве альтернативы хорошему предложению использовать qemu, начиная с dpkg 1.18.5, вы можете использовать --instdir в сочетании с --force-script-chrootless. В зависимости от сценариев сопровождающего вам может потребоваться адаптировать их для использования переменной среды DPKG_ROOT. Дополнительную информацию можно найти на справочной странице dpkg.

person Guillem Jover    schedule 21.09.2016