Ошибка сборки Yocto: создание образа с помощью управления пакетами Debian - PullRequest
0 голосов
/ 13 января 2020

Я собираю образы с управлением пакетами RPM по умолчанию, но теперь, когда я хочу создать образ с управлением пакетами Debian вместо RPM, Yocto возвращает ошибку на последних шагах шага image do_rootfs.

Ошибка;

update-alternatives: Error: not linking /home/yoctouser/build/tmp/work/myimage/1.0-r0/rootfs/usr/bin/dpkg-deb to /bin/busybox.nosuid since /home/yoctouser/build/tmp/work/jetson_nano-poky-linux/myimage/1.0-r0/rootfs/usr/bin/dpkg-deb exists and is not a link

ERROR: myimage-1.0-r0 do_rootfs: Postinstall scriptlets of ['busybox'] have failed. If the intention is to defer them to first boot,
then please place them into pkg_postinst_ontarget_${PN} ().
Deferring to first boot via 'exit 1' is no longer supported.
Details of the failure are in /home/yoctouser/build/tmp/work/jetson_nano-poky-linux/myimage/1.0-r0/temp/log.do_rootfs.
ERROR: myimage-1.0-r0 do_rootfs: 
ERROR: myimage-1.0-r0 do_rootfs: Function failed: do_rootfs
ERROR: Logfile of failure stored in: /home/yoctouser/build/tmp/work/jetson_nano-poky-linux/myimage/1.0-r0/temp/log.do_rootfs.9391
ERROR: Task (/home/yoctouser/layers/meta-mylayer/images/myimage.bb:do_rootfs) failed with exit code '1'

Кажется, есть проблема при объединении управления пакетами Debian и busybox.

image.bb:

DESCRIPTION = "Test image."

inherit core-image

inherit distro_features_check

IMAGE_FEATURES += "package-management"

IMAGE_LINGUAS ?= " "

IMAGE_INSTALL += " \
    ifupdown \
    dropbear \
"

export IMAGE_BASENAME = "myimage"

Построение image-core-minimal без ошибок. Удаление папки tmp не имеет изменений.

---------- РЕДАКТИРОВАТЬ: ----------- Подробнее об используемых слоях:

bblayers.bb:

  /home/yoctouser/layers/poky-zeus/meta \
  /home/yoctouser/layers/poky-zeus/meta-poky \
  /home/yoctouser/layers/poky-zeus/meta-yocto-bsp \
  /home/yoctouser/layers/meta-tegra \
  /home/yoctouser/layers/meta-linaro/meta-linaro-toolchain \
  /home/yoctouser/layers/meta-openembedded/meta-virtualization \
  /home/yoctouser/layers/meta-openembedded/meta-oe \
  /home/yoctouser/layers/meta-openembedded/meta-filesystems \
  /home/yoctouser/layers/meta-openembedded/meta-selinux \
  /home/yoctouser/layers/meta-openembedded/meta-security \
  /home/yoctouser/layers/meta-openembedded/meta-python \
  /home/yoctouser/layers/meta-openembedded/meta-iot-cloud \
  /home/yoctouser/layers/meta-openembedded/meta-perl \
  /home/yoctouser/layers/meta-openembedded/meta-multimedia \
  /home/yoctouser/layers/meta-openembedded/meta-networking \

Использование ветви Zeus для всех слоев и основной ветви для meta-linaro, поскольку на момент написания этой статьи еще не было ветви zeus. Основная ветвь для meta-linaro устанавливает совместимость с веткой yocto / poky zeus в layer.conf, и с этим до сих пор не было проблем.

1 Ответ

0 голосов
/ 13 января 2020

Я выяснил, что один из слоев, который я использовал, meta-linaro, имеет от .bbappend до busybox, который настраивает dpkg-deb для связи с busybox. Я создал патч для слоя meta-linaro, который удаляет эту конфигурацию и вуаля, сборка успешно завершена.

...