2017-08-28 28 views
5

我正在开发一个带有脱机SDK的Linux设备更新/升级服务。Linux“apt-get update”工作流程

这个想法是将更新/升级Linux服务复制到脱机设备中。 “离线”设备能够达到“互联网”,但只能通过使用SDK和其他设备(多跳)进行消息交换。设备来自不同的体系结构,因此具有“互联网”功能(网关)的设备必须能够请求和下载要升级到/来自不同体系结构的软件包。网关设备必须能够从更新中缓存下载的请求包(作为CDN),避免回购请求。

离线设备没有IP地址,它的通信方式是无关紧要的,因为离线SDK保证了多跳上网的可达性。

我需要什么 - 我需要有人为我提供一些关于Linux上更新/升级工作流的帮助或指导。

我发现迄今:

  • 更新

    • 更新命令加载的/etc/apt/sources.list
    • 不知道更新如何解决各行在/etc/apt/sources.list上,它似乎有一个函数,它载入与相应的回购文件夹相匹配的“deb”a“link”和“arguments”。
    • 之后,它开始下载每个已解析链接中的所有相应“包”文件。
  • 升级

    • 使得更新后的本地“包”文件和“包”的文件在回购之间的比较。

难道有任何更新源代码/升级可用? 我在apt回购上做了一些网络搜索,但是我找不到更新/升级功能。

+0

如何将您的支持互联网的设备设置为基于白名单的代理服务器或本地存储库镜像?你不需要编程任何东西,你可以得到一个坚如磐石的支持解决方案,而不是脆弱的自制黑客。 – spectras

+0

[this]怎么样(https://github.com/Debian/apt/blob/1d9e29c9e2a5591b42a99a721b901fc003ed9149/apt-pkg/upgrade.cc)和[this](https://github.com/Debian/apt/blob/ 1d9e29c9e2a5591b42a99a721b901fc003ed9149 /公寓-PKG/update.cc)? –

回答

0

@spectras关于网关的代理设置,它不符合我的目的。脱机设备向网关发出更新请求。我们可以假设网关没有互联网限制。我认为没有必要让网关成为镜像。我对更新/升级机制更感兴趣,将该过程复制到离线SDK中。

现在我的问题是脱机设备是ARM,网关是x64,当我从x64体系结构的arm中的sources.list请求更新时,更新二进制响应的错误是错误的architure。

因此,我需要知道如何让网关忽略architure并根据sources.list下载Packages更新,无论架构如何,我都会将其设置为加载。

@BenjaminW。当我发布这个问题时,我开始继续并下载apt源,并意识到apt-get加载二进制文件(如您提到的那些(更新和升级))。谢谢你的提示。然而,我现在试图更好地理解更新和升级机制的工作原理: - 我知道这个更新加载了/etc/apt/lists/sources.list - 我从离线设备传输sources.list(ARM )到网关设备(x64)并在网关上开始更新。 - 网关上的更新读取我从ARM放置的sources.list,当它开始解析时显示错误“跳过配置文件的获取...不支持体系结构...”

什么我试图做的是让网关忽略架构并强制执行A​​RM的source.list。我只需要Packages文件。

您有任何其他想法或替代方法吗?

+0

@spectras请检查我的答复。 –

+0

@BenjaminW。请检查我的回复。 –

+0

*旁注:你应该编辑你的问题,而不是创建一个答案。答案就是为了回答这个问题的具体目的。无论如何,正如我所说的,最好的方法就是让你的网关成为代理服务器。按照你喜欢的方式安装,例如['tinyproxy'](https://tinyproxy.github.io/),它占地面积小,非常适合这项工作。然后在你的其他设备上,你只需在你的'/ etc/apt/apt.conf'中添加'Acquire :: http :: Proxy'http:// yourproxyaddress:proxyport';'并且瞧。 – spectras