软件包更新方法、装置与计算设备制造方法及图纸

技术编号:33499700 阅读:48 留言:0更新日期:2022-05-19 01:10
本发明专利技术公开了一种软件包更新方法、装置与计算设备。上述软件包更新方法,适用于服务端,上述方法包括步骤:响应于检测到软件包在原始仓库更新完成,生成目标仓库索引文件,目标仓库索引文件记录的内容与原始仓库中原始仓库索引文件记录的内容相同;将软件包从原始仓库中的原始路径复制到目标仓库中的目标路径;以及将目标仓库索引文件中软件包的原始路径修改为目标路径,得到更新后的目标仓库索引文件,完成软件包的更新。完成软件包的更新。完成软件包的更新。

【技术实现步骤摘要】
软件包更新方法、装置与计算设备


[0001]本专利技术涉及软件仓库更新
,尤其是一种软件包更新方法、装置与计算设备。

技术介绍

[0002]随着Linux桌面生态的越发完善,用户对软件的需求和要求也逐渐提高,导致软件的更新频率提高,而这也是对存储检索软件的软件仓库的考验。
[0003]Debian仓库是常见的适用于Linux系统的软件仓库,使用reprepro工具进行管理。服务端debian仓库中,每个软件的每个版本均包括包括仓库信息release、仓库索引文件packages以及软件包deb三个部分。其中, release记录了适用于不同处理器架构的packages的存储地址,而packages则记录了各个deb的存储地址。以图1所示的debian仓库中的某一软件的某一版本为例,release记录了amd64架构的packages的存储地址和i386架构的packages的存储地址,amd64架构的packages记录了amd64架构的deb的存储地址,i386架构的packages记录了i386架构的deb的存储地址。
[0004]如图2所示,服务端导入某个软件v1版本的deb(即deb_v1),然后在release中记录packages的存储地址,在packages中记录deb的存储地址。客户端下载安装该软件时,先到服务端下载release并缓存到本地,再从release中查询packages的存储地址,按照该地址从服务端下载packages并缓存到本地,安装软件时,从本地缓存的packages中查询deb的存储地址,然后按照该地址从服务端下载deb并进行安装。当出现该软件的v2版本时,需要对软件仓库进行更新,更新流程为:首先将deb_v2导入服务端的软件仓库,由于reprepro工具只允许同架构同包名的deb存在一份,所以deb_v2导入的同时reprepro工具会将deb_v1删除,然后更新release和packages,更新后的packages记录了deb_v2的存储地址。软件仓库更新完成后,如果客户端本地缓存的packages是在软件仓库更新前下载packages,即,该packages记录的是deb_v1的存储地址,那么由于deb_v1已经删除,客户端运行该packages时将无法下载到deb文件。
[0005]为解决deb下载地址失效的问题,debian仓库格式规范指出在 release文件中添加Acquire

By

Hash选项,可引导客户端优先按哈希值获取packages,如获取失败再从默认路径获取。仓库管理工具支持该方式时,也会将packages放置到哈希值路径中。例如,packages文件的默认路径是:dists/eagle/main/binary

amd64/Packages,使用Acquire

By

Hash选项后,packages文件还会复制到哈希路径中:dists/eagle/main/binary

amd64/by

hash/MD5Sum/4d4bd928d09a48c193ac6ec54ad4ccbe。获取packages文件的流程如图3所示,客户端获取到release文件后,判断Acquire

By

Hash是否启用,如果Acquire

By

Hash未启用,则从默认路径下载并缓存packages文件,如果Acquire

By

Hash已启用,则从release文件记录的哈希值路径下载packages文件并缓存packages文件,如果从哈希值路径下载packages文件失败,则从默认路径下载并缓存packages文件。使用Acquire

By

Hash参数后,packages会存放到自身哈希值的目录下,仓库更新时,packages文件就不会被覆
盖,能避免下载的release和packages不匹配。但这种方式只对packages文件生效,旧版本的deb还是会被删除,客户端在packages过期时依旧无法下载deb,而且通常情况下release文件和packages文件在客户端是同时下载的,因此这种方式实际作用并不大。
[0006]综上,上述现有的软件仓库更新技术均不能针对客户端仓库索引文件没有更新而导致的无法下载软件包的问题。

技术实现思路

[0007]为此,本专利技术提供了一种软件包更新方法、装置与计算设备,以力图解决或者至少缓解上面存在的至少一个问题。
[0008]根据本专利技术的一个方面,提供了一种软件包更新方法,适用于服务端,所述方法包括步骤:响应于检测到软件包在原始仓库更新完成,生成目标仓库索引文件,所述目标仓库索引文件记录的内容与原始仓库中原始仓库索引文件记录的内容相同;将所述软件包从所述原始仓库中的原始路径复制到目标仓库中的目标路径;以及将所述目标仓库索引文件中所述软件包的原始路径修改为所述目标路径,得到更新后的目标仓库索引文件,完成所述软件包的更新。
[0009]可选地,在根据本专利技术的软件包更新方法中,所述将所述软件包从所述原始仓库中的原始路径复制到目标仓库中的目标路径的步骤包括:获取所述目标仓库索引文件中各软件包的目标路径;以及在所述目标路径未存储文件的情况下,将与所述目标路径对应的软件包从所述原始仓库中的原始路径复制到所述目标仓库中的目标路径。
[0010]可选地,在根据本专利技术的软件包更新方法中,所述将所述软件包从所述原始仓库中的原始路径复制到目标仓库中的目标路径的步骤包括:对所述软件包进行定位,获取其原始路径;以及将所述软件包从所述原始仓库中的原始路径复制到所述目标仓库中的目标路径。
[0011]可选地,在根据本专利技术的软件包更新方法中,所述目标路径由与其对应的软件包的原始路径获得。
[0012]可选地,在根据本专利技术的软件包更新方法中,所述目标路径通过将与其对应的软件包的原始路径和哈希值拼接获得。
[0013]可选地,在根据本专利技术的软件包更新方法中,采用硬链接的方式将所述软件包从所述原始仓库中的原始路径复制到所述目标仓库中的目标路径。
[0014]根据本专利技术的另一方面,还提供了一种软件包更新装置,适用于服务端,所述装置包括:初始化单元,适于响应于检测到软件包在原始仓库更新完成,生成目标仓库索引文件,所述目标仓库索引文件记录的内容与原始仓库中原始仓库索引文件记录的内容相同;文件复制单元,适于将所述软件包从所述原始仓库中的原始路径复制到目标仓库中的目标路径;以及路径修改单元,适于将所述目标仓库索引文件中所述软件包的原始路径修改为所述目标路径,得到更新后的目标仓库索引文件,完成所述软件包的更新。
[0015]可选地,在根据本专利技术的软件包更新装置中,所述文件复制单元包括:路径获取子单元本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件包更新方法,适用于服务端,所述方法包括步骤:响应于检测到软件包在原始仓库更新完成,生成目标仓库索引文件,所述目标仓库索引文件记录的内容与原始仓库中原始仓库索引文件记录的内容相同;将所述软件包从所述原始仓库中的原始路径复制到目标仓库中的目标路径;以及将所述目标仓库索引文件中所述软件包的原始路径修改为所述目标路径,得到更新后的目标仓库索引文件,完成所述软件包的更新。2.如权利要求1所述的软件包更新方法,其中,所述将所述软件包从所述原始仓库中的原始路径复制到目标仓库中的目标路径的步骤包括:获取所述目标仓库索引文件中各软件包的目标路径;以及在所述目标路径未存储文件的情况下,将与所述目标路径对应的软件包从所述原始仓库中的原始路径复制到所述目标仓库中的目标路径。3.如权利要求1或2所述的软件包更新方法,其中,所述将所述软件包从所述原始仓库中的原始路径复制到目标仓库中的目标路径的步骤包括:对所述软件包进行定位,获取其原始路径;以及将所述软件包从所述原始仓库中的原始路径复制到所述目标仓库中的目标路径。4.如权利要求1或2所述的软件包更新方法,其中,所述目标路径由与其对应的软件包的原始路径获得。5.如权利要求4所述的软件包更新方法,其中,所述目标路径通过将与其对应的软件包的原始路径和哈希值拼接获得。6.如权利要求2所述的软件包更新方法,采用硬链接...

【专利技术属性】
技术研发人员:吴荣杰
申请(专利权)人:统信软件技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1