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



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

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

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

    PACKAGE_EXCLUDE_pn-target_image = " python"
    

如果您选择不使用此变量安装程序包,并且其他程序包依赖于此变量(即列在配方的RDEPENDS变量中(,则OpenEmbedded构建系统会生成致命的安装错误。因为构建系统会中止进程对于致命错误,可以将变量与迭代从系统中删除特定组件的开发过程。

只有在使用IPK和RPM时才支持此变量打包后端。不支持DEB。Yocto Mega Manual 中的PACKAGE_EXCLUDE定义

  1. PNBLACKLIST

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

列出您不希望OpenEmbedded构建系统构建的配方。此变量与黑名单类协同工作,黑名单类是全球继承。

要防止生成配方,请在中使用PNBLACKLIST变量您的local.conf文件。Yocto Mega Manual 中的PNBLACKLIST定义

从继承core-image-minimal的映像开始,手动添加包。只有指定在映像配方中显式安装的程序包以及这些程序包的RDEPENDSRRECOMMENDS中指定的程序包才会安装在配方中。

一些包也因为配置文件(machine、distro或local.conf(而被撤回

如果有你不想要的RRECOMMENDS,你可以在你的图像配方中使用BAD_RECOMMENDATIONS来要求图像不要把它们拉进来。

如果它是你不想要的RDEPENDS,可能是因为选择了一个你不需要的PACKAGECONFIG,所以它被拉了出来,在这种情况下,为该配方创建一个bbappend,并相应地设置PACKAGECONFIG

如果仍然不能做到这一点,您将不得不深入研究可以从RDEPENDS中删除哪些内容,以及出于何种原因(这是错误吗?在不需要RDEPENDS的特定配置中安全吗?(。

知道哪个包正在拉哪个包的方法是使用-g作为bitbake的参数。不要试图从点文件创建方案/图形/图像,它们太大,点无法正确处理(需要数小时,结果无法使用(。"recipeA:do_foo" => "recipeB:do_bar"表示recipeAdo_foo任务依赖于recipeBdo_bar

其中一个配置文件(local.conf或distro.conf(中的PACKAGE_EXCLUDE应该还可以更容易地确定哪种配方需要你不想要的配方。

最新更新