【发布时间】:2018-09-19 00:41:43
【问题描述】:
假设我有一些由我的自定义包安装的文件,但这些文件将覆盖由另一个包安装的一些文件,但不是全部。
我认为直观的方法是
- 让我的包“依赖”另一个包,以便它首先安装
- 我的安装首先覆盖了那里的文件。
不幸的是,Bitbake 喜欢为这种方法抛出许多错误。
有没有我可以设置的“IDGAF 把它们放在那里”变量?
【问题讨论】:
假设我有一些由我的自定义包安装的文件,但这些文件将覆盖由另一个包安装的一些文件,但不是全部。
我认为直观的方法是
不幸的是,Bitbake 喜欢为这种方法抛出许多错误。
有没有我可以设置的“IDGAF 把它们放在那里”变量?
【问题讨论】:
我不这么认为。我经常想要同样的东西,但从未找到解决方案。我的答案如下。
通常为此,我将安装我想要覆盖的文件的配方分叉到我自己的层中,并修改该配方以直接在文件系统中安装我需要的东西。对于诸如 systemd、udev 或其他系统应用程序之类的东西,这变得很复杂。在这些情况下,如果您觉得需要覆盖系统文件,那么可能是时候重新考虑设计了。充其量,随着时间和版本的推移很难维护。但是,对于 protobuf、看门狗等更简单的想法,这是一种完全可以接受的机制来定义您的特定需求。
另一个选项是定义一些在映像安装期间要完成的功能,以继续并就地修改文件。我为我们的 ssh 配置执行此操作,作为实际创建映像文件本身之前的一个步骤。我在我的图像配方中创建特定的 python 函数并从图像创建中调用它们。我这样做是使用
ROOTFS_POSTPROCESS_COMMAND += "my_python_function"
老实说,你应该把这种想法作为最后的手段。根据需要简单地使用不同的文件可能更容易。
【讨论】: