CN111026397A - 一种rpm包分布式编译方法及装置 - Google Patents
一种rpm包分布式编译方法及装置 Download PDFInfo
- Publication number
- CN111026397A CN111026397A CN201911006888.9A CN201911006888A CN111026397A CN 111026397 A CN111026397 A CN 111026397A CN 201911006888 A CN201911006888 A CN 201911006888A CN 111026397 A CN111026397 A CN 111026397A
- Authority
- CN
- China
- Prior art keywords
- rpm
- packet
- compiling
- package
- container
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种rpm包分布式编译方法及装置。该方法包括步骤:接收用户输入的编译指令;根据所述编译指令获取的每个需要编译的rpm包类型的相关rpm包;收集所述相关rpm包的依赖包信息,根据所述依赖包信息将所述相关rpm包分发到容器中;在所述容器中编译所述相关rpm包。本发明可以显著缩短编译时长,大大提升编译效率。
Description
技术领域
本发明涉及云计算领域,尤其涉及一种rpm包分布式编译方法及装置。
背景技术
云平台中有大量rpm包需要编译,包括操作系统公共的包以及业务组件特有的软件包。现有编译方法中,采用单个rpm包依次编译的方式,每每个rpm包的编译过程都会有大量相关依赖包的同步编译,当需要编译多个存在相同依赖包的rpm时,这些不同包的依赖包会被重复检查甚至编译。这样就会产生以下几个问题:不同的rpm的相关依赖包会存在同样的包,编译的中间产物会重复创建和删除,包也会重复删除与建立。并且,中间产物的重复创建和删除会延长整个编译过程的时间,效率低下。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提出了一种rpm包分布式编译方法及装置,能够解决编译时间长、效率低下的问题。
根据本发明的一个方面,本发明提供了一种rpm包分布式编译方法,包括步骤:
接收用户输入的编译指令;
根据所述编译指令获取的每个需要编译的rpm包类型的相关rpm包;
收集所述相关rpm包的依赖包信息,根据所述依赖包信息将所述相关rpm包分发到容器中;
在所述容器中编译所述相关rpm包。
根据本发明的另一个方面,本发明提供了一种rpm包编译装置,包括:
调度器、具有编译环境的编译容器和rpm包存储单元;
所述调度器,用来接收用户输入的编译指令,根据所述编译指令获取的每个需要编译的rpm包类型的相关rpm包,收集所述相关rpm包的依赖包信息,根据所述依赖包信息将所述相关rpm包分发到容器中;
编译容器,用来在所述容器中编译所述相关rpm包;
rpm包存储单元,用来存储相关rpm包。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够充分利用机器性能,分发到编译机集群,完成整个编译过程,相比传统编译方式能够显著缩短编译时长,大大提升编译效率。
附图说明
图1是传统的rpm包编译的流程图;
图2是本发明实施例提供的一种rpm包编译装置的架构示意图;
图3是本发明实施例提供的一种rpm包编译方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
图1是传统的rpm包编译的流程图,每个rpm包的编译过程都会有大量相关依赖包的同步编译,当需要编译多个目标rpm包时,这些不同包的依赖包会被重复检查甚至编译。
本发明提出了一种新的编译方法,该方法根据共同依赖包将rpm包划分为几类,将完全共用依赖包的rpm包划分为一组,共用一个mock,实现不同业务包独立编译,再通过本专利中的分布式编译平台调度容器自动实现按需编译。
本发明的一种rpm包分布式编译装置如图2所示,包括调度器、多个具有编译环境的编译容器和rpm包存储单元。rpm包存储单元上存储有编译所有rpm包类型的相关rpm包。调度器接收用户输入的编译指令,根据编译指令中的rpm包类型从rpm包存储单元中获取编译指令中rpm包类型的相关rpm包,根据相关rpm包的依赖包信息将相关rpm包分包给编译容器。编译容器可以对rpm包并行编译,将编译后的rpm包会发给调度器进行集成汇总。该编译装置可以是由多个物理节点组成的编译集群,其中一个物理节点为主节点,每个节点上可以有多个容器。装置还可以包括集成模块,用来将所述容器中编译完成的rpm进行集成汇总。
下面是本发明实施例的rpm包分布式编译方法,包括步骤:
S11,调度器接收用户输入的编译指令。
当编译指令不包含rpm包类型时,即表示编译环境中所有类型的rpm包,当编译指令包含rpm包类型时,即表示编译指定类型的rpm包。根据一次当前编译模式编译完毕后的rpm库,编译环境中项目编译结果的std/rpmbuild/RPMS等文件夹中,按类型整理出相关包。
S12,根据编译指令获取的每个需要编译的rpm包类型的相关rpm包。
所有编译过程中可能需要的相关rpm包被预先存储在编译集群的共享存储单元中,获取当前需要编译的rpm包类型需要的rpm包,用来进行rpm包编译。
S13,收集rpm包的依赖包信息,根据所述依赖包信息将上述所有rpm包分发到不同的容器中。
独立编译各类包,如分别独立编译systemd和dhcp,编译结束后在编译日志里对比各自编译过程中实际参与编译的包类型,提取公共部分作为共同依赖包。
将完全共用依赖包的rpm包放进一个容器,不完全共用依赖包的rpm包放进一个容器内,无依赖包的的rpm包放进一个容器内,例如,ruby包和wget包无依赖包,可以放进一个容器内。
S14,对各容器的rpm包进行编译。
启用分布式编译平台调度容器对各容器内的rpm包进行编译,在编译过程中,将rpm包的编译产物提供给与该rpm包共用依赖包的后一rpm包进行编译,具有共用依赖包的rpm包共用一个mock。
在完全共用依赖包的容器里,将该容器里前一个rpm包编译完后的产物提供给该容器内后一个rpm包进行编译。对于完全共用依赖包,那么在该容器内,rpm包可以没有编译顺序。在不完全共用依赖包的rpm包中,对于共用依赖包,也是将前一个rpm包编译完后的产物提供给该容器内后一个rpm包进行编译,对于非共用依赖包,将rpm包编译完后,存储在rmp包存储单元,等待被传输到主节点。对于无依赖包的rpm包,在容器内对个rpm包独立编译。
以编译dhcp包类型、systemd包类型为例来说明本发明的rpm包分布式编译方法,包括步骤:
S21,接收到编译指令,指示需要编译dhcp包类型、systemd包类型。
S22,从rpm包存储单元获取编译这两个包类型的rpm包。编译systemd包类型需要systemd包、systemd-libs包、systemd-sysv包,sm-common包等。编译dhcp包类型需要dhcp包、dhcp-common包、dhcp-libs包,sm-common包等。
S23,收集上述rpm包的依赖包信息,根据所述依赖包信息将上述所有rpm包分发到不同的容器中。
systemd-libs包与systemd-sysv包完全共用systemd等包,dhcp-common包、dhcp-libs包完全共用dhcp等包;systemd和dhcp共用sm-common包。将systemd-libs和systemd-sysv分发到容器1,将systemd和dhcp分发到容器2。Sm-common这种通用包在每个容器里都有,无需分发至各容器。
S24,对各容器的rpm包进行编译。在容器1中,先编译systemd-libs包,dhcp-common包,将systemd-libs包编译后的产物提供给systemd-sysv包,(反之亦可,先编译systemd-sysv包,将编译产物提供给systemd-libs包)将dhcp-common包编译后的产物提供给dhcp-libs包,容器1最后编译完成获得的最终结果是编译好的systemd-libs包,systemd-sysv包,dhcp-common包,dhcp-libs包,并提供给容器2使用;在容器2中systemd编译时使用编译好的systemd-libs包与systemd-sysv包,且在此过程中编译好的net-snmp和sm-common包继续提供给dhcp编译使用。
S25,全部编译好的rpm包放入rpm包存储单元,由调度器控制传输至主节点。
本发明的rpm包分布式编译方法及装置有以下优点:
1)充分利用机器性能,分发到编译机集群,完成整个编译过程,相比传统编译方式能够显著缩短编译时长,大大提升编译效率。
2)对操作系统公共的包以及业务组件特有的软件包进行级别分类,通过一些分组机制,实现不同业务包独立编译,有益于编译失败时查找问题及编译成功后对rpm包的整理工作。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种rpm包分布式编译方法,其特征在于,包括步骤:
接收用户输入的编译指令;
根据所述编译指令获取的每个需要编译的rpm包类型的相关rpm包;
收集所述相关rpm包的依赖包信息,根据所述依赖包信息将所述相关rpm包分发到容器中;
在所述容器中编译所述相关rpm包。
2.如权利要求1所述的一种rpm包分布式编译方法,其特征在于,所述分发具体是:
将完全共用依赖包的所述相关rpm包分发至第一容器中,不完全共用依赖包的所述相关rpm包分发至第二容器,无依赖包的所述相关rpm包分发至第三容器。
3.如权利要求1或2所述的一种rpm包分布式编译方法,其特征在于,在所述编译过程中,将rpm包的编译产物提供给与该rpm包具有共用依赖包的后一rpm包进行编译。
4.如权利要求1或2所述的一种rpm包分布式编译方法,其特征在于,在所述编译后,还包括步骤:
将所述容器中编译完成的rpm进行集成汇总。
5.一种rpm包分布式编译装置,其特征在于,包括:
调度器、具有编译环境的编译容器和rpm包存储单元;
所述调度器,用来接收用户输入的编译指令,根据所述编译指令获取的每个需要编译的rpm包类型的相关rpm包,收集所述相关rpm包的依赖包信息,根据所述依赖包信息将所述相关rpm包分发到容器中;
编译容器,用来在所述容器中编译所述相关rpm包;
rpm包存储单元,用来存储相关rpm包。
6.如权利要求5所述的一种rpm包分布式编译装置,其特征在于,所述分发具体是:
将完全共用依赖包的所述相关rpm包分发至第一容器中,不完全共用依赖包的所述相关rpm包分发至第二容器,无依赖包的所述相关rpm包分发至第三容器。
7.如权利要求5或6所述的一种rpm包分布式编译装置,其特征在于,在所述编译过程中,将rpm包的编译产物提供给与该rpm包具有共用依赖包的后一rpm包进行编译。
8.如权利要求5或6所述的一种rpm包分布式编译装置,其特征在于,还包括集成模块,用来将所述容器中编译完成的rpm进行集成汇总。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911006888.9A CN111026397B (zh) | 2019-10-22 | 2019-10-22 | 一种rpm包分布式编译方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911006888.9A CN111026397B (zh) | 2019-10-22 | 2019-10-22 | 一种rpm包分布式编译方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111026397A true CN111026397A (zh) | 2020-04-17 |
CN111026397B CN111026397B (zh) | 2022-12-20 |
Family
ID=70200128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911006888.9A Active CN111026397B (zh) | 2019-10-22 | 2019-10-22 | 一种rpm包分布式编译方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111026397B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857730A (zh) * | 2020-07-24 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种操作系统编译的方法和设备 |
CN113127203A (zh) * | 2021-04-25 | 2021-07-16 | 华南理工大学 | 面向云边计算的深度学习分布式编译器及构造方法 |
CN113986239A (zh) * | 2021-10-22 | 2022-01-28 | 烽火通信科技股份有限公司 | 分布式编译方法、装置、设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105607903A (zh) * | 2015-12-15 | 2016-05-25 | 国云科技股份有限公司 | 一种部署openstack组件的方法 |
CN105718296A (zh) * | 2016-04-21 | 2016-06-29 | 北京元心科技有限公司 | 编译依赖关系树的生成显示方法及装置 |
CN109542445A (zh) * | 2017-08-01 | 2019-03-29 | 北京京东尚科信息技术有限公司 | 一种Android插件化开发的方法和装置 |
CN109634657A (zh) * | 2018-12-14 | 2019-04-16 | 武汉烽火信息集成技术有限公司 | 一种微服务打包部署方法及系统 |
US10303465B1 (en) * | 2018-02-22 | 2019-05-28 | Allscripts Software, Llc | Computing system for managing software dependencies in a private data store |
CN110032376A (zh) * | 2018-12-13 | 2019-07-19 | 中国电子科技集团公司电子科学研究院 | 基于Docker的自动化软件部署方法及装置 |
-
2019
- 2019-10-22 CN CN201911006888.9A patent/CN111026397B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105607903A (zh) * | 2015-12-15 | 2016-05-25 | 国云科技股份有限公司 | 一种部署openstack组件的方法 |
CN105718296A (zh) * | 2016-04-21 | 2016-06-29 | 北京元心科技有限公司 | 编译依赖关系树的生成显示方法及装置 |
CN109542445A (zh) * | 2017-08-01 | 2019-03-29 | 北京京东尚科信息技术有限公司 | 一种Android插件化开发的方法和装置 |
US10303465B1 (en) * | 2018-02-22 | 2019-05-28 | Allscripts Software, Llc | Computing system for managing software dependencies in a private data store |
CN110032376A (zh) * | 2018-12-13 | 2019-07-19 | 中国电子科技集团公司电子科学研究院 | 基于Docker的自动化软件部署方法及装置 |
CN109634657A (zh) * | 2018-12-14 | 2019-04-16 | 武汉烽火信息集成技术有限公司 | 一种微服务打包部署方法及系统 |
Non-Patent Citations (3)
Title |
---|
CRYSTALEONE: ""Linux源码编译安装"", 《HTTPS://BLOG.51CTO.COM/LINSJ/1753219》 * |
NOSEE: "Linux软件安装管理--RPM与YUM详解", 《HTTPS://SEGMENTFAULT.COM/A/1190000011200461》 * |
杜振华等: "《分布式数据库系统原理与设计》", 31 December 1987, 陕西电子出版社 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857730A (zh) * | 2020-07-24 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种操作系统编译的方法和设备 |
CN111857730B (zh) * | 2020-07-24 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种操作系统编译的方法和设备 |
CN113127203A (zh) * | 2021-04-25 | 2021-07-16 | 华南理工大学 | 面向云边计算的深度学习分布式编译器及构造方法 |
CN113127203B (zh) * | 2021-04-25 | 2022-06-14 | 华南理工大学 | 面向云边计算的深度学习分布式编译器及构造方法 |
CN113986239A (zh) * | 2021-10-22 | 2022-01-28 | 烽火通信科技股份有限公司 | 分布式编译方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111026397B (zh) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111026397B (zh) | 一种rpm包分布式编译方法及装置 | |
CN107145380B (zh) | 虚拟资源编排方法及装置 | |
Pan et al. | Multi-GPU graph analytics | |
CN110162413B (zh) | 事件驱动方法及装置 | |
CN113296792B (zh) | 存储方法、装置、设备、存储介质和系统 | |
US8825750B2 (en) | Application server management system, application server management method, management apparatus, application server and computer program | |
CN104699541A (zh) | 同步数据的方法、装置、数据传输组件及系统 | |
CN104462370A (zh) | 分布式任务调度系统及方法 | |
CN109840251B (zh) | 一种大数据聚合查询方法 | |
JP5730386B2 (ja) | 計算機システム及び並列分散処理方法 | |
CN111124589B (zh) | 一种服务发现系统、方法、装置及设备 | |
CN106790489B (zh) | 并行数据加载方法和系统 | |
CN115858154A (zh) | 一种异构加速方法、设备、系统及存储介质 | |
CN103248636A (zh) | 离线下载的系统及方法 | |
US20120265855A1 (en) | Maximizing data transfer through multiple network devices | |
CN117032885A (zh) | 适于Kubernetes的多核组加速卡的调度方法及系统 | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及系统 | |
US20120265801A1 (en) | Out of order assembling of data packets | |
US10528625B2 (en) | Client cloud synchronizer | |
US8335215B2 (en) | Process data for a data packet | |
US10944846B2 (en) | Distribution schedule creation method and distribution schedule creation apparatus | |
CN112449061B (zh) | 外呼任务分配方法、装置、计算机设备及可读存储介质 | |
CN113254143B (zh) | 虚拟化网络功能网元编排调度方法、装置和系统 | |
CN110677497B (zh) | 一种网络介质分发方法及装置 | |
CN116257423A (zh) | 一种任务处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |