CN105335185B - 红帽源码包管理srpm包的处理方法及装置 - Google Patents

红帽源码包管理srpm包的处理方法及装置 Download PDF

Info

Publication number
CN105335185B
CN105335185B CN201410391809.1A CN201410391809A CN105335185B CN 105335185 B CN105335185 B CN 105335185B CN 201410391809 A CN201410391809 A CN 201410391809A CN 105335185 B CN105335185 B CN 105335185B
Authority
CN
China
Prior art keywords
packet
srpm
rpm
fedora
compiling
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.)
Active
Application number
CN201410391809.1A
Other languages
English (en)
Other versions
CN105335185A (zh
Inventor
凌杰
蔡万伟
程愚
吴松伟
孙章质
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201410391809.1A priority Critical patent/CN105335185B/zh
Publication of CN105335185A publication Critical patent/CN105335185A/zh
Application granted granted Critical
Publication of CN105335185B publication Critical patent/CN105335185B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供一种红帽源码包管理SRPM包的处理方法及装置,包括:获取第一SRPM包;通过红帽包管理RPM命令计算第一SRPM包的编译依赖信息;根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与第一RPM包存在依赖关系的第二SRPM包;判断第二SRPM包是否已存在于Fedora发行版的SRPM包集合中,如否,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合。采用本发明实施例提供的技术方案,可在MIPS平台上编译Fedora发行版时解决由于依赖不完全而无法编译的问题,从而可在MIPS平台上实现Fedora发行版的自动化编译。

Description

红帽源码包管理SRPM包的处理方法及装置
技术领域
本发明涉及计算机技术,尤其涉及一种红帽源码包管理SRPM包的处理方法及装置。
背景技术
Fedora是一个知名的Linux发行版,是一款由全球社区爱好者构建的面向日常应用的快速、稳定、强大的操作系统。它允许任何人自由地使用、修改和重发布。
Fedora操作系统由数量庞大的红帽源码包管理(Source RedHat PackageManager,简称SRPM)包组成,这些SRPM包之间存在着依赖关系,即某一SRPM包需要在另一个或另一些SRPM包编译完成之后才能编译。目前能运行的体系结构包括x86(即i386-i686)、进阶精简指令集机器(Advanced RISC Machine,简称ARM)、PowerPC等。然而,在无内部互锁流水级(Microprocessor Without Interlocked Piped Stages,简称MIPS)平台上编译Fedora发行版时,会出现由于SRPM包的依赖不完全,导致无法编译Fedora软件包的问题,从而无法完成Fedora发行版在MIPS平台的自动化编译。
发明内容
本发明提供一种红帽源码包管理SRPM包的处理方法及装置,用以解决现有技术在MIPS平台上编译Fedora发行版时,无法编译Fedora软件包的问题。
本发明的第一方面,提供一种SRPM包的处理方法,包括:
获取第一SRPM包,所述第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;
通过红帽包管理RPM命令计算所述第一SRPM包的编译依赖信息,所述编译依赖信息包括与所述第一SRPM包存在编译依赖关系的第一RPM包的信息;
根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与所述第一RPM包存在依赖关系的第二SRPM包;
判断所述第二SRPM包是否已存在于所述Fedora发行版的SRPM包集合中,如否,则将所述第二SRPM包下载至所述Fedora发行版的SRPM包集合中,以形成所述Fedora发行版的编译集合。
本发明的第二方面,提供一种红帽源码包管理SRPM包的处理装置,包括:
获取模块,用于获取第一SRPM包,所述第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;
第一计算模块,用于通过红帽包管理RPM命令计算所述获取模块获取的第一SRPM包的编译依赖信息,所述编译依赖信息包括与所述第一SRPM包存在编译依赖关系的第一RPM包的信息;
第二计算模块,用于根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与所述获取模块获取的第一RPM包存在依赖关系的第二SRPM包;
判断模块,用于判断所述第二计算模块计算的第二SRPM包是否已存在于所述Fedora发行版的SRPM包集合中,如否,则将所述第二SRPM包下载至所述Fedora发行版的SRPM包集合中,以形成所述Fedora发行版的编译集合。
本发明实施例的SRPM包的处理方法,包括:获取第一SRPM包,第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;通过红帽包管理RPM命令计算第一SRPM包的编译依赖信息,编译依赖信息包括与第一SRPM包存在编译依赖关系的第一RPM包的信息;根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与第一RPM包存在依赖关系的第二SRPM包;判断第二SRPM包是否已存在于Fedora发行版的SRPM包集合中,如否,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合。采用本发明实施例提供的技术方案,可以在MIPS平台上编译Fedora发行版时解决由于依赖不完全而无法编译的问题,从而可以在MIPS平台上实现Fedora发行版的自动化编译。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种SRPM包的处理方法的流程图;
图2为本发明实施例二提供的一种SRPM包的处理方法的流程图;
图3为本发明实施例三提供的一种SRPM包的处理装置的结构示意图;
图4为本发明实施例四提供的一种SRPM包的处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的SRPM包的处理方法及装置,适用于在需要运行Fedora发行版的体系结构上,尤其适用于尚未实现Fedora软件包自动批量编译的体系结构上,例如MIPS平台。
Fedora发行版由数量庞大的软件包组成,这些软件的开发者或维护者来自世界各地,而软件包存在着依赖关系,软件的开发者需要订阅它依赖的软件包的相关邮件,掌握其动态,如果它依赖的软件包升级了,且升级对自己的软件的软件包有影响,就会跟着升级。鉴于此,Fedora社区工作者需要协同对软件包进行不断的编译不断的升级,产生对应的发行版。
Koji是Fedora社区的编译系统,它使用mock创建编译软件包时所需要的编译环境。它可以自动化管理编译任务,开发者只需要提交SRPM包,就可以自动将任务分发给编译机,能够管理批量任务,管理多台编译机,以及多台不同架构的编译机。并提供一个简单的web界面,能够查询package,build,可以查看进行中的编译任务状态及日志,取消或重新提交编译任务,启用或停用编译机,设置编译机的负载,能够简单的统计分类信息。
Fedora所有的软件包数量巨大,约有9000多个,但是Fedora发行版只包含其中一部分,约1700多个软件包。制作Fedora发行版的时候,不用编译所有Fedora的软件包,仅仅需要编译该发行版对应的1700多个SRPM包。由于这些源码包存在依赖关系,编译的时候需要按一定顺序进行编译,通过编写一个依赖分析程序来处理。由于Fedora发行版中仅仅包含部分Fedora的源码包,这些源码包的依赖可能不在Fedora发行版所包含的源码包中,而无法提交任务给koji,导致不能自动完成编译。
本发明实施例以MIPS平台为例,并使用koji编译Fedora发行版的软件包,通过对Fedora发行版的SRPM包的处理,解决SRPM包的依赖问题,使得Fedora发行版能够在MIPS平台运行。
图1为本发明实施例一提供的一种SRPM包的处理方法的流程图。如图1所示,该方法包括以下步骤:
步骤S100、获取第一SRPM包,第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包。
步骤S101、通过RPM命令计算第一SRPM包的编译依赖信息,编译依赖信息包括与第一SRPM包存在编译依赖关系的第一RPM包的信息。
步骤S102、根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与第一RPM包存在依赖关系的第二SRPM包。
步骤S103、判断第二SRPM包是否已存在于Fedora发行版的SRPM包集合中,如否,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合。
在实际中,上述各步骤的执行主体可以为处理器,该处理器的架构为MIPS架构。具体在实现时,既可以用软件方式实现,也可以用硬件方式实现,还可以通过软硬件结合的方式实现。
具体的,首先获取第一SRPM包。该第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包,即Fedora发行版的尚未被分析依赖性,即尚未计算其依赖包的软件包。不同Fedora发行版的SRPM包集合中包含的SRPM包不尽相同,在实现时,通常可以采用Fedora发行版列表的形式来表示Fedora发行版的SRPM包集合。相应地,在实际中,可以从Fedora发行版列表中获取第一SRPM包。
由于SRPM包之间存在依赖性,因此,在获取第一SRPM包之后,可以通过Linux中的基本命令RPM命令计算第一SRPM包的编译依赖信息。该编译依赖信息包括与第一SRPM包存在编译依赖关系的第一RPM包的信息,其表示第一SRPM包依赖的软件包的信息,具体可以为该第一SRPM包依赖的包信息或库信息。
在计算出编译依赖信息之后,可以根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与第一RPM包存在依赖关系的第二SRPM包。该第二SRPM包为第一SRPM包依赖的软件包。
上述数据库是根据所有Fedora的RPM包及SRPM包的依赖关系建立的数据库,上述数据库的信息包括RPM包的包名、SRPM包的包名以及RPM包与SRPM包之间的依赖关系信息。
在计算得到第二SRPM包之后,可以判断第二SRPM包是否已存在于Fedora发行版的SRPM包集合中,如是,则表明不需要下载所述第二SRPM包;如否,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合,上述Fedora发行版的编译集合包括原有的Fedora发行版的SRPM包集合,以及步骤103中下载的SRPM包。
在实现时,可以用Linux的shell命令对第一SRPM包进行依赖性分析,提取其编译依赖信息,然后再通过网络在Fedora社区将该编译依赖信息对应的第二SRPM包下载至Fedora发行版的SRPM包集合中即可,形成Fedora发行版的编译集合。当然,之后即可对Fedora发行版的SRPM包集合中的每个SRPM包进行编译,直至Fedora发行版的SRPM包集合中的所有SRPM包都被编译完毕,从而形成Fedora目标发行版。
需要说明的是,上述第一SRPM包和第二SRPM包并不特指一个包。第一SRPM包,即Fedora发行版的SRPM包集合中的SRPM包,是需要进行依赖性分析的所有SRPM包,第二SRPM包是指第一SRPM包依赖的SRPM包,这里的依赖并不一定是第一SRPM包直接依赖,也可以是第一SRPM包依赖的SRPM包所依赖的SRPM包,也就是说,第二SRPM包也有依赖包,此处计算第二SRPM包是指将第一SRPM包的所有第依赖包都计算出来。在具体实施时,可以对所有尚未被分析依赖性的第一SRPM包依次计算出其第二SRPM包,或者是按照某种特定顺序遍历计算第二SRPM包,这里并不做限制。
本实施例提供的方法,在编译Fedora发行版时,不用获取Fedora所有的软件包,仅仅需要获取上述Fedora发行版的SRPM包集合中的SRPM包,也就是Fedora发行版列表对应的SRPM包即可。
本实施例的SRPM包的处理方法,包括:获取第一SRPM包,第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;通过红帽包管理RPM命令计算第一SRPM包的编译依赖信息,编译依赖信息包括与第一SRPM包存在编译依赖关系的第一RPM包的信息;根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与第一RPM包存在依赖关系的第二SRPM包;判断第二SRPM包是否已存在于Fedora发行版的SRPM包集合中,如否,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合。采用本发明实施例提供的技术方案,可以在MIPS平台上编译Fedora发行版的SRPM包,解决了由于依赖不完全而无法编译的问题,从而可以在MIPS平台上实现Fedora发行版的自动化编译。
图2为本发明实施例二提供的一种SRPM包的处理方法的流程图。在实际中,下述各步骤的执行主体可以为处理器,该处理器的架构为MIPS架构。具体在实现时,既可以用软件方式实现,也可以用硬件方式实现,还可以通过软硬件结合的方式实现。
如图2所示,该方法包括以下步骤:
步骤S200、获取第一SRPM包。
该步骤的描述与步骤S100相同,此处不再赘述。
步骤S201、通过RPM命令计算第一SRPM包的编译依赖信息。
具体的,可以用Shell命令grep、sed、awk等对第一SRPM包进行处理,提取与第一SRPM包相关的编译依赖信息,上述编译依赖信息包括与第一SRPM包存在编译依赖关系的第一RPM包的信息,具体可以包括第一RPM包的包名,或者,可以包括第一RPM包的库信息,该库信息包括库名和库版本信息;若上述第一RPM包的信息包括库信息,则在步骤S201之后,还需要执行根据该库信息,获取第一RPM包的包名的步骤。具体的,可以根据该库信息,从由Fedora可运行版本的所有RPM包创建的数据库中获取第一RPM包的包名。
提取出编译依赖信息后,可以将其用分隔符隔开,以方便区分。
步骤S202、根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与第一RPM包存在依赖关系的第二SRPM包。
该步骤的描述与步骤S102相同,此处不再赘述。
此外,上述数据库是根据所有Fedora的RPM包及SRPM包的依赖关系建立的数据库,数据库的信息包括RPM包的包名、SRPM包的包名以及RPM包与SRPM包之间的依赖关系信息。
具体的,该数据库的实现可以是,在另一台运行Fedora可运行版本,例如某一Fedora官方支持版本的系统的处理器上,把所有的Fedora二进制RPM包下载下来,并用这些RPM包创建本地仓库,即上述数据库。在根据第一RPM包的库信息确定其包名时,可以使用yum命令,并筛选出该命令处理的结果,从中提取第一RPM包的包名的字段,得到其包名。
步骤S203、判断第二SRPM包是否在Fedora发行版的SRPM包集合中。
具体的,如实施例一,Fedora发行版的SRPM包集合中存储有需要进行依赖性分析的第一SRPM包,由于第一SRPM包的依赖包即第二SRPM包可能在该集合中,因此,可以先判断第二SRPM包是否在Fedora发行版的SRPM包集合中。
步骤S204、若第二SRPM包不在Fedora发行版的SRPM包集合中,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合。
具体的,若第二SRPM包不在Fedora发行版的SRPM包集合中,则可以通过网络在Fedora社区下载第二SRPM包,并将第二SRPM包加入Fedora发行版的SRPM包集合中,以便于对该第二SRPM包进行依赖性分析,即计算其依赖包。
根据步骤S102的描述可知,第一SRPM包和第二SRPM包并非特指一个包,在实际执行时,可选的,可以先从Fedora发行版的SRPM包集合中获取一个第一SRPM包,然后对其进行依赖性分析,即计算其第二SRPM包,若该些第二SRPM包不在Fedora发行版的SRPM包集合中,则下载该些第二SRPM包并将其放在Fedora发行版的SRPM包集合中的软件包的最后,然后再继续处理下一个第一SRPM包,若该些第二SRPM包在Fedora发行版的SRPM包集合中,则检查该些SRPM包是否是列表中最后一个SRPM包,若不是则继续处理下一个第一SRPM包,反之则结束,如此便可将所有SRPM包的依赖性都分析完毕,得到所有SRPM包的依赖包,从而形成Fedora发行版的编译集合。
步骤S205、对Fedora发行版的编译集合中的每个SRPM包进行编译,直至编译集合中的所有SRPM包都被编译完毕。
在实际中,可以将Fedora发行版的编译集合中的每个SRPM包都提交给Koji系统进行编译。
举例来说,对于源码包A(SRPM包)可以计算得到有依赖关系的二进制RPM包,如B、C、D,根据数据库中的依赖关系,计算二进制包B、C、D对应的第二源码包,即上述第二SRPM包,可能是一个或多个,例如包括源码包E或F等;判断第二源码包是否在Fedora发行版的SRPM包集合中,如否,则下载到上述Fedora发行版的编译集合,即SRPM包集合中,之后再将处理完成后的Fedora发行版的编译集合中的每个SRPM包都交给Koji系统编译,直至编译集合中的所有SRPM包都被编译完毕。
需要说明的是,由于SRPM包具有依赖性,因此,可选的,在将Fedora发行版的SRPM包提交给Koji系统进行编译之前,还包括:对SRPM包进行依赖关系检查,判断该SRPM包所依赖的所有RPM包是否可用,如果是,则将该SRPM包提交给Koji系统进行编译,并在Fedora发行版的编译集合中删除该SRPM包,即在Fedora发行版列表中删除,否则,跳过该SRPM包,继续处理下一个SRPM包,直到Fedora发行版的编译集合中的SRPM包都被编译完毕。具体地,可以通过依赖检查程序进行处理,将依赖关系已经可用的SRPM包提交给Koji系统进行编译。
在具体实现时,可以以一定的顺序,如从第一个SRPM包开始,先用检查其所依赖的包是否都已经被提交给编译系统,如果是,则将该包也提交给编译系统,如果不是,则继续检查下一个包,通过这样循环处理,即可保证Fedora发行版的编译集合中的每个SRPM包都被成功编译。
本实施例的SRPM包的处理方法,包括:获取第一SRPM包,第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;通过红帽包管理RPM命令计算第一SRPM包的编译依赖信息,编译依赖信息包括与第一SRPM包存在编译依赖关系的第一RPM包的信息;根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与第一RPM包存在依赖关系的第二SRPM包;判断第二SRPM包是否已存在于Fedora发行版的SRPM包集合中,如否,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合。采用本发明实施例提供的技术方案,可以在MIPS平台上编译Fedora发行版的SRPM包,解决由于依赖不完全而无法编译的问题,从而可以在MIPS平台上实现Fedora发行版的自动化编译。
图3为本发明实施例三提供的一种SRPM包的处理装置的结构示意图。本实施例的处理装置用于实现实施例一和实施例二的SRPM包的处理方法。如图3所示,该SRPM包的处理装置1包括:获取模块10、第一计算模块11、第二计算模块12和判断模块13。
具体的,获取模块10用于获取第一SRPM包,第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;第一计算模块11用于通过红帽包管理RPM命令计算获取模块10获取的第一SRPM包的编译依赖信息,编译依赖信息包括与第一SRPM包存在编译依赖关系的第一RPM包的信息;第二计算模块12用于根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与获取模块10获取的第一RPM包存在依赖关系的第二SRPM包;判断模块13用于判断第二计算模块12计算的第二SRPM包是否已存在于Fedora发行版的SRPM包集合中,如否,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合。
进一步地,第一RPM包的信息包括第一RPM包的包名;或者
第一RPM包的信息包括第一RPM包的库信息;库信息包括库名和库版本信息;获取模块10在第一计算模块11计算得到第一SRPM包的编译依赖信息之后,还用于:根据第一RPM包的库信息,获取第一RPM包的包名。
更进一步地,数据库是根据所有Fedora的RPM包及SRPM包的依赖关系建立的数据库,数据库的信息包括RPM包的包名、SRPM包的包名以及RPM包与SRPM包之间的依赖关系信息。
本实施例提供的SRPM包的处理装置1,包括:获取模块10用于获取第一SRPM包,第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;第一计算模块11用于通过红帽包管理RPM命令计算获取模块10获取的第一SRPM包的编译依赖信息,编译依赖信息包括与第一SRPM包存在编译依赖关系的第一RPM包的信息;第二计算模块12用于根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与获取模块10获取的第一RPM包存在依赖关系的第二SRPM包;判断模块13用于判断第二计算模块12计算的第二SRPM包是否已存在于Fedora发行版的SRPM包集合中,如否,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合。采用本发明实施例提供的技术方案,可以在MIPS平台上编译Fedora发行版的SRPM包,解决由于依赖不完全而无法编译的问题,从而可以在MIPS平台上实现Fedora发行版的自动化编译。
图4为本发明实施例四提供的一种SRPM包的处理装置的结构示意图。本实施例的处理器用于实现实施例一和实施例二的SRPM包的处理方法。如图4所示,该SRPM包的处理装置2包括:获取模块10、第一计算模块11、第二计算模块12、判断模块13和编译模块20。其中,获取模块10、第一计算模块11、第二计算模块12和判断模块13与上一实施例中的描述相同,此处不再赘述。
具体的,编译模块20用于对所述Fedora发行版的编译集合中的每个SRPM包进行编译,直至所述编译集合中的所有SRPM包都被编译完毕。
本实施例提供的SRPM包的处理装置2,包括:获取模块10用于获取第一SRPM包,第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;第一计算模块11用于通过红帽包管理RPM命令计算获取模块10获取的第一SRPM包的编译依赖信息,编译依赖信息包括与第一SRPM包存在编译依赖关系的第一RPM包的信息;第二计算模块12用于根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与获取模块10获取的第一RPM包存在依赖关系的第二SRPM包;判断模块13用于判断第二计算模块12计算的第二SRPM包是否已存在于Fedora发行版的SRPM包集合中,如否,则将第二SRPM包下载至Fedora发行版的SRPM包集合中,以形成Fedora发行版的编译集合。采用本发明实施例提供的技术方案,可以在MIPS平台上编译Fedora发行版的SRPM包,解决由于依赖不完全而无法编译的问题,从而可以在MIPS平台上实现Fedora发行版的自动化编译。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种红帽源码包管理SRPM包的处理方法,其特征在于,应用于MIPS平台,包括:
获取第一SRPM包,所述第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;
通过红帽包管理RPM命令计算所述第一SRPM包的编译依赖信息,所述编译依赖信息包括与所述第一SRPM包存在编译依赖关系的第一RPM包的信息;
根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与所述第一RPM包存在依赖关系的第二SRPM包;
判断所述第二SRPM包是否已存在于所述Fedora发行版的SRPM包集合中,如否,则将所述第二SRPM包下载至所述Fedora发行版的SRPM包集合中,以形成所述Fedora发行版的编译集合。
2.根据权利要求1所述的方法,其特征在于,所述第一RPM包的信息包括所述第一RPM包的包名;或者
所述第一RPM包的信息包括所述第一RPM包的库信息;所述库信息包括库名和库版本信息;
在所述通过红帽包管理RPM命令计算所述第一SRPM包的编译依赖信息之后,所述方法还包括:
根据所述第一RPM包的库信息,获取所述第一RPM包的包名。
3.根据权利要求1所述的方法,其特征在于,所述数据库是根据所有Fedora的RPM包及SRPM包的依赖关系建立的数据库,所述数据库的信息包括所述RPM包的包名、所述SRPM包的包名以及所述RPM包与SRPM包之间的依赖关系信息。
4.根据权利要求1所述的方法,其特征在于,在所述形成所述Fedora发行版的编译集合之后,还包括:
对所述Fedora发行版的编译集合中的每个SRPM包进行编译,直至所述编译集合中的所有SRPM包都被编译完毕。
5.一种红帽源码包管理SRPM包的处理装置,其特征在于,应用于MIPS平台,包括:
获取模块,用于获取第一SRPM包,所述第一SRPM包为Fedora发行版的SRPM包集合中的SRPM包;
第一计算模块,用于通过红帽包管理RPM命令计算所述获取模块获取的第一SRPM包的编译依赖信息,所述编译依赖信息包括与所述第一SRPM包存在编译依赖关系的第一RPM包的信息;
第二计算模块,用于根据数据库中RPM包与SRPM包之间的依赖关系信息,计算得到与所述获取模块获取的第一RPM包存在依赖关系的第二SRPM包;
判断模块,用于判断所述第二计算模块计算的第二SRPM包是否已存在于所述Fedora发行版的SRPM包集合中,如否,则将所述第二SRPM包下载至所述Fedora发行版的SRPM包集合中,以形成所述Fedora发行版的编译集合。
6.根据权利要求5所述的处理装置,其特征在于,
所述第一RPM包的信息包括所述第一RPM包的包名;或者
所述第一RPM包的信息包括所述第一RPM包的库信息;所述库信息包括库名和库版本信息;
所述获取模块在所述第一计算模块计算得到所述第一SRPM包的编译依赖信息之后,还用于:
根据所述第一RPM包的库信息,获取所述第一RPM包的包名。
7.根据权利要求6所述的处理装置,其特征在于,所述数据库是根据所有Fedora的RPM包及SRPM包的依赖关系建立的数据库,所述数据库的信息包括所述RPM包的包名、所述SRPM包的包名以及所述RPM包与SRPM包之间的依赖关系信息。
8.根据权利要求7所述的处理装置,其特征在于,所述处理装置还包括:
编译模块,用于对所述Fedora发行版的编译集合中的每个SRPM包进行编译,直至所述编译集合中的所有SRPM包都被编译完毕。
CN201410391809.1A 2014-08-11 2014-08-11 红帽源码包管理srpm包的处理方法及装置 Active CN105335185B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410391809.1A CN105335185B (zh) 2014-08-11 2014-08-11 红帽源码包管理srpm包的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410391809.1A CN105335185B (zh) 2014-08-11 2014-08-11 红帽源码包管理srpm包的处理方法及装置

Publications (2)

Publication Number Publication Date
CN105335185A CN105335185A (zh) 2016-02-17
CN105335185B true CN105335185B (zh) 2018-11-20

Family

ID=55285746

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410391809.1A Active CN105335185B (zh) 2014-08-11 2014-08-11 红帽源码包管理srpm包的处理方法及装置

Country Status (1)

Country Link
CN (1) CN105335185B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228229B (zh) * 2016-12-19 2021-04-13 深圳业拓讯通信科技有限公司 一种Maven依赖的管理方法以及系统
CN111857730B (zh) * 2020-07-24 2023-01-06 苏州浪潮智能科技有限公司 一种操作系统编译的方法和设备
CN113721918B (zh) * 2021-08-06 2023-08-04 苏州浪潮智能科技有限公司 一种基于koji进行编译和软件源制作的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530148A (zh) * 2013-09-18 2014-01-22 国云科技股份有限公司 一种大型Linux软件包的发布方法
CN103645888A (zh) * 2013-10-25 2014-03-19 普华基础软件股份有限公司 一种自动构建操作系统的系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9235410B2 (en) * 2012-06-05 2016-01-12 Red Hat, Inc. Tracking software package dependencies using a graph model

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530148A (zh) * 2013-09-18 2014-01-22 国云科技股份有限公司 一种大型Linux软件包的发布方法
CN103645888A (zh) * 2013-10-25 2014-03-19 普华基础软件股份有限公司 一种自动构建操作系统的系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RPM包的管理;佚名;《http://edsionte.com/techblog/archives/4110》;20120901;第1页 *

Also Published As

Publication number Publication date
CN105335185A (zh) 2016-02-17

Similar Documents

Publication Publication Date Title
CN108415795B (zh) 一种容器Dockerfile、容器镜像快速生成方法及系统
CN102725733B (zh) 在平台之间移植虚拟机映像
US9823909B1 (en) Program code conversion for cross-platform compatibility
CN106406960B (zh) 一种linux环境中快速部署软件的方法
US8495614B2 (en) Mechanism for dynamically generating spec files for software package managers
CN105378689B (zh) 用于统一可扩展固件接口(uefi)驱动器和协议的方法和装置
CN109871213A (zh) 基于国产平台的OpenStack容器化系统及方法
CN106201615A (zh) 利用成功的问题解决的应用兼容性
CN108156003A (zh) 一种应用升级方法及终端、服务器、系统
US10248409B1 (en) Limiting the effects of source code patches on corresponding native-code patches
CN105335185B (zh) 红帽源码包管理srpm包的处理方法及装置
CN108595187A (zh) 安卓安装包集成软件开发工具包的法、装置及存储介质
US20160117160A1 (en) Preparing installations and updates for software systems
CN107291447B (zh) 一种自动生成并发布sdk代码的方法
CN112711411A (zh) 一种基于Kubernetes及docker的CI/CD流水线系统
CN106484452B (zh) 一种软件平台的统一配置管理方法和装置
CN114610318A (zh) 安卓应用程序的打包方法、装置、设备及存储介质
CN110990051B (zh) 软件包依赖关系的维护方法、装置、介质和设备
CN107729034A (zh) 一种软件持续集成方法及其装置
CN109933325A (zh) 一种dex文件构建方法、装置及系统
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
CN113342323B (zh) 软件在线开发的方法及装置
CN116069354A (zh) 应用程序的升级方法、装置、设备及存储介质
JP5906609B2 (ja) デバッグ支援プログラム、デバッグ支援方法及びデバッグ支援システム
US20210272023A1 (en) Information processing system and information processing method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.

CP01 Change in the name or title of a patent holder