我正在从事一个相对较大的项目,其中可能包括+1000物联网设备,在这种情况下,可能是一个Raspberry Pi。到目前为止,我只试验了20-30个设备,但概念应该是一样的。
目前,很多关于设备上的自动软件更新/部署的想法,当它在现场时(没有访问它,但有互联网连接)。
simple-git )。pm2 )。“模块”(设备将下载并运行)很可能是其他的NodeJS脚本、简单的bash脚本或者仅仅是终端命令(一次运行)。
如果已经安装的模块更新了怎么办?我试图排除这一点,因为我认为这又使事情复杂化了。如果服务器说有一个新的部署,设备基本上再次下载它(它不需要知道它已经在那里),然后删除所有其他不需要的模块。这也给了我一种安全网,如果一个错误的版本的模块被推送。只需使用固定版本创建一个新部署即可。
如果设备上的基本软件(处理部署安装)需要更新怎么办?不应该需要更新。目前,这个概念是不可能的。
我在这里的问题是:我是疯了还是疯了,只想着在生产环境中考虑这个问题?我是不是走在一条不太难看的赛道上?我总是有这个关键字(“码头”)浮动在我的头上,但我认为这将是太OP的情况下,将过于复杂的事情。另外,除了防弹错误之外,你能想到一些可能会导致这条道路上的麻烦的事情吗?
发布于 2021-06-24 18:16:12
通过重新发明轮子,你使事情变得比需要的更复杂。
一个Rhaspberry Pi配备了一个非常有能力的包管理器(apt),它也可以进行自动(无人值守)更新。
您需要做的是为Debian包创建一个存储库(本质上是一组具有特定结构的HTTP可访问的文件和文件夹),并在那里托管您的版本。
然后,剩下的唯一障碍是将apt配置为使用包存储库,编写一个小脚本,定期要求apt检查更新并安装它们,并将包最初安装在每个设备上。这些都是在调试新设备时需要执行一次的操作。
发布于 2023-01-20 14:19:28
我不同意Bart van Ingen Schenau的观点。我不认为你在重新发明方向盘。
你考虑过乌尔蒂博吗?
这是一种完全不同的Raspberry Pis编程方法,您正在编写自己的内核--您自己的系统+应用层(拜,拜Linux)。取决于您的IoT设备将做什么,您的整个映像可能只有1MB。拥有一切。
开始阅读这里,永远不要回到现实世界。这就是我爱上Ultibo的地方,我深深的爱着它,我已经把所有的Linux,Python,apt等东西都从我的脑海中删除了。
您还可以在这里找到更多详细信息:覆盆子Pi与Ultibo的研制。
至于你的问题,一个自动内核/代码更新,Ultibo有很多选择给你。互联网(HTTP,FTP,SSH,Telnet),直接串行电缆连接到名称在开始。
现在的问题是,如果您的项目允许考虑使用您自己的内核进行开发,而忘记了所有与Linux相关的内容。这种方法有利有弊。
https://softwareengineering.stackexchange.com/questions/429676
复制相似问题