У меня есть собственный рецепт изображения Yocto, который использует IMAGE_INSTALL += "... "
для создания изображения, которое также содержит Python 3.5. К сожалению, часто используемая символическая ссылка /usr/bin/pdb
не создается, и мои пользователи ожидают, что смогут запускать pdb
из командной строки. Поэтому я хочу сделать для этого одну символическую ссылку внутри изображения. Если бы он был запущен на цели, это был бы результат этой команды:
ln -s /usr/lib/python3.5/pdb.py /usr/bin/pdb
Я понимаю, что могу создать пользовательскую задачу в рецепте изображения с такой конструкцией:
addtask create_pdb_symlink before do_image
do_create_pdb_symlink () {
ln -s /usr/lib/python3.5/pdb.py ${D}/usr/bin/pdb
}
Однако это не работает, потому что я предполагаю использование ${D}
и не думаю, что в этот момент файловая система подготовлена. Он генерирует эту ошибку:
DEBUG: Executing shell function do_create_pdb_symlink
ln: failed to create symbolic link
'/home/user/project/build/tmp/work/custom-linux/my-image/1.0-r0/image/usr/bin/pdb': No such file or directory
WARNING: exit code 1 from a shell command.
Проверка файловой системы подтверждает, что /home/user/project/build/tmp/work/custom-linux/
существует, а /home/user/project/build/tmp/work/custom-linux/my-image
— нет.
В этом каталоге custom-linux
есть несколько каталогов, один из которых называется rootfs
и выглядит подозрительно полезным, но я не уверен, что моя задача должна копаться в каталоге my-image
.
Итак, мои вопросы:
- это правильный подход?
- или я должен создать новый рецепт только для создания этой единственной символической ссылки?
- или я должен создать
python3-core.bbappend
для выполнения этой задачи? - или есть причина, по которой это не создается самим рецептом python?