适用于软件包的处理方法、装置及电子设备与流程

文档序号:26138994发布日期:2021-08-03 14:22阅读:82来源:国知局
适用于软件包的处理方法、装置及电子设备与流程

本发明涉及软件技术领域,具体涉及一种适用于软件包的处理方法、装置及电子设备。



背景技术:

对于企业级的云计算linux操作系统,必须要对底层的软件包设计具有效率的编译流程工具和管理系统。其中,软件包以rpm(redhatpackagemanagement)档案的形式存在,可分为源码包和二进制包两种。

然而,云计算linux操作系统是由数千个软件包与配置集合而成的linux操作环境,要对数千个软件包、专案和代码进行编译是一个极为耗时的大工程。

并且,编译完成后,如何妥善地管理大量的rpm档案,也是相关技术中亟需解决的问题。



技术实现要素:

本发明的主要目的在于提供一种适用于软件包的处理方法及装置,以解决现有对数千个软件包进行编译需要耗费大量时间,以及无法妥善管理大量rpm档案的问题。

为了实现上述目的,本发明的第一方面提供了一种适用于软件包的处理方法,包括:

获取centos中的原始源码包,对原始源码包中的代码和/或配置进行调整,以使调整后的原始源码包适配于多个平台;

将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译;

在每一个平台下,将所述修正源码包并发地编译为二进制包;

将所有平台下编译完成的所有二进制包由koji管理系统进行管理。

可选地,所述对原始源码包中的代码和/或配置进行调整包括:

所述调整的方式包括对所述原始源码包中的代码和/或配置进行修订;

所述调整包括对所述原始源码包进行功能的增加、减少以及修改中的任意一种或多种。

可选地,所述将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译,包括:

将打包后的所述修正源码包基于其自身的版号制定标准进行命名;

基于koji管理系统的后端分布式编译机制,在多个平台下对所述修正源码包进行同步编译。

可选地,所述在每一个平台下,将所述修正源码包并发地编译为二进制包,包括:

在每一个平台下,依据编译环境的性能,指定特定数量的工作进程构成进程池;

在所述进程池中将修正源码包并发地编译为二进制包,以实现各工作进程间负载均衡,其中,所述二进制包依据版号制定标准进行命名。

进一步地,所述依据编译环境的性能,指定特定数量的工作进程构成进程池,包括:

依据编译环境被配置的资源,确定工作进程的数量,其中,编译环境被配置的资源包括cpu内存和存储集群;

将特定数量的工作进程构成进程池,以并发编译所述修正源码包。

可选地,所述将所有平台下编译完成的所有二进制包由koji管理系统进行管理,包括:

通过koji管理系统保存软件包,其中,所述软件包按照rpm类型分为源码包和二进制包,所述源码包包括原始源码包和修正源码包;

通过koji管理系统的web界面查看软件包信息,并单独下载软件包,以进行试验和开发。

进一步地,所述将所有平台下编译完成的所有二进制包由koji管理系统进行管理,还包括:

通过编程接口批量处理软件包,其中,所述批量处理包括批量标记、临时编译、批量删除和批量导出到仓库;

通过koji管理系统输出软件包到koji软件库,mash工具获取所述koji软件库中的软件包并输出软件包到仓库。

本发明的第二方面提供了一种适用于软件包的处理装置,包括:

调整单元,用于获取centos中的原始源码包,对原始源码包中的代码和/或配置进行调整,以使调整后的原始源码包适配于多个平台;

同步编译单元,用于将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译;

并发编译单元,用于在每一个平台下,将所述修正源码包并发地编译为二进制包;

管理单元,用于将所有平台下编译完成的所有二进制包由koji管理系统进行管理。

本发明的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行第一方面任意一项提供的适用于软件包的处理方法。

本发明的第四方面提供了一种电子设备,所述电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行第一方面任意一项提供的适用于软件包的处理方法。

在本发明实施例提供的适用于软件包的处理方法中,首先获取centos中的原始源码包,对原始源码包中的代码和/或配置进行调整,以使调整后的原始源码包适配于多个平台;其次将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译;然后在每一个平台下,将所述修正源码包并发地编译为二进制包;最后将所有平台下编译完成的所有二进制包由koji管理系统进行管理;本发明实施例通过在多个平台下同步编译修正源码包和在每一个平台下并发式编译修正源码包,可以实现在同一时间段内全面地编译软件代码,大幅度提升编译产出的效率;并且,引入koji管理系统管理大量软件包,避免在产品中软件版本混淆不清的问题,还可以依据需求将软件包输出到仓库中。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的适用于软件包的处理方法方法流程示意图;

图2为本发明实施例提供的多个平台下同步编译流程图;

图3为本发明实施例提供的单个平台下并发编译流程图;

图4为本发明实施例提供的适用于软件包的处理装置框图;

图5为本发明实施例提供的电子设备框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本发明中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本发明及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。

并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本发明中的具体含义。

此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

对于企业级的云计算linux操作系统,必须要对底层的软件包设计具有效率的编译流程工具和管理系统。其中,软件包以rpm(redhatpackagemanagement)档案的形式存在,可分为源码包和二进制包两种。然而,云计算linux操作系统是由数千个软件包与配置集合而成的linux操作环境,要对数千个软件包、专案和代码进行编译是一个极为耗时的大工程;并且,编译完成后,如何妥善地管理大量的rpm档案,也是相关技术中亟需解决的问题。

为了解决上述问题,本发明实施例提供了一种适用于软件包的处理方法方法,如图1所示,该方法包括如下的步骤s101至步骤s104:

步骤s101:获取centos中的原始源码包,对原始源码包中的代码和/或配置进行调整,以使调整后的原始源码包适配于多个平台;其中,centos为社区企业免费开源操作系统,对于从centos中获取的原始源码包,在考虑双平台x86_64和aarch64的思路下,可以根据客户对软件包的需求,对原始源码包中的代码进行优化调整,或者对原始源码包中的配置进行优化调整,或者同时对原始源码包中的代码和配置进行优化调整,以期得到满足客户需求的软件包。

具体的,所述步骤s101包括:

所述调整的方式包括对所述原始源码包中的代码和/或配置进行修订;在考虑双平台x86_64和aarch64的思路下,对原始源码包加补丁;

所述调整包括对所述原始源码包进行功能的增加、减少以及修改中的任意一种或多种。为了满足客户对软件包的需求,以打补丁的方式对原始源码包增加功能,此外,还可以进行功能的减少以及修改;在本发明实施例中,可以同时对原始源码包进行功能的增加、减少以及修改中的任意一种或多种。

步骤s102:将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译;

具体的,所述步骤s102包括:

将打包后的所述修正源码包基于其自身的版号制定标准进行命名;

基于koji管理系统的后端分布式编译机制,在多个平台下对所述修正源码包进行同步编译。

本发明实施例提供的多个平台下同步编译流程如图2所示,其中,源码即修正源码包,kojibuild系统即koji管理系统,node节点,x86_64和aarch64为两种平台架构;基于该koji管理系统,将修正源码包同步编译为双平台x86_64和aarch64的binaryrpm(二进制包),并且,输出软件包到repo(仓库)。

步骤s103:在每一个平台下,将所述修正源码包并发地编译为二进制包;

具体的,所述步骤s103包括:

在每一个平台下,依据编译环境的性能,指定特定数量的工作进程构成进程池;该进程池可以以透明的方式管理一批工作进程,各工作进程分别用于编译修正源码包,并且对分配到进程池中的修正源码包进行并发编译时,可以实现负载均衡。

在所述进程池中将修正源码包并发地编译为二进制包,以实现各工作进程间负载均衡,其中,所述二进制包依据版号制定标准进行命名。

本发明实施例提供的每个平台下并发编译流程如图3所示,其中,a.src.rpm、b.src.rpm、c.src.rpm、d.src.rpm分别为基于其自身的版号制定标准进行命名的修正源码包,workspool为进程池,worker1、worker2……workern分别为各个工作进程;将修正源码包通过并发式程序中各个工作进程进行并发式编译,得出二进制包后,保存至koji管理系统中进行管理。

由于从单个sourcerpm(源码包)可能会编译出多个binaryrpm(二进制包),故在此系统中,每个软件包都遵守着rpm所制定的标准,正确提供name-version-release(nvr)的版号制定;

当对软件包的代码或配置进行调整时,所重新打包的sourcerpm也依据标准bumpversion,如此可确保同一个版号的sourcerpm与binaryrpm文档是一一对应的,不会出现同样的rpm文档名称但实际上却有不同的代码实现,可以避免在产品中软件版本混淆不清的问题;其中,bumpversion是一个小型的命令行工具,用于简化应用发布时的版本控制,可以根据命令升级版本号、自动替换项目相关文件中的版本信息、自动创建一次git提交并且为这一次git提交打上版本升级的标签。

其中,所述依据编译环境的性能,指定特定数量的工作进程构成进程池,包括:

依据编译环境被配置的资源,确定工作进程的数量,其中,编译环境被配置的资源包括cpu内存和存储集群;该存储集群包括硬盘、很多虚拟盘,在单位空间大小的cpu中,当一个工作进程任务完成时,下一工作进程任务依然可以在该单位空间大小的cpu中进行,因此吞吐量大、保证了io能力达到最高;通过cpu内存和存储集群,以保证存储空间进行并发编译,减少编译时间,提升编译效率。

将特定数量的工作进程构成进程池,以并发编译所述修正源码包。其中,特定数量是指依据编译环境被配置的资源确定出的工作进程的数量,例如,依据cpu内存和存储集群确定出的工作进程的数量为64个,则将64个工作进程构成进程池,特定数量为64个。

步骤s104:将所有平台下编译完成的所有二进制包由koji管理系统进行管理。

具体的,所述步骤s104包括:

通过koji管理系统保存软件包,其中,所述软件包按照rpm类型分为源码包和二进制包,所述源码包包括原始源码包和修正源码包;

通过koji管理系统的web界面查看软件包信息,并单独下载软件包,以进行试验和开发。

所述步骤s104还包括:

通过编程接口批量处理软件包,其中,所述批量处理包括批量标记、临时编译、批量删除和批量导出到仓库;批量标记可以是批量为软件包打tag标签,对已被标记、已被打标签的批量软件包执行批量删除和批量导出到软件库的操作,并且,由于通过koji管理系统编译时,koji管理系统会认定存在软件包的调整,会更改版本号,因此,当编译不涉及软件包的调整时,不通过koji管理系统进行编译,而是通过编程接口对软件包进行临时编译,可以达到在不更改版本号的情况下实现对软件包的编译。

通过koji管理系统输出软件包到koji软件库,mash工具获取所述koji软件库中的软件包并输出软件包到仓库。利用koji管理系统将koji管理系统中的软件包输出到koji软件库,mash工具获取koji软件库中的软件包后,根据需求将软件包输出到yum软件库即repo仓库中。由于repo仓库需要满足yum兼容,因此,在软件包从koji管理系统输出到仓库的过程中,通过mash工具的中转实现从koji软件库到yum软件库的转换,以避免产生兼容问题。

从以上的描述中,可以看出,本发明实现了如下技术效果:

本发明实施例通过在多个平台下同步编译修正源码包和在每一个平台下并发式编译修正源码包,可以实现在同一时间段内全面地编译软件代码,大幅度提升编译产出的效率;

并且,引入koji管理系统管理大量软件包,每个软件包都遵守着rpm所制定的标准,正确提供name-version-release(nvr)的版号制定,可确保同一个版号的sourcerpm与binaryrpm文档是一一对应的,不会出现同样的rpm文档名称但实际上却有不同的代码实现,可以避免在产品中软件版本混淆不清的问题;

由于repo仓库需要满足yum兼容,因此,在软件包从koji管理系统输出到仓库的过程中,通过mash工具的中转实现从koji软件库到yum软件库的转换,以避免产生兼容问题;并且,根据需求将软件包输出到仓库中。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本发明实施例还提供了一种用于实施上述适用于软件包的处理方法的适用于软件包的处理装置,如图4所示,该装置包括:

调整单元41,用于获取centos中的原始源码包,对原始源码包中的代码和/或配置进行调整,以使调整后的原始源码包适配于多个平台;

同步编译单元42,用于将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译;

并发编译单元43,用于在每一个平台下,将所述修正源码包并发地编译为二进制包;

管理单元44,用于将所有平台下编译完成的所有二进制包由koji管理系统进行管理。

本发明实施例还提供了一种电子设备,如图5所示,该电子设备包括一个或多个处理器51以及存储器52,图5中以一个处理器51为例。

该控制器还可以包括:输入装置53和输出装置54。

处理器51、存储器52、输入装置53和输出装置54可以通过总线或者其他方式连接,图5中以通过总线连接为例。

处理器51可以为中央处理器(centralprocessingunit,简称为cpu),处理器51还可以为其他通用处理器、数字信号处理器(digitalsignalprocessor,简称为dsp)、专用集成电路(applicationspecificintegratedcircuit,简称为asic)、现场可编程门阵列(field-programmablegatearray,简称为fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合,通用处理器可以是微处理器或者任何常规的处理器。

存储器52作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的控制方法对应的程序指令/模块。处理器51通过运行存储在存储器52中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的适用于软件包的处理方法。

存储器52可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据服务器操作的处理装置的使用所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器52可选包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至网络连接装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置53可接收输入的数字或字符信息,以及产生与服务器的处理装置的用户设置以及功能控制有关的键信号输入。输出装置54可包括显示屏等显示设备。

一个或者多个模块存储在存储器52中,当被一个或者多个处理器51执行时,执行如图1所示的方法。

本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各电机控制方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,简称为rom)、随机存储记忆体(randomaccessmemory,简称为ram)、快闪存储器(flashmemory,简称为fm)、硬盘(harddiskdrive,简称为hdd)或固态硬盘(solid-statedrive,简称为ssd)等;存储介质还可以包括上述种类的存储器的组合。

虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1