问题描述
我正在Yocto Zeus(以前使用过的Yocto Thud)中构建自定义Linux映像。我已将所有必需的代码移至Python3,因此不再需要Python2。有没有一种方法可以从Image中完全删除python2及其模块
解决方法
从继承core-image-minimal
的映像开始,然后手动添加软件包。只有指定要明确安装在图像配方中的软件包以及在这些软件包的RDEPENDS
和RRECOMMENDS
中指定的软件包才会被安装在配方中。
一些软件包也由于配置文件(计算机,发行版或local.conf)而被拉出。
如果您不想使用RRECOMMENDS
,则可以在图像配方中使用BAD_RECOMMENDATIONS
,要求图像不要将其拉入。
如果您不想使用RDEPENDS
,则可能是因为您不需要的PACKAGECONFIG
而将其拉出,在这种情况下,请为该食谱创建bbappend并设置{{ 1}}。
如果仍然不能这样做,则您必须更深入地研究可以从PACKAGECONFIG
中删除的内容,以及出于什么原因(这是错误的吗?在其中{{ 1}}是不需要的吗?)。
知道哪个包在拉哪个包的方法是使用RDEPENDS
作为bitbake的参数。不要尝试从点文件创建方案/图形/图像,它们太大而不能正确处理点(花费数小时,结果无法使用)。 RDEPENDS
意味着-g
的{{1}}任务取决于"recipeA:do_foo" => "recipeB:do_bar"
的{{1}}。
do_foo
应该
还可以更轻松地确定哪种食谱需要一种您不需要的食谱。
您可以使用以下两个选项之一
-
PACKAGE_EXCLUDE :指定不应安装到映像中的软件包。
PACKAGE_EXCLUDE_pn-target_image = " python"
如果您选择不使用此变量安装软件包,而其他软件包依赖于此软件包(即在配方的RDEPENDS变量中列出),则OpenEmbedded构建系统会生成一个 致命的安装错误。因为构建系统停止了该过程 如果出现致命错误,则可以将变量与迭代一起使用 开发过程以从系统中删除特定组件。
仅当使用IPK和RPM时才支持此变量 包装后端。不支持DEB。 PACKAGE_EXCLUDE definition in Yocto Mega Manual
-
PNBLACKLIST :
PNBLACKLIST[python] = "Python2 Not supported by this distro."
列出您不希望OpenEmbedded构建系统构建的配方。 此变量与黑名单类一起使用,即 全局继承。
要防止构建配方,请使用以下命令中的PNBLACKLIST变量 您的local.conf文件。 PNBLACKLIST definition in Yocto Mega Manual