我正在寻找一些关于如何在使用Yocto管理发行版时正确处理版本控制的建议。
我有几个嵌入式系统正在生产中,必须依靠第三方来应用更新。更新包括通过opkg安装的一个或多个.ipk
个包。我无法控制第三方何时应用我发送的更新。这引入了我试图找到解决方案的问题。系统可能处于各种不同的状态,因为应用了一些更新而其他更新未应用。是否有一个通用的解决方案来告诉系统处于什么状态?
我不清楚的一个问题是如何确保嵌入式系统在应用进一步更新之前应用了某些更新。 Ubuntu或Redhat等发行版如何处理这个问题?或者他们呢?
答案 0 :(得分:2)
Ubuntu和RedHat有一个远程存储库。系统具有已安装软件包的内部列表。更新存储库时,您将获得一个新的包列表。然后,您可以将此已安装软件包列表与新软件包列表进行比较并进行安装。这基本上是用apt-get update && apt-get upgrade
和yum等价物完成的。
Yocto实际上支持rpm和deb包格式及其远程存储库。我不熟悉opkg,如果他们可以选择远程存储库。
当我实施系统时,我将其缩小为以下选项:
版本包具有很大的缺点,因为您必须在要安装的软件包上获得自己的逻辑。但是你可以要求version-1.deb需要software-v2.deb和tool-v1_5.deb。这适用于您自己的软件,但对整个Yocto包堆栈来说是一个很大的手动开销。
存储库是常用的方式,例如:apt-get update && apt-get -y upgrade
。工作得很好,很容易,但也没有通往新Yocto版本的无风险路径。
图像方式更复杂,取决于您使用的硬件,图像大小和图像传输。如果你有一个巨大的图像和一个缓慢的网络,你可能不想这样做。基本上你推新形象(或根据版本自动拉它)然后将它推到设备上。设备将其发送到辅助分区,然后翻转引导加载以使用其他分区。根据引导加载程序和/或硬件,您可以自动翻转,以防您引导的分区损坏。对远程系统很有帮助。优点是:您还可以轻松升级整个操作系统,无需手动选择版本。你可以进行(自动)故障转移。