使用服务器离线Yocto工程所有软件包

/ 0评 / 0

鉴于国内网络环境烂到没话可说,Yocto又很多资源在墙外,只能想办法.
首先用下面命令把所有软件包dump出来.

bitbake -s | tee packages.log

使用vim把最开始几行的状态信息什么删掉,再把最后几行的垃圾信息删掉,然后用awk提取下第一列,得到所有软件包.

awk '{print $1}' packages.log > packages_clean.log

用vim替换,给每一行开头结尾加参数.

vim packages_clean.log
:% s/^/bitbake /g
:% s/$/ -c fetchall /g

如果要包含商业软件包,需要增加配置(一般来说大概有十分之一的包是商业软件包):

LICENSE_FLAGS_WHITELIST="commercial"

如果存在必要的话,还可以增加一些不是默认meta内的数据.

BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-efl"
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-gpe"
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-initramfs"
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-perl"
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-ruby"
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-systemd"
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-webserver"
BBLAYERS += " ${BSPDIR}/sources/meta-openembedded/meta-xfce"

建议使用像Cloudcone之类时长计费,流量基本无限的VPS,搞个双核大硬盘实例最佳,再好点的也没什么帮助.然后运行bash批量获取所有,然后去睡觉,毕竟总量至少是2500+个软件包的.

bash packages_clean.log

就算有失败也不用担心,实际上已经全部抓取OK的,其他都是virtual包关联没做对(因为我们是针对每个文件进行拉取,肯定有这毛病.)

上图是我最近那个IMX6Quad移植计划中的,所有打包软件包,体积.够大吧.

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注