我有一个安装了一些NPM软件包的食谱,该软件包可在Yocto的较早版本上使用。
升级到相扑后,配方失败,并显示以下错误: installnpmpackages / 0.0.1-r0 / temp / run.do_compile.7272:npm:未找到 |警告:从Shell命令退出代码127。
我尝试使用开发人员外壳,在这种情况下NPM确实可以工作。
配方中的do_compile:
do_compile() {
# Create a working directory
mkdir -p ${WORKDIR}/scratch
# changing the home directory to the working directory, the .npmrc will be created in this directory
export HOME=${WORKDIR}/scratch
# configure cache to be in working directory
npm set cache ${WORKDIR}/scratch/npm_cache
# clear local cache prior to each compile
npm cache clear
# compile and install node modules in source directory
cd ${WORKDIR}/scratch
npm --arch=${TARGET_ARCH} --verbose install node-gyp
npm --arch=${TARGET_ARCH} --verbose install connect
npm --arch=${TARGET_ARCH} --verbose install socket.io
#npm --arch=${TARGET_ARCH} --verbose install sqlite3
#npm --arch=${TARGET_ARCH} --verbose install serialport
npm --arch=${TARGET_ARCH} --verbose install express
npm --arch=${TARGET_ARCH} --verbose install csv
npm --arch=${TARGET_ARCH} --verbose install md5
# clear local cache before we package. No need to copy over all this cache stuff; just need the modules.
npm cache clear
}
注意sqlite3和serialport已被注释掉,因为它们在以前的版本中不起作用。
为了使NPM在配方中起作用,需要使用相扑(与morty)进行哪些更改?
提前谢谢!
答案 0 :(得分:2)
我找到了一个简单的解决方案。
我使用devtool add创建了单个配方。
以下是用于为串行端口npm模块创建配方的命令:
devtool add "npm://registry.npmjs.org;name=serialport;version=7.1.4"
答案 1 :(得分:0)
我正在回复@Hsn评论,因为我的帐户是新帐户,并且我没有50个信誉。
如果您能够使用devtool添加配方并且可以正常工作,则也可以使用devtool完成该配方的工作,并告诉devtool您要将配方放在哪个meta中,例如:
devtool finish recipe_name meta-destination
并且为了将其放入最终的操作系统rootfs中,您需要将其添加到图像bb文件中,例如:image-dev.bb:
IMAGE_INSTALL_append += "recipe_name"
还要确保bblayers.conf中包含保存食谱的元数据。