Выполнение сценария opkg после установки после установки образа - PullRequest
1 голос
/ 08 июля 2019

Мы создаем образ файловой системы в BitBake, и один из пакетов требует, чтобы его сценарий после установки выполнялся на устройстве после того, как сам образ был установлен на устройстве, а не во время создания образа rootfsbuild server.

Глядя на пакет с "opkg status", он говорит, что пакет был успешно установлен - "install ok install".Однако, ни один из побочных эффектов не был выполнен, и простой запуск файла .postinst из /var/lib/opkg/info/.postinst не работает и не сообщает об ошибках.

Как мне заставить это работать?Похоже, что пакет «устанавливается» в образе rootfs с неверным статусом.

1 Ответ

1 голос
/ 08 июля 2019

См. Раздел руководства разработчика. Скрипты после установки : С недавним Yocto (> = 2.7) вы можете использовать pkg_postinst_ontarget_${PN}(), когда вы знаете, что ваш скрипт всегда должен выполняться на цели при первой загрузке, а не во время поколение rootfs.

В более старой версии Yocto вы можете просто делать то, что pkg_postinst_ontarget _ $ {PN} делает вручную в вашей функции pkg_postinst_${PN}():

if [ -n "$D" ]; then
    echo "Delaying until first boot"
    exit 1
fi

# actual post install script here

$ D будет определено во время генерации rootfs, поэтому скрипт postinstall завершится с ошибкой. Это означает, что скрипт будет запущен снова во время первой загрузки на целевом устройстве.

Лучшим вариантом по-прежнему является исправление сценария postinstall, чтобы он работал во время генерации rootfs - иногда это, конечно, невозможно.

...