RPM文件维护方法、设备及计算机可读介质技术

技术编号:35469652 阅读:19 留言:0更新日期:2022-11-05 16:14
本申请提供了一种本申请提供的RPM文件维护方法、设备以及计算机可读介质,该方案中代码管理服务器根据开发者向代码管理服务器提交的内容,在RPM REPO仓库中添加RPM文件和/或Package list文件,并生成提交信息,代码管理服务器向后端服务器同步最新的RPM REPO仓库,并向后端服务器提供对应的提交信息,后端服务器根据提交信息以及同步得到的RPM REPO仓库执行更新Mirror操作。由于Package list文件能够标记REPO中所包含的RPM文件,可以自动化地生成Mirror与各个RPM文件之间的对应关系,后端服务器执行更新操作后可以根据Packagelist文件及其所标记的RPM文件向用户提供对应的Mirror,从而实现多个Mirror对同一RPM文件的复用,可以在减少整个RPM REPO仓库的存储占用的同时,使得软件产品的维护更加便捷、高效。高效。高效。

【技术实现步骤摘要】
RPM文件维护方法、设备及计算机可读介质


[0001]本申请涉及信息
,尤其涉及一种RPM文件维护方法、设备及计算机可读介质。

技术介绍

[0002]在软件产品开发的过程中,会通过公网源发布软件产品的软件包。以 CentOS仓库为例,其对外提供的公网源中会提供不同版本的软件产品的软件包。例如,当前版本的ISO基础的软件包放到base目录、当前版本的ISO后续更新维护的软件包放到updates目录。此外,针对某些特定场景维护的软件包也单独起一个目录,例如涉及到存储部分的,也可以单独创建一个storage目录进行维护所涉及的软件包。
[0003]不仅如此,在以上针对特定场景的所创建的目录下的软件包也有他们的特点,但总体上是一样的。随着软件产品的迭代可能会出现某两个不同的版本使用了一部分不同的RPM(Red

Hat Package Manager,红帽软件包管理器)文件,但是这两个版本的软件产品中也有很多其它的RPM文件是一样的。以updates目录下的libvirt(一种用于虚拟化平台的管理工具) 为例,这个目录对应于后续用于维护软件包迭代的仓库,其中,当前发行的版本中支持的libvirt是5.8的版本,客户所需要的某些功能在该版本的 libvirt中没有,需要升级来解决。此时,CentOS的公网源后续就会在updates 目录下提供该版本的软件包。
[0004]为了支持下载不同的RPM文件,目前大部分所采用的方式是针对该软件产品不同的版本都对应生成一个Mirror,各个Mirror使用不同的 Mirror路径对外提供服务。如果同一个RPM文件无法在多个Mirror上复用,将会造成Mirror的存储占用量成倍增长。例如,若已知将发布三个版本软件产品,分别是1.0、2.0、3.0,这三个版本需要的RPM文件大部分都是相同的,只有少量文件不同,若一个版本的软件的文件数量为1000+,那么三个版本的软件将需要3000+的文件。而在实际场景中,公司内部研发的过程中产品往往不会只有三个版本,可能是数十个、数百个、甚至数千个等,那么此时的所有版本的软件的文件数量合计将是一个十分庞大的数字,如果无法在不同路径的Mirror上复用同一个RPM文件,那么对应的存储空间将是十分庞大,造成存储资源紧张。
[0005]在此前提下上,公司内部研发因为一些原因(如发现Bug需要修复,新功能需要支持等)需要对软件中使用的rpm进行替换、新增、删除时,如果直接对Mirror里面的文件进行更新,当文件数量较大的情况下,往往容易出现纰漏。并且,在实际情况中,往往是多个开发人员发同时针对当前一个软件产品进行研发,所以在此过程中就更加容易出现问题,比如两个研发在同一Mirror路径下添加了同一个RPM的不同版本,在实际使用的时候,只会有一个人的更改生效,有比如意外删除了另一个研发的RPM 文件等等,并且出现问题之后也没有难以进行溯源,不容易找出是哪一位开发修改了文件。

技术实现思路

[0006]本申请的一个目的是提供一种RPM文件维护方法、设备及计算机可读介质,用以解
决现有技术中需要占用的存储空间较大、不易维护的问题。
[0007]为实现上述目的,本申请提供了一种RPM文件维护方法,所述方法应用于代码管理服务器和后端服务器,包括:
[0008]代码管理服务器根据开发者向代码管理服务器提交的内容,在软件包源仓库(RPM REPO)仓库中添加RPM文件和/或软件包清单(Package list) 文件,并生成提交信息,其中,所述Package list文件用于标记REPO中所包含的RPM文件;
[0009]代码管理服务器向后端服务器同步最新的RPM REPO仓库,并向所述后端服务器提供对应的提交信息;
[0010]后端服务器根据提交信息以及同步得到的RPM REPO仓库执行更新对外提供软件包源服务(Mirror)操作,根据Package list文件及其所标记的RPM文件向用户提供对应的Mirror。
[0011]进一步地,在RPM REPO仓库中添加RPM文件和/或Package list文件,包括:
[0012]对待添加的文件进行类型判断;
[0013]若所述待添加的文件为RPM文件,创建所述RPM文件的存放目录,并将所述RPM文件存储于所述存放目录下;
[0014]若所述待添加的文件为非RPM文件,判断所述待添加的文件是否为 Package list文件;
[0015]若所述待添加的文件为Package list文件,判断所述Package list文件是否符合预设规则;
[0016]若满足预设规则,添加所述Package list文件。
[0017]进一步地,创建所述RPM文件的存放目录,并将所述RPM文件存储于所述存放目录下,包括:
[0018]获取所述RPM文件的首字母作为一级目录;
[0019]获取所述RPM文件的首个分隔符之前的字符作为所述一级目录下的二级目录;
[0020]将所述RPM文件存储于所述二级目录下,其中,不同版本的同名RPM 文件的首个分隔符之前的字符相同、且首个分隔符之后的字符不同。
[0021]进一步地,所述预设规则包括:
[0022]Package list文件的命名格式满足规定的格式;
[0023]Package list文件所声明的RPM文件中不存在重复的RPM文件;
[0024]Package list文件所声明的RPM文件已全部存储于RPM REPO仓库中。
[0025]进一步地,在代码管理服务器向后端服务器同步最新的RPM REPO 仓库,并向所述后端服务器提供对应的提交信息之前,还包括:
[0026]在后端服务器执行RPM REPO仓库的初始化操作,以使所述后端服务器中的RPM REPO仓库从所述代码管理服务器同步获取开发者提交的内容。
[0027]进一步地,所述提交信息为版本编号(Commit ID);
[0028]向所述后端服务器提供对应的提交信息,包括:
[0029]将Commit ID写入到后端服务器的记录版本编号文件(Commit file) 文件中。
[0030]进一步地,后端服务器根据提交信息以及同步得到的RPM REPO仓库执行更新Mirror操作,包括:
[0031]后端服务器判断Commit file文件是否为空;
[0032]若所述Commit file文件不为空,读取Commit file文件中的Commit ID,并根据所述Commit ID所对应的所述RPM REPO仓库中的RPM文件和 Package list文件执行更新Mirror操作。
[0033]进一步地,根据所述Commit ID所对应的所述RPM REPO仓库中的 RPM文件和Package list文件执行更新Mirror操作,包括:
[0034]比较当前的Pa本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种RPM文件维护方法,其特征在于,所述方法应用于代码管理服务器和后端服务器,包括:代码管理服务器根据开发者向代码管理服务器提交的内容,在RPM REPO仓库中添加RPM文件和/或Package list文件,并生成提交信息,其中,所述Package list文件用于标记REPO中所包含的RPM文件;代码管理服务器向后端服务器同步最新的RPM REPO仓库,并向所述后端服务器提供对应的提交信息;后端服务器根据提交信息以及同步得到的RPM REPO仓库执行更新Mirror操作,根据Package list文件及其所标记的RPM文件向用户提供对应的Mirror。2.根据权利要求1所述的方法,其特征在于,在RPM REPO仓库中添加RPM文件和/或Package list文件,包括:对待添加的文件进行类型判断;若所述待添加的文件为RPM文件,创建所述RPM文件的存放目录,并将所述RPM文件存储于所述存放目录下;若所述待添加的文件为非RPM文件,判断所述待添加的文件是否为Package list文件;若所述待添加的文件为Package list文件,判断所述Package list文件是否符合预设规则;若满足预设规则,添加所述Package list文件。3.根据权利要求2所述的方法,其特征在于,创建所述RPM文件的存放目录,并将所述RPM文件存储于所述存放目录下,包括:获取所述RPM文件的首字母作为一级目录;获取所述RPM文件的首个分隔符之前的字符作为所述一级目录下的二级目录;将所述RPM文件存储于所述二级目录下,其中,不同版本的同名RPM文件的首个分隔符之前的字符相同、且首个分隔符之后的字符不同。4.根据权利要求2所述的方法,其特征在于,所述预设规则包括:Package list文件的命名格式满足规定的格式;Package list文件所声明的RPM文件中不存在重复的RPM文件;Package list文件所声明的RPM文件已全部存储于RPM REPO仓库中。5.根据权利要求1所述的方法,其特征在于,在代码管理服务器向后端服务器同步最新的RPM REPO仓库,并向所述后端服务器提供对应的提交信息之前,还包括:...

【专利技术属性】
技术研发人员:刘磊余兴威
申请(专利权)人:上海云轴信息科技有限公司
类型:发明
国别省市:

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

1