在Yocto中完全删除Python2和相关组件

问题描述

我正在Yocto Zeus(以前使用过的Yocto Thud)中构建自定义Linux映像。我已将所有必需的代码移至Python3,因此不再需要Python2。有没有一种方法可以从Image中完全删除python2及其模块

解决方法

从继承core-image-minimal的映像开始,然后手动添加软件包。只有指定要明确安装在图像配方中的软件包以及在这些软件包的RDEPENDSRRECOMMENDS中指定的软件包才会被安装在配方中。

一些软件包也由于配置文件(计算机,发行版或local.conf)而被拉出。

如果您不想使用RRECOMMENDS,则可以在图像配方中使用BAD_RECOMMENDATIONS,要求图像不要将其拉入。

如果您不想使用RDEPENDS,则可能是因为您不需要的PACKAGECONFIG而将其拉出,在这种情况下,请为该食谱创建bbappend并设置{{ 1}}。

如果仍然不能这样做,则您必须更深入地研究可以从PACKAGECONFIG中删除的内容,以及出于什么原因(这是错误的吗?在其中{{ 1}}是不需要的吗?)。

知道哪个包在拉哪个包的方法是使用RDEPENDS作为bitbake的参数。不要尝试从点文件创建方案/图形/图像,它们太大而不能正确处理点(花费数小时,结果无法使用)。 RDEPENDS意味着-g的{​​{1}}任务取决于"recipeA:do_foo" => "recipeB:do_bar"的{​​{1}}。

其中一个配置文件(local.conf或distro.conf)中的

do_foo应该 还可以更轻松地确定哪种食谱需要一种您不需要的食谱。

,

您可以使用以下两个选项之一

  1. PACKAGE_EXCLUDE :指定不应安装到映像中的软件包。

    PACKAGE_EXCLUDE_pn-target_image = " python"
    

如果您选择不使用此变量安装软件包,而其他软件包依赖于此软件包(即在配方的RDEPENDS变量中列出),则OpenEmbedded构建系统会生成一个 致命的安装错误。因为构建系统停止了该过程 如果出现致命错误,则可以将变量与迭代一起使用 开发过程以从系统中删除特定组件。

仅当使用IPK和RPM时才支持此变量 包装后端。不支持DEB。 PACKAGE_EXCLUDE definition in Yocto Mega Manual

  1. PNBLACKLIST

    PNBLACKLIST[python] = "Python2 Not supported by this distro."
    

列出您不希望OpenEmbedded构建系统构建的配方。 此变量与黑名单类一起使用,即 全局继承。

要防止构建配方,请使用以下命令中的PNBLACKLIST变量 您的local.conf文件。 PNBLACKLIST definition in Yocto Mega Manual

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...